資源簡(jiǎn)介
對(duì)于背包問題,如果使用傳統(tǒng)的遺傳算法求解會(huì)發(fā)現(xiàn)最優(yōu)解很容易得出局部最優(yōu)解,此時(shí)若在遺傳算法中加入貪婪算子會(huì)使得算法每次都能得到全局最優(yōu)解,該代碼實(shí)現(xiàn)了貪婪遺傳算法。
代碼片段和文件信息
function?[?goods?money?sumV?]?=?bag_gene(?bagV?goodV?goodC?iter?)
%bag_gene.m
%???For?solving?problem?of?bag?by?genetic?and?greedy?algorithm.
%???[?goods?money?]?=?bag_gene(?bagV?goodV?goodC?iter?)
%???bagV?:?size?of?bag
%???goodV?:?size?of?everything
%???goodC?:?value?of?everything
tic;
CpV?=?goodC?./?goodV;?%單位容量的價(jià)值
[m?n]?=?size(goodV);
%step1?初始化種群
N?=?100;?%種群規(guī)模
ind?=?zeros(N?n);
for?i?=?1:N
????t?=?round(rand(1n));
????while?goodV?*?(t‘)?>?bagV
????????t?=?round(rand(1n));
????end
????ind(i:)?=?t;????%隨機(jī)初始化N個(gè)種群個(gè)體
end
%進(jìn)化iter代
for?count?=?1:iter
????
fit?=?zeros(1N);?%N個(gè)個(gè)體的適應(yīng)度值
%step2?計(jì)算個(gè)體適應(yīng)度值?(利用目標(biāo)函數(shù))
for?j?=?1:N
????%fit(j)?=?goodC?*?x‘
????fit(j)?=?goodC?*?ind(j?:)‘;
end
%step3?通過輪盤賭選擇N個(gè)個(gè)體放入交叉池
fit_num?=?0;
for?j?=?1:N
????fit_nu
評(píng)論
共有 條評(píng)論