一:运用MATLAB遗传算法工具箱求解非线性多目标优化问题,烦请高人指点!
将下属两个目标函数分别保存在两个m文件中
function f1=func1(x) %第一目标函数
f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4;
function f2=func2(x) %第二目标函数
f2=x(:,1).*(1-x(:,2))+10;
function GA()
clear;clc;close all
NIND=100; %个体数目
MAXGEN=50; %最大遗传代数
NVAR=2; 埂 %变量个数
PRECI=20; %变量的二进制位数
GGAP=0.9; %代沟
trace1=[];trace2=[];trace3=[]; %性能跟踪
%建立区域描述器
% rep([PRECI],[1,NVAR])
FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])];
Chrom=crtbp(NIND,NVAR*PRECI); %初始种群
v=bs2rv(Chrom,FieldD) ; %初始种群十进制转换
gen=1;
while gen [NIND,N]=size(Chrom); M=fix(NIND/2); ObjV1=func1(v(1:M,:)); %分组后第一目标函数值 FitnV1=ranking(ObjV1); %分配适应度值 SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP); %选择 ObjV2=func2(v(M+1:NIND,:)); %分组后第二目标函数值 FitnV2=ranking(ObjV2); %分配适应度值 SelCh2=select('sus',Chrom(M+1:NIND,:),FitnV2,GGAP); %选择 SelCh=[SelCh1;SelCh......余下全文>> 我给你一个标准遗传算法程序供你参考: 该程序是遗传算法优化BP神经网络函数极值寻优: %% 该代码为基于神经网络遗传算法的系统极值寻优 %% 清空环境变量 clc clear %% 初始化遗传算法参数 %初始化参数 maxgen=100; %进化代数,即迭代次数 sizepop=20; %种群规模 pcross=[0.4]; %交叉概率选择,0和1之间 pmutation=[0.2]; %变异概率选择,0和1之间 lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1 bound=[-5 5;-5 5]; %数据范围 individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体 avgfitness=[]; %每一代种群的平均适应度 bestfitness=[]; %每一代种群的最佳适应度 bestchrom=[]; %适应度最好的染色体 %% 初始化种群计算适应度值 % 初始化种群 for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); %计算适应度 individuals.fitness(i)=fun(x); %染色体的适应度 end %找最好的染色体 [bestfitness bestindex]=min(individuals.fitness); bestchrom=individuals.chrom(bestindex,:); %最好的染色体 avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度 % 记录每一代进化中最好的适应度和平均适应度 trace=[avgfitness bestfitness]; %% 迭代寻优 % 进化开始 for i=1:maxgen i % 选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound); % 计算适应度 for j=1:sizepop x=individuals.chrom(j,:); %解码 individuals.fitness(j)=fun(x); end %找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fit......余下全文>> Matlab遗传算法工具箱帮助文件自带多目标函数优化例子。 将下属两个目标函数分别保存在两个m文件中 function f1=func1(x) %第一目标函数 f1=x(:,1).*x(:,1)./4+x(:,2).*x(:,2)./4; function f2=func2(x) %第二目标函数 f2=x(:,1).*(1-x(:,2))+10; function GA() clear;clc;close all NIND=100; %个体数目 MAXGEN=50; %最大遗传代数 NVAR=2; %变量个数 PRECI=20; %变量的二进制位数 GGAP=0.9; %代沟 trace1=[];trace2=[];trace3=[]; %性能跟踪 %建立区域描述器 % rep([PRECI],[1,NVAR]) FieldD=[rep([PRECI],[1,NVAR]);rep([1;2],[1,NVAR]);rep([1;0;1;1],[1,NVAR])]; Chrom=crtbp(NIND,NVAR*PRECI); %初始种群 v=bs2rv(Chrom,FieldD) ; %初始种群十进制转换 gen=1; while gen [NIND,N]=size(Chrom); M=fix(NIND/2); ObjV1=func1(v(1:M,:)); %分组后第一目标函数值 FitnV1=ranking(ObjV1); %分配适应度值 SelCh1=select('sus',Chrom(1:M,:),FitnV1,GGAP); %选择 ObjV2=func2(v(M+1:NIND,:)); %分组后第二目标函数值 FitnV2=ranking(ObjV2); %分配适应度值 SelCh2=select('sus',Chrom(M+1:NIND,:),FitnV2,GGAP); %选择 SelCh=[SelCh1;SelCh2]; ......余下全文>> 我给你一个标准遗传算法程序供你参考: 该程序是遗传算法优化BP神经网络函数极值寻优: %% 该代码为基于神经网络遗传算法的系统极值寻优 %% 清空环境变量 clc clear %% 初始化遗传算法参数 %初始化参数 maxgen=100; %进化代数,即迭代次数 sizepop=20; %种群规模 pcross=[0.4]; %交叉概率选择,0和1之间 pmutation=[0.2]; %变异概率选择,0和1之间 lenchrom=[1 1]; %每个变量的字串长度,如果是浮点变量,则长度都为1 bound=[-5 5;-5 5]; %数据范围 individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体 avgfitness=[]; %每一代种群的平均适应度 bestfitness=[]; %每一代种群的最佳适应度 bestchrom=[]; %适应度最好的染色体 %% 初始化种群计算适应度值 % 初始化种群 for i=1:sizepop %随机产生一个种群 individuals.chrom(i,:)=Code(lenchrom,bound); x=individuals.chrom(i,:); %计算适应度 individuals.fitness(i)=fun(x); %染色体的适应度 end %找最好的染色体 [bestfitness bestindex]=min(individuals.fitness); bestchrom=individuals.chrom(bestindex,:); %最好的染色体 avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度 % 记录每一代进化中最好的适应度和平均适应度 trace=[avgfitness bestfitness]; %% 迭代寻优 % 进化开始 for i=1:maxgen i % 选择 individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop; %交叉 individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异 individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound); % 计算适应度 for j=1:sizepop x=individuals.chrom(j,:); %解码 individuals.fitness(j)=fun(x); end ......余下全文>> 多目标是通过分布性 和非劣解来进行评价的 用matlab的ga()遗传算法函数求非线性多目标的最小值(或最大值),其解决帮助如下: 1、首先建立自定义目标函数,y=FitFun(x) 2、其二建立自定义约束函数,[c,ceq]=NonCon(x) 3、最后,根据已知条件,用ga()函数求解。 为了说明问题,没有用你随意给的问题。下面,给你一个例子作参考。 FitFun.m function f = FitFun(x,a1) f = exp(x(1))*(4*x(1)^2 + 2*x(2)^2 + 4*x(1)*x(2) + 2*x(2) + a1); end NonCon.m function [c,ceq] = NonCon(x,a2) c = [1.5 + x(1)*x(2) - x(1) - x(2);-x(1)*x(2) - a2]; ceq = []; end ga_main.m a1 = 1; a2 = 10; options = gaoptimset('MutationFcn',@mutationadaptfeasible); x = ga(@(x) FitFun(x,a1),2,[],[],[],[],[],[],@(x) NonCon(x,a2),options) 运行结果 可以参考多目标寻优遗传方法的进化思路,把遗传算法修改为针对整数规划的方法就可以二:遗传算法可以用来求多目标优化么
三:matlab遗传算法工具箱多目标函数优化的例子谁有, 50分
四:MATLAB遗传算法工具箱求解非线性多目标优化问题
五:跪求一份多目标优化遗传算法 matlab源代码,不甚感激。邮 箱991882239
六:MATLAB遗传算法编程(多目标优化) 90分
七:matlab 非线性多目标的遗传算法问题
八:多目标优化遗传算法求解混合整数规划问题