导航:首页 > 五金知识 > 遗传算法工具箱中多目标优化

遗传算法工具箱中多目标优化

发布时间:2022-05-11 23:56:39

1. 用遗传算法求解多目标函数

用matlab来实现会非常简单,matlab中直接提供遗传算法工具箱,单目标的用ga来求解,多目标的用gamultiobj来求解。详细可以参考matlab帮助文件。

2. matlab 遗传算法多目标优化问题!!!

你的目标是总钱数最小?那么这是单目标问题。你用简单遗传算法就可以解决了,不过可能效果一般。

3. 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<MAXGEN,
[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]; %合并
SelCh=recombin('xovsp',SelCh,0.7); %重组
Chrom=mut(SelCh); %变异
v=bs2rv(Chrom,FieldD);
trace1(gen,1)=min(func1(v));
trace1(gen,2)=sum(func1(v))/length(func1(v));
trace2(gen,1)=min(func2(v));
trace2(gen,2)=sum(func2(v))/length(func2(v));
trace3(gen,1)=min(func1(v)+func2(v));
trace3(gen,2)=sum(func1(v))/length(func1(v))+sum(func2(v))/length(func2(v));
gen=gen+1;
end
figure(1);clf;
plot(trace1(:,1));hold on;plot(trace1(:,2),'-.');
plot(trace1(:,1),'.');plot(trace1(:,2),'.');grid on;
legend('解的变化','种群均值的变化')
xlabel('迭代次数');ylabel('目标函数值');
figure(2);clf;
plot(trace2(:,1));hold on;
plot(trace2(:,2),'-.');
plot(trace2(:,1),'.');
plot(trace2(:,2),'.');grid;
legend('解的变化','种群均值的变化');
xlabel('迭代次数');ylabel('目标函数值');
figure(3);clf;
plot(trace3(:,1));hold on;
plot(trace3(:,2),'-.');
plot(trace3(:,1),'.');
plot(trace3(:,2),'.');grid;
legend('解的变化','种群均值的变化');
xlabel('迭代次数');ylabel('目标函数值');
figure(4);clf;plot(func1(v));hold on;
plot(func2(v),'r-.');grid;

4. 遗传算法可以用来求多目标优化么

我给你一个标准遗传算法程序供你参考:
该程序是遗传算法优化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]; %数据范围

indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体

%% 初始化种群计算适应度值
% 初始化种群
for i=1:sizepop
%随机产生一个种群
indivials.chrom(i,:)=Code(lenchrom,bound);
x=indivials.chrom(i,:);
%计算适应度
indivials.fitness(i)=fun(x); %染色体的适应度
end
%找最好的染色体
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色体
avgfitness=sum(indivials.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];

%% 迭代寻优
% 进化开始
for i=1:maxgen
i
% 选择
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
%交叉
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 变异
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);

% 计算适应度
for j=1:sizepop
x=indivials.chrom(j,:); %解码
indivials.fitness(j)=fun(x);
end

%找到最小和最大适应度的染色体及它们在种群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次进化中最好的染色体
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;

avgfitness=sum(indivials.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度
end
%进化结束

%% 结果分析
[r c]=size(trace);
plot([1:r]',trace(:,2),'r-');
title('适应度曲线','fontsize',12);
xlabel('进化代数','fontsize',12);ylabel('适应度','fontsize',12);
axis([0,100,0,1])
disp('适应度 变量');
x=bestchrom;
% 窗口显示
disp([bestfitness x]);

5. 使用matlab遗传算法工具箱能不能解决组合优化问题还有使用工具箱方便还是自己编程方便呢

1、要看你组来合优化是属于哪种问题,源一般的组合优化都是混合整数线性或非线性的,那么就不行了,因此要对遗传算法改进才能计算。
2、如果有现成的工具箱求解你的组合优化问题肯定要方便些,但碰到具体问题,可能要对参数进行一些设置更改,所以最好能有编程基础,那样就可以自己修改工具箱里面的参数或策略了

对你的补充问题,组合优化问题一般都是用matlab 和 lingo实现吧。建议买一本数学建模的书看一看,都涉及到组合优化问题,也可以下载论文看看。lingo对编程要简单些,主要是求混合规划,缺点是似乎还不能用上多目标问题,一般的组合优化都属于多目标问题。但是matlab功能强大的多。

6. 怎么用遗传算法工具箱求多目标函数的最优解

可以用多个目标并列选择法,将种群按照目标函数的个数进行划分,分别进行适应度排序,选择,然后将选出的子种群合并,再进行交叉、变异等操作。

7. 用遗传算法工具箱求解一个多目标优化问题,现在需要一个matlab程序,求高人指点

用遗传算法工具箱求解一个多目标优化问题的步骤:

1、根据题意,建立自定专义目标函数,ga_fun1(x)

2、在命令窗属口中,输入

>> optimtool %调用遗传算法工具箱

3、在遗传算法工具箱界面中,分别对Fitnessfunction框内输入@ga_fun1();A框内输入[1,1,1];b框内输入16;Aeq框内输入[];beq框内输入[];Lower框内输入[0,0,0];Upper框内输入[];

4、单击Start。得到x=4.508 y=2.513 z=1.912值。

8. 如何用遗传算法实现多变量的最优化问题

将多个变量的数值编码编排进去,进行组合,只需要增长基因个体的长度,但是要明确每个变量具体的位置,然后让每个变量转化成二进制的等长编码,组合在一起,就可以来运算了。
具体操作步骤如下:
1、首先要利用一个矩阵去跟踪每组迭代的结果的大小:
2、然后,要构造一个译码矩阵FieldD,由bs2rv函数将种群Chrom根据译码矩阵换成时值向量,返回十进制的矩阵:
且FieldD矩阵的结构如下:
3、要先将目标函数显示出来,看看基本的函数的形式:
4、设计遗传算法的参数估计:
5、经遗传算法之后,这个最优解的位置是:(图中标记蓝点的位置)

9. matlab遗传算法工具箱多目标函数优化的例子谁有,

Matlab遗传算法工具箱帮助文件自带多目标函数优化例子。

10. 运用MATLAB遗传算法工具箱求解非线性多目标优化问题,烦请高人指点!

matlab中没有rep这个函数,需要你自己定义这个函数。

阅读全文

与遗传算法工具箱中多目标优化相关的资料

热点内容
空调三通阀门坏有什么症状 浏览:468
材料和设备应当如何存储 浏览:170
镇海森林城堡儿童游乐设备哪个好 浏览:6
宝马阀门排气有什么用 浏览:296
天语sx4仪表盘灯不亮怎么回事 浏览:802
超达维修阀门厂 浏览:964
王牌战争封设备如何解封 浏览:485
粗食盐提纯需要什么仪器 浏览:229
蔚领机械钥匙怎么开门视频 浏览:249
面盆水龙头阀门漏水怎么办 浏览:363
什么情况下选择铸造生产零件 浏览:713
机床刚性攻丝有什么参数 浏览:670
蒸汽阀门上用什么填料 浏览:309
如何天正快速连接设备与水管 浏览:263
如何安装仪表小灯 浏览:317
水阀门脱口怎么办 浏览:449
汽车制冷机启动没有反应什么故障 浏览:623
bestdon机械表怎么上发条 浏览:94
清河市五金机电城 浏览:544
电解水简宜实验装置 浏览:949