【优化选址】基于遗传算法求解多城市多应急物流中心选址问题含Matlab源码

1 简介

遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国 Michigan 大学 J.Holland 教授于 1975 年首先提出来的。在出版了颇有影响的专著《Adaptation in Natural and Artificial Systems》之后,GA 这个名称才逐渐为人所知 [1]。算法的整个运算过程就是从任一初始的群体出发,通过随机选择、交叉和变异等遗传算子,使群体一代一代地进行到空间中最好的区域,直至达到最优点。 1.遗传算法的基本要素 

(1)确定编码方案 GA 在进行搜索前,先要将解空间的数据表示成为遗传空间的基因型串接数据,这些数据的不同组合就构成了不同的点,现阶段编码方式主要有:二进制编码、格雷码和浮点数编码。 

(2)确定适应度函数 遗传算法在进化搜索中基本不利用外部信息,仅以种群中每个个体的适应度函数值(fitness function)为依据进行搜索,因此适应度函数的选取至关重要。适应度函数将表明个体或解的优劣性,对于不同的问题,适应度函数的定义方式也不同。 在 GA 的算法中,适应度函数的确定常常运用两种方法:① 将目标函数直接作为适应度函数 ② 将待求解的的目标函数做适当处理后再转化为适应度函数。 

(3)确定遗传算子 在 GA 中,遗传算子主要包括:选择、交叉、变异三类算子。 ① 选择算子 选择的目的是为了从当前种群中,选出优良的个体,使它们有机会作为父带的下一代繁衍子孙。常用的选择算子的方案有:比例选择、轮盘式选择、确定式采样选择、无放回随机选择、无放回余数随机选择、排序选择、随机联赛选择等。 ② 交叉算子 交叉算子用于组合产生新的个体,它要求对个体编码串中的优良模式不能有太多的破坏并且能有效的产生出一些较好的新个体模式,以便在解空间中能进行有效搜索,且保证对有效模式的破坏概率较小。最常用的交叉方案有:单点交叉、双点交叉、多点交叉、均匀交叉和算术交叉等。 ③ 变异算子 在生物的遗传和进化过程中,生物的某些基因偶尔会发生变异,从而产生出新的个体,虽然其概率比较小,但对新物种的产生也是一个不可忽视的因素。模仿生物遗传和进化过程中的这种变异现象,在遗传算法中引入了变异算子来产生新的个体。变异算子的主要方式有:基本位变异、均匀变异、边界变异、非均匀变异、高斯变异等。 

(4)确定遗传算法运行参数 在遗传算法的运行中,有几个参数对遗传算法的运行有很大影响。它们分别是:个体编码串长度 L、群体大小 M、交叉概率 PC、变异概率 Pm、以及终止代数 T。 2.遗传算法的步骤 遗传算法解决问题的具体步骤如下: 

Step 1 确定编码,编码是遗传算法中的主要步骤,是用恰当的遗传形式来表示问题的可行解;

Step 2 确定适应度函数,根据实际问题选择适应函数;

Step 3 选择控制参数:控制参数主要包括种群规模,算法执行的最大迭代次数,执行不同遗传操作的概率及其他一些辅助性控制参数; 

Step 4 遗传算子的设计:主要包括选择、交叉和变异以及其他高等遗传操作; 

Step 5 确定算法的终止准则; 

Step 6 确定解码方式,根据该为问题最终所需导出的结果形式,确定解码方案; 

Step 7 统计整体结果,导出最终所求结果; 

Step 8 上机编程,完成上述步骤,并通过多次迭代得到可靠的最优解。 具体算法运算流程图如图所示。

2 部分代码

function f=fit(popus,center,requirement,cost,P)%求适应度%c1固定成本c1=zeros(1,size(popus,2));for i=1:size(popus,2)     a1=popus{i};     c1(i)=length(unique(a1))*cost.construction;end%c2运输成本c2=zeros(1,size(popus,2));for i=1:size(popus,2)     a2=popus{i};     for j=1:size(a2,2)     C2(i,j)=requirement.need(j)*cost.construction*sqrt((center.Station(a2(j),2)-requirement.Station(j,2))^2+(center.Station(a2(j),1)-requirement.Station(j,1))^2);     end     c2(i)=sum(C2(i,:));end%c3超出容量惩罚c3=zeros(1,size(popus,2));for i=1:size(popus,2)    a3=popus{i};    Aa=(1:size(a3,2));    ALL=zeros(1,size(center.chubei,2));    pan=zeros(1,size(center.chubei,2));    for j=1:size(center.chubei,2)        ch=Aa(a3==j);        ALL(j)=sum(requirement.need(ch));        pan(j)=max(ALL(j)-center.chubei(j),0);    end    c3(i)=sum(pan)*10^10;endf=c1+c2+c3;% f=w1*(c1+c2+c3+c4+c5+c6+c7)+w2*c8;

3 仿真结果

4 参考文献

[1]胡莹. 基于MATLAB遗传算法的物流中心选址问题研究[J]. 中国水运:下半月, 2010(7):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
遗传算法是一种优化算法,可以用于解决复杂的问题,包括投影寻踪模型。投影寻踪模型是一种用于确定对象在二维或三维空间中的位置的算法。它可以通过使用传感器数据和先前的位置估计来推断对象的当前位置。 在基于遗传算法的投影寻踪模型中,遗传算法被用来优化模型的参数,以使其能够更准确地估计对象的位置。这通常涉及定义一个适应度函数,该函数评估模型的性能,并根据适应度函数的值选择和进化模型的参数。通过迭代优化过程,遗传算法可以找到最佳参数组合,从而提高投影寻踪模型的准确性。 当使用基于遗传算法的投影寻踪模型时,首先需要确定问题的目标和约束条件。然后,定义适应度函数来评估每个参数组合的性能。接下来,使用遗传算法进行参数优化,通过生成新的参数组合并选择适应度较高的个体进行繁殖和交叉操作,逐步改进参数组合。最后,通过迭代优化过程,找到最佳的参数组合来实现准确的投影寻踪。 需要注意的是,基于遗传算法的投影寻踪模型需要根据具体的问题进行调整和优化,以适应不同的场景和要求。此外,遗传算法虽然能够找到较优的解决方案,但在处理复杂问题时可能会面临计算复杂性和收敛速度的挑战。因此,在实际应用中需要综合考虑算法的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值