1 Star 9 Fork 1

User1396529/GA CVRP Optimize - 基于 MATLAB 通过遗传算法实现车辆路径优化问题求解

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
mutation.m 1.89 KB
一键复制 编辑 原始数据 按行查看 历史
User1396529 提交于 2024-05-28 23:16 . 修正代码缩进问题
function new_pop = mutation( ...
pop, pm, numCustomers, numVehicles, demands, capacity)
% MUTATION - 实现整数编码基因的交换变异操作
%
% new_pop = MUTATION( ...
% pop, pm, numCustomers, numVehicles, demands, capacity)
%
% 输入参数
% pop - 种群矩阵,每一行表示一个个体
% pm - 变异概率
% numCustomers - CVRP 问题中顾客节点的数量
% numVehicles - CVRP 问题中运载工具的数量
% demands - CVRP 问题中各个顾客节点的需求量的一维向量
% capacity - CVRP 问题中运载工具的容量限制
%
% 返回参数
% new_pop - 交叉后的新种群矩阵
[num_individuals, num_genes] = size(pop);
new_pop = pop;
for i = 1:num_individuals
for j = 1:num_genes
if rand <= pm % 如果生成的均匀分布随机数小于一个
% 随机选择另一个基因进行交换
swap_idx = randi(num_genes);
% 创建一个临时的试验个体,用 constrict 检验这个个体是否是可行解。
% 限制仅当变异之后的个体是可行解的时候,变异才会发生。
%
% temp - 保存交换的基因点上的数字
% temp_individual - 保存用于测验的临时个体
temp_individual = new_pop(i, :);
temp = temp_individual(j);
temp_individual(j) = temp_individual(swap_idx);
temp_individual(swap_idx) = temp;
if constrict( ...
temp_individual, numCustomers, ...
numVehicles, demands, capacity)
% 执行交换操作
temp = new_pop(i, j);
new_pop(i, j) = new_pop(i, swap_idx);
new_pop(i, swap_idx) = temp;
end
end
end
end
end
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/BOXonline_1396529/GA-CVRP-opt.git
git@gitee.com:BOXonline_1396529/GA-CVRP-opt.git
BOXonline_1396529
GA-CVRP-opt
GA CVRP Optimize - 基于 MATLAB 通过遗传算法实现车辆路径优化问题求解
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385