• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-01-07
  • 语言: Matlab
  • 标签: matlab  greedy  genetic  

资源简介

对于背包问题,如果使用传统的遗传算法求解会发现最优解很容易得出局部最优解,此时若在遗传算法中加入贪婪算子会使得算法每次都能得到全局最优解,该代码实现了贪婪遗传算法。

资源截图

代码片段和文件信息

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; %单位容量的价值
[m n] = size(goodV);
%step1 初始化种群
N = 100; %种群规模
ind = zeros(N n);
for i = 1:N
    t = round(rand(1n));
    while goodV * (t‘) > bagV
        t = round(rand(1n));
    end
    ind(i:) = t;    %随机初始化N个种群个体
end

%进化iter代
for count = 1:iter
    
fit = zeros(1N); %N个个体的适应度值
%step2 计算个体适应度值 (利用目标函数)
for j = 1:N
    %fit(j) = goodC * x‘
    fit(j) = goodC * ind(j :)‘;
end
%step3 通过轮盘赌选择N个个体放入交叉池
fit_num = 0;
for j = 1:N
    fit_nu

评论

共有 条评论