%项目名称:多目标遗传算法求解供应商选择问题
%%
%输出
%最优解ParetoBest
%最优目标值Pareto_Obj
clc;close all;clear;
load Price;load R;k=1;
Sum_Demand=4000;Nmin=2;
%需求总量Sum_Demand
%规定的最少供应商数目Nmin
%计算的权重R
%表1 候选服务供应商的价格情况
%==========================================================================
Pop_num=10;Max_gen=50;Pc=0.7;Pm=0.1;
%种群规模Pop_num
%最大迭代次数Max_gen
%交叉概率Pc
%变异概率Pm
%==========================================================================
tic
MMin=zeros(Max_gen,Nmin);AAvg=zeros(Max_gen,Nmin);MMax=zeros(Max_gen,Nmin);
Obj=[];H=[];T_size=size(Price,1);
Pop=Init_Pop(Price,Sum_Demand,Pop_num,Nmin);
for i=1:Pop_num
[X1,X2]=Decode(Pop(i,:),R,Price,Sum_Demand);
Pop(i,:)=X1;
Obj(i,:)=Evaluation(X1,X2,Price,R);
end
Q_Obj=pareto(Obj,Pop_num);
Q_Obj_num=size(Q_Obj,1);
Q_Obj_pos= findrow(Obj,Q_Obj);
Q=zeros(Q_Obj_num,T_size);
for i=1:Q_Obj_num
Q(i,:)=Pop(Q_Obj_pos(i),:);
end
while k<=Max_gen
[Cross_Pop]=Mating_pool(Pop_num,Pop,Pc,Price,Sum_Demand,Nmin);
[Mut_Pop]=Mutation(Cross_Pop,Price,Pm,Sum_Demand,Nmin);
Y_Pop=[];
Y_Pop=[Pop;Mut_Pop];
Y_Pop_num=size(Y_Pop,1);
Obj1=[];
for i=1:Y_Pop_num
[X1,X2]=Decode(Y_Pop(i,:),R,Price,Sum_Demand);
Y_Pop(i,:)=X1;
Obj1(i,:)=Evaluation(X1,X2,Price,R);
end
%更新外部档案解
Y_Pop=[Q;Y_Pop];
Obj1=[Q_Obj;Obj1];
Y_Pop_num=size(Y_Pop,1);
Q_Obj1=[];
Q_Obj1=pareto(Obj1,Y_Pop_num);
Q_Obj1_num=size(Q_Obj1,1);
Q_Obj1_pos= findrow(Obj1,Q_Obj1);
Q_Obj=[];Q=zeros(Q_Obj1_num,T_size);
Q_Obj=Q_Obj1;
for i=1:Q_Obj1_num
Q(i,:)=Y_Pop(Q_Obj1_pos(i),:);
%外部档案非劣解Q,外部档案非劣解的目标值Q_Obj
end
%======================================================================
%计算最大最小平均值
outfile_Obj=Q_Obj;
outfile=Q;
outfile_num=size(outfile,1);
if outfile_num==1
Min_Q_Obj=outfile_Obj;
Max_Q_Obj=outfile_Obj;
Avg_Q_Obj=outfile_Obj;
else
Min_Q_Obj=min(outfile_Obj);
Max_Q_Obj=max(outfile_Obj);
Avg_Q_Obj=sum(outfile_Obj)/size(outfile_Obj,1);
end
MMin(k,:)=Min_Q_Obj;
MMax(k,:)=Max_Q_Obj;
AAvg(k,:)=Avg_Q_Obj;
%======================================================================
%更新种群
L_Q=Q;
Q_num=size(L_Q,1);
if Q_num<Pop_num
y=Pop_num-Q_num;
for i=1:y
h_Pop=Copy_of_Init_Pop(Price,Sum_Demand,Nmin);
L_Q=[L_Q;h_Pop];
end
Q_Obj_pos=1:Q_num;%%
else
r_num=randperm(Q_num);
r_num(Pop_num+1:end)=[];
Y_Q=L_Q(r_num,:);
L_Q=Y_Q;
Q_Obj_pos=1:Pop_num;%%
end
Pop=L_Q;
k=k+1
end
for i=1:size(Q,1)
[X1,X2]=Decode(Q(i,:),R,Price,Sum_Demand);
Pareto_Best(i,:)=[X1,X2];
Pareto_Obj(i,:)=Evaluation(X1,X2,Price,R);
end
t=toc
x=1:Max_gen;
plot(x,MMin(:,1),'r-');hold on
%plot(x,AAvg(:,1),'b--');hold on
%plot(x,MMax(:,1),'k:');hold on
figure(2)
plot(x,MMin(:,2));hold on
%plot(x,AAvg(:,2));hold on
%plot(x,MMax(:,2));hold on
没有合适的资源?快使用搜索试试~ 我知道了~
多目标遗传算法_供应商选择附matlab代码.zip
共13个文件
m:10个
mat:2个
png:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 45 浏览量
2023-02-08
22:58:59
上传
评论
收藏 8KB ZIP 举报
温馨提示
多目标遗传算法_供应商选择附matlab代码.zip
资源推荐
资源详情
资源评论
收起资源包目录
多目标遗传算法_供应商选择附matlab代码.zip (13个子文件)
Mating_pool.m 948B
pareto.m 1KB
Copy_of_Init_Pop.m 453B
Decode.m 545B
1.png 3KB
GA_SS.m 3KB
Cross.m 477B
Init_Pop.m 530B
R.mat 229B
Evaluation.m 315B
Price.mat 295B
findrow.m 342B
Mutation.m 626B
共 13 条
- 1
资源评论
- asq8812024-04-29超赞的资源,感谢资源主分享,大家一起进步!
天天Matlab科研工作室
- 粉丝: 2w+
- 资源: 7255
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功