双层规划模型的遗传算法求解的Matlab源码文档格式.docx
- 文档编号:13007272
- 上传时间:2022-10-02
- 格式:DOCX
- 页数:6
- 大小:9.62KB
双层规划模型的遗传算法求解的Matlab源码文档格式.docx
《双层规划模型的遗传算法求解的Matlab源码文档格式.docx》由会员分享,可在线阅读,更多相关《双层规划模型的遗传算法求解的Matlab源码文档格式.docx(6页珍藏版)》请在冰豆网上搜索。
%xbest 下层模型的最优决策变量
%BESTX K×
1细胞结构,每一个元素是M×
1向量,记录每一代的最优个体
%BESTY K×
1矩阵,记录每一代的最优个体的评价函数值
%ALLX K×
N矩阵,记录全部个体
%ALLY K×
N矩阵,记录全部个体的评价函数值
%%第一步:
种群初始化,确保满足约束的初始化
n=length(C0);
%决策变量的个数
%种群初始化,每一行是一个样本
farm=zeros(NU,n);
fori=1:
NU
Ta=randperm(n);
Tb=unidrnd(n-1)+1;
farm(i,sort(Ta(p>
GT=farm(i,:
);
GT=JZU(GT,V,Q);
farm(i,:
)=GT;
end
%输出变量初始化
ALLX=cell(KU,1);
%细胞结构,每一个元素是N×
n矩阵,记录每一代的个体
ALLY=zeros(KU,NU);
%K×
N矩阵,记录每一代评价函数值
BESTX=cell(KU,1);
%细胞结构,每一个元素是1×
n向量,记录每一代的最优个体
BESTY=zeros(KU,1);
k=1;
%迭代计数器初始化
%%第二步:
迭代过程
whilek<
=KU
%%以下是交叉过程
newfarm=zeros(2*NU,n);
Ser=randperm(NU);
%两两随机配对的配对表AA=farm(Ser
(1),:
BB=farm(Ser
(2),:
P0=unidrnd(n-1);
aa=[AA(p>
产生子代a
bb=[BB(p>
产生子代bifsum(aa)<
2
Tb=unidrnd(n-1)+1;
aa=zeros(1,n);
aa(1,sort(Ta(p>
end
ifsum(bb)<
2Ta=randperm(n);
bb=zeros(1,n);
bb(1,sort(Ta(p>
endaa=JZU(aa,V,Q);
bb=JZU(bb,V,Q);
newfarm(2*NU-1,:
)=aa;
%加入子代种群newfarm(2*NU,:
)=bb;
fori=1:
(NU-1)AA=farm(Ser(i),:
BB=farm(Ser(i+1),:
P0=unidrnd(n-1);
aa=[AA(p>
ifsum(aa)<
aa=zeros(1,n);
bb(1,sort(Ta(p>
endaa=JZU(aa,V,Q);
newfarm(2*i-1,:
newfarm(2*i,:
endFARM=[farm;
newfarm];
%%选择复制SER=randperm(3*NU);
FITNESS=zeros(1,3*NU);
fitness=zeros(1,NU);
(3*NU)
u=FARM(i,:
[xbest,BESTXx,BESTYy,ALLXx,ALLYy]=GAD(u,KD,ND,PmD,V,Q,R,m,t,p0,CF);
%调用
下层遗传
算法得到x
x=xbest;
FITNESS(i)=OBJU(x,u,Alpha,Beta,C0,Q0,h,a,b,d,Q,Cr,m,t);
NUf1=FITNESS(SER(3*i-2));
f2=FITNESS(SER(3*i-1));
f3=FITNESS(SER(3*i));
iff1<
=f2&
&
f1<
=f3farm(i,:
)=FARM(SER(3*i-2),:
fitness(i)=FITNESS(SER(3*i-2));
elseiff2<
=f1&
f2<
=f3
)=FARM(SER(3*i-1),:
fitness(i)=FITNESS(SER(3*i-1));
else
)=FARM(SER(3*i),:
fitness(i)=FITNESS(SER(3*i));
%%记录最佳个体和收敛曲线
X=farm;
Y=fitness;
ALLX{k}=X;
ALLY(k,:
)=Y;
minY=min(Y);
pos=find(Y==minY);
BESTX{k}=X(pos
(1),:
BESTY(k)=minY;
%%变异
ifPmU>
rand&
pos
(1)~=iTa=randperm(n);
BB=zeros(1,n);
BB(1,sort(Ta(p>
BB=JZU(BB,V,Q);
)=BB;
enddisp(k);
k=k+1;
%%绘图BESTY2=BESTY;
BESTX2=BESTX;
fork=1:
KUTempY=BESTY(p>
minTempY=min(TempY);
posY=find(TempY==minTempY);
BESTY2(k)=minTempY;
BESTX2{k}=BESTX{posY
(1)};
endBESTY=BESTY2;
BESTX=BESTX2;
plot(BESTY,'
-ko'
'
MarkerEdgeColor'
k'
MarkerFaceColor'
MarkerSize'
2)ylabel('
函数值'
)
xlabel('
迭代次数'
gridon
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 双层 规划 模型 遗传 算法 求解 Matlab 源码
![提示](https://static.bdocx.com/images/bang_tan.gif)