智能控制课程综合报告学院自动化学院专业控制科学与工程学号学生姓名指导教师2016年6月7日基于免疫优化算法的物流中心选址1、建立模型在物流配送中心选址模型中做如下假设1).配送中心的规模容量总可以满足需求点需求,并由其配送辐射范围内的需求量确定。2).一个需求点仅由一个配送中心供应。3).不考虑工厂到配送中心的运输费用。然后要从n个需求点中找出配送中心,并向需求点配送物品。目标函数是各配送中心到需求点的需求量和距离的乘积之和最小。目标函数如下:2、问题的求解2.1算法的实现步骤:1).产生初始种群。2).对上述群体中各个抗体进行评价。3).形成父代群体。4).判断是否满足条件,是则结束,反之,则继续下一步操作。5).新种群的产生。6).转去执行步骤2。2.2流程图如图1-1:ijijiZdwF图1-1算法流程图2.3初始群体的产生如果记忆库非空,则初始抗体群从记忆库中生成。否则,在可行解空间随机产生初始抗体群。此处采用简单的编码方式。每个选址方案可形成一个长度为P的抗体(P表示配送中心的数量),每个抗体代表被选为配送中心的需求点的序列。如:考虑包含31个需求点的问题,从中选取6个作为配送中心。抗体[2,7,15,21,29,11]代表一个可行解。2.4、解的多样性评价1).抗体与抗原之间的亲和力表示新的目标函数,分母的第二项表示对违反距离约束的解给予惩罚C取比较大的正数。2).抗体与抗体之间的亲和力其反映抗体之间的相似程度,此处借鉴Forrest等人提出的R位连续方法计算抗体之间的亲和力,两个个体有至少R位编码相同则两种抗体近似相同。)0.1min(1F1vvijijijiZCZdwAijijiZdwFvFLksvsv,,S其中k表示抗体v和抗体s之间相同的位数,L为抗体的总长。例如,两个抗体[2,7,15,21,5,11]、[15,8,14,26,5,2]经比较有3个相同则亲和度为0.5。3).抗体浓度4).期望繁殖概率在种群中,每个个体的期望繁殖概率与抗体与抗原之间的亲和力A和抗体浓度共同决定。α是常数,可见个体的适应度越高,则期望繁殖率越大,个体的浓度越大,则期望繁殖率越大。这样就鼓励了高适应度个体,抑制了高浓度个体。2.5免疫操作1).选择:按照轮盘赌机制进行选择操作,个体被选择的概率即为期望繁殖概率。2).交叉:采用单点交叉法进行交叉操作。3).变异:采用随机变异位进行变异操作。3.模型的求解为证明算法的有效性和可行性,采集了31个城市的坐标,每个用户的位置以及物资需求进行仿真。根据配送中心选址模型,按照免疫算法流程对该例求解。参数设置:种群规模:50;记忆库容量:10;迭代次数:100;交叉率:0.5;变异概率:0.4;Nisv,vSN1C其他0S1Sv,sv,sTvvvv-1PCCAA)(多样性评价参数:0.95;4.matlab仿真结果图4-1适应度曲线图4-2选址方案最后,结果选址方案是[5,25,18,9,12,27],如图中所标,可以看出免疫算法有较好的收敛性。5.算法应用展望免疫算法能够增强系统的鲁棒性,从选址的模型上看,免疫算法就是解决了最优花费的一个聚类,因此,希望在后期的研究中能应用在多模式分类问题上。附录:Matlab求解的主程序:%%算法基本参数sizepop=50;%种群规模overbest=10;%记忆库容量MAXGEN=100;%迭代次数pcross=0.5;%交叉概率pmutation=0.4;%变异概率ps=0.95;%多样性评价参数length=6;%配送中心数M=sizepop+overbest;%%step1识别抗原,将种群信息定义为一个结构体individuals=struct('fitness',zeros(1,M),'concentration',zeros(1,M),'excellence',zeros(1,M),'chrom',[]);%%step2产生初始抗体群individuals.chrom=popinit(M,length);trace=[];%记录每代最个体优适应度和平均适应度%%迭代寻优foriii=1:MAXGEN%%step3抗体群多样性评价fori=1:Mindividuals.fitness(i)=fitness(individuals.chrom(i,:));%抗体与抗原亲和度(适应度值)计算individuals.concentration(i)=concentration(i,M,individuals);%抗体浓度计算end%综合亲和度和浓度评价抗体优秀程度,得出繁殖概率individuals.excellence=excellence(individuals,M,ps);%记录当代最佳个体和种群平均适应度[best,index]=min(individuals.fitness);%找出最优适应度bestchrom=individuals.chrom(index,:);%找出最优个体average=mean(individuals.fitness);%计算平均适应度trace=[trace;best,average];%记录%%step4根据excellence,形成父代群,更新记忆库(加入精英保留策略,可由s控制)bestindividuals=bestselect(individuals,M,overbest);%更新记忆库individuals=bestselect(individuals,M,sizepop);%形成父代群%%step5选择,交叉,变异操作,再加入记忆库中抗体,产生新种群individuals=Select(individuals,sizepop);%选择individuals.chrom=Cross(pcross,individuals.chrom,sizepop,length);%交叉individuals.chrom=Mutation(pmutation,individuals.chrom,sizepop,length);%变异individuals=incorporate(individuals,sizepop,bestindividuals,overbest);%加入记忆库中抗体end%%画出免疫算法收敛曲线figure(1)plot(trace(:,1),'r','linewidth',2);holdonplot(trace(:,2),'--','linewidth',2);legend('最优适应度值','平均适应度值')gridontitle('免疫算法收敛曲线','fontsize',12)xlabel('迭代次数','fontsize',12)ylabel('适应度值','fontsize',12)%%画出配送中心选址图%城市坐标city_coordinate=[1304,2312;3639,1315;4177,2244;3712,1399;3488,1535;3326,1556;3238,1229;4196,1044;4312,790;4386,570;3007,1970;2562,1756;2788,1491;2381,1676;1332,695;3715,1678;3918,2179;4061,2370;3780,2212;3676,2578;4029,2838;4263,2931;3429,1908;3507,2376;3394,2643;3439,3201;2935,3240;3140,3550;2545,2357;2778,2826;2370,2975];carge=[20,90,90,60,70,70,40,90,90,70,60,40,40,40,20,80,90,70,100,50,50,50,80,70,80,40,40,60,70,50,30];%找出最近配送点fori=1:31distance(i,:)=dist(city_coordinate(i,:),city_coordinate(bestchrom,:)');end[a,b]=min(distance');index=cell(1,length);fori=1:length%计算各个派送点的地址index{i}=find(b==i);endfigure(2)title('最优规划派送路线')cargox=city_coordinate(bestchrom,1);cargoy=city_coordinate(bestchrom,2);plot(cargox,cargoy,'rs','LineWidth',2,...'MarkerEdgeColor','r',...'MarkerFaceColor','b',...'MarkerSize',20)holdonplot(city_coordinate(:,1),city_coordinate(:,2),'o','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','g',...'MarkerSize',10)gridonfori=1:31x=[city_coordinate(i,1),city_coordinate(bestchrom(b(i)),1)];y=[city_coordinate(i,2),city_coordinate(bestchrom(b(i)),2)];plot(x,y,'c','LineWidth',2);holdonendtitle('物流配送中心选址方案')