遗传算法案例分析及源代码.docxVIP

  • 10
  • 0
  • 约3.19千字
  • 约 5页
  • 2019-10-17 发布于江苏
  • 举报
一.问题描述: 在某一区域内有 n 个客户,拟建一个物流中心,已知客户 j 地址坐标为 ( xi , yi ) 。 确定物流中心的地址坐标 ( x, y) ,使得该物流中心到几个客户之间的距离最短。 假设:简单的用两点之间的距离代替运输距离。 目标函数: min z ( X xi )2 (Y yi )2 约束条件: { 0,1,2,3,4,5,6,7,8} Y { 0,1,2,3,4,5,6,7,8} 假设某一区域内有 5 个客户,其位置坐标如下表所示, 客户坐标及相关需求量 客户 X( km) Y(km) 1 1 5 2 2 8 3 5 1 4 7 6 5 8 3 (1)变量: C:是一个 1*6 数组,每个数组里面是一个 6 位二进制数,它是遗传算法中的染色体。 new_c:每一轮的新变量 c。 first_c: 初始群体矩阵。 sur_value:个体适应值的概率值,为 0-1 之间的数,所有概率值和为 1。 survived:经过选择运算后产生的个体基因型组合。 intersect_c :经过交叉运算后产生的个体基因型组合。 mutation_c :经过变异运算后产生的个体基因型组合。 f:最后计算得到的最大值 (2)程序里面的方程 function out = value_function( ci ) :价值函数(自适应度函数)。 function [ sur_value ] = calc_value( c ) :计算群体中每一个个体的适应度的值 function survived = surviver( sur_value ) :利用概率选择函数 function [ intersect_c ] = intersect( new_c ) :交叉运算 function [ mutation_c ,mutation_value] = mutation( intersect_c ) :变异运算 (1 )遗传算法主程序 %遗传算法的主程序 %初始群体的产生,本例中,群体规模大小取为 6 ,即由 c = rand(6,6); %产生随机群体, c 表示个体变量。  6 个个体组成,每个个体随机产生。 %第一个  6 表示个体个体,第二个  6 表示基因型由  6 位无符号二进制数组成 c(c0.5) = 1; c(c0.5) = 0; %显示初始群体 first_c = c; points = [1,5;2,8;5,1;7,6;8,3]; %目的点 %一轮算法包括选择,交叉,变异,变异完成后产生新的个体,作为子代群体进行下一轮进化。 一共设置 1000 次进化 for n = 1:1000 %设置循环次数 sur_value = calc_value(c,points); survived = surviver(sur_value); new_c = zeros(6,6); for ii =1:6 new_c(ii,:) = c(survived(ii),:); end intersect_c = intersect(new_c); %交叉个体 mutation_c = mutation( intersect_c ); %变异个体,作为子代群体 c = mutation_c; %子代群体作为新一轮的个体,继续选择,交叉,变异 end f=0; for jj=1:6 b = value_function(new_c(jj,:),points); if bf f=b; end end ( 2)适应度函数计算:适应度函数选择为目标函数的倒数 function distance = value_function( ci,points ) %遗传算法的价值函数,同时也可以将此目标函数值作为个体的适应度。 x = 4*ci(1)+2*ci(2)+1*ci(3)+1; y = 4*ci(4)+2*ci(5)+1*ci(6)+1; distance = 0; for ii=1:length(points) distance = distance + ((x-points(ii,1))^(2)+(y-points(ii,2))^(2))^(1/2); end end function [ sur_value ] = calc_value( c,points ) %计算群体中每一个个体的适应度的值 value = zeros(1,6); for ii = 1:6 %对于第 1 到第 6 个个体 value(ii) = 1 / value_function(c(ii,:),points); end sur_value = value ./ sum(value);  %计算每个个体的适应度值 %将适应度值归一化,即每个个 %体被遗

文档评论(0)

1亿VIP精品文档

相关文档