资源描述:
《双层规划模型的遗传算法求解的matlab源码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、双层规划模型的遗传算法求解的Matlab源码双层规划模型的遗传算法求解的Matlab源码function[BESTX,BESTY,ALLX,ALLY]=GAU(KU,KD,NU,ND,PmU,PmD,V,Q,R,m,t,p0,CF,Alpha,Beta,C0,Q0,h,a,b,d,Cr)%GreenSim团队原创作品,转载请注明%Email:greensim@163.com%GreenSim团队主页:http://blog.sina.com.cn/greensim%[color=red]欢迎访问GreenSim——算法仿真团队→[url=http://
2、blog.sina.com.cn/greensim]http://blog.sina.com.cn/greensim[/url][/color]%%输入参数列表%KU 上层迭代次数%KD 下层迭代次数%NU 上层种群规模,要求是偶数%ND 下层种群规模,要求是偶数%PmU 上层变异概率%PmD 下层变异概率%其余参数均为模型参数%%输出参数列表%xbest 下层模型的最优决策变量%BESTX K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体%BESTY K×1矩阵,记录每一
3、代的最优个体的评价函数值%ALLX K×1细胞结构,每一个元素是M×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(1:Tb)))=1; GT=farm(i,:); GT=JZU(GT,V,Q); farm(i,:)=GT;end%
4、输出变量初始化ALLX=cell(KU,1);%细胞结构,每一个元素是N×n矩阵,记录每一代的个体ALLY=zeros(KU,NU);%K×N矩阵,记录每一代评价函数值BESTX=cell(KU,1);%细胞结构,每一个元素是1×n向量,记录每一代的最优个体BESTY=zeros(KU,1);%K×1矩阵,记录每一代的最优个体的评价函数值k=1;%迭代计数器初始化%%第二步:迭代过程whilek<=KU%%以下是交叉过程 newfarm=zeros(2*NU,n); Ser=randperm(NU);%两两随机配对的配对表 AA=farm(
5、Ser(1),:); BB=farm(Ser(2),:); P0=unidrnd(n-1); aa=[AA(1:P0),BB((P0+1):end)];%产生子代a bb=[BB(1:P0),AA((P0+1):end)];%产生子代b ifsum(aa)<2 Ta=randperm(n); Tb=unidrnd(n-1)+1; aa=zeros(1,n); aa(1,sort(Ta(1:Tb)))=1; end ifsum(bb)<2 Ta=randperm(n)
6、; Tb=unidrnd(n-1)+1; bb=zeros(1,n); bb(1,sort(Ta(1:Tb)))=1; end aa=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
7、(1:P0),BB((P0+1):end)]; bb=[BB(1:P0),AA((P0+1):end)]; ifsum(aa)<2 Ta=randperm(n); Tb=unidrnd(n-1)+1; aa=zeros(1,n); aa(1,sort(Ta(1:Tb)))=1; end ifsum(bb)<2 Ta=randperm(n); Tb=unidrnd(n-1)+1;
8、 bb=zeros(1,n); bb(1,sort(Ta(1:T