資源簡介
簡單的遺傳算法,計算函數最值. function ga_main() % 遺傳算法程序 % n-- 種群規模% ger-- 迭代次數% pc--- 交叉概率% pm-- 變異概率 % v-- 初始種群(規模為n)% f-- 目標函數值% fit-- 適應度向量 % vx-- 最優適應度值向量% vmfit-- 平均適應度值向量 clear all; close all; clc;%清屏 tic;%計時器開始計時 n=20;ger=100;pc=0.65;pm=0.05;%初始化參數 %以上為經驗值,可以更改。 % 生成初始種群 v=init_population(n,22); %得到初始種群,
代碼片段和文件信息
function?ga_main()
%?遺傳算法程序
%?n--?種群規模%?ger--?迭代次數%?pc---?交叉概率%?pm--?變異概率
%?v--?初始種群(規模為n)%?f--?目標函數值%?fit--?適應度向量
%?vx--?最優適應度值向量%?vmfit--?平均適應度值向量
clear?all;
close?all;
clc;%清屏
tic;%計時器開始計時
n=20;ger=100;pc=0.65;pm=0.05;%初始化參數
%以上為經驗值,可以更改。
%?生成初始種群
v=init_population(n22);?%得到初始種群,22串長,生成20*22的0-1矩陣
[NL]=size(v);???????????%得到初始規模行,列
disp(sprintf(‘Number?of?generations:%d‘ger));
disp(sprintf(‘Population?size:%d‘N));
disp(sprintf(‘Crossover?probability:%.3f‘pc));
disp(sprintf(‘Mutation?probability:%.3f‘pm));?%sprintf可以控制輸出格式
%?待優化問題
xmin=0;xmax=9;??%變量X范圍
f=‘x+10*sin(x.*5)+7*cos(x.*4)‘;
%?計算適應度,并畫出初始種群圖形
x=decode(v(:1:22)xminxmax);%22位二進制換成十進制,%冒號表示對所有行進行操作。
fit=eval(f);%eval轉化成數值型的??%計算適應度
figure(1);%打開第一個窗口
fplot(f[xminxmax]);%隱函數畫圖
grid?on;hold?on;
plot(xfit‘k*‘);%作圖畫初始種群的適應度圖像
title(‘(a)染色體的初始位置‘);%標題
xlabel(‘x‘);ylabel(‘f(x)‘);%標記軸
%?迭代前的初始化
vmfit=[];%平均適應度
vx=[];?%最優適應度
it=1;?%?迭代計數器
%?開始進化
while?it<=ger?%迭代次數?%100代
????%Reproduct
評論
共有 條評論