请高人指点:matlab遗传算法工具箱编程,求一个多约束,多元非线性方程的最小值?
发布网友
发布时间:2022-05-19 06:19
我来回答
共2个回答
热心网友
时间:2023-10-05 10:40
我也在做一道差不多这样的题目 可以给我发一份么 472107065@qq.com
热心网友
时间:2023-10-05 10:41
将下属两个目标函数分别保存在两个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;追问你这个是书上的例子,还是谢谢你·····
...算法工具箱编程,求一个多约束,多元方程的最小值?
f2=x(:,1).*(1-x(:,2))+10;function GA()clear;clc;close all NIND=100; %个体数目 MAXGEN=50; %最大遗传代数 NVAR=2; %变量个数 PRECI=20;
非结构化数据如何可视化呈现?
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准...
Matlab遗传算法工具箱使用简介
点击Start开始求解。对于求最大值问题,只需在目标函数前加负号。若涉及不等式约束,需在Matlab中定义并输入到约束部分。涉及非线性约束时,需要编写非线性约束条件并指定在Nonlinear constraint function处的m文件函数。Options板块提供了定制ga功能的选项,如Population type(实数或二进制编码),Population si...
matlab优化工具箱中遗传算法的问题
NONLCON是非线性约束函数 options是运行方式。这两个可以写函数自己完成,也可默认 函数默认计算最小值,计算最大值要加负号 非线性约束条件的写法 function [c,ceq]=nonlcon(x) 定义函数自变量是x,x可以是一列矩阵 c=[]; c表示非线性等式约束,以为没有,所以为空 ceq=[x(1)-2*(x(2))...
matlab中约束条件非线性,求目标函数最小值 怎么做?
function [c,ceq]=xiandaicon(x) %构造约束函数c=[];ceq=100-x(1)^3*x(2)*(12-exp(-x(1)/x(2)));function y=xiandaiobj(x) %构造目标函数,命名为xiandaiobj.my=x(1)*x(2)^3lb=[0 0];ub=[];x0=[1 1];[x,fval]=fmincon(@xiandaiobj,x0,[],[],[],[],lb,ub,@xiandaicon) ...
你好,我想请教一个关于MATLAB遗传算法的问题
您好,如果想调用matlab自带的工具箱,那么约束条件必须符合它的要求,即约束条件包含的是线性不等式、线性等式,边界和非线性不等式,。如果你的约束条件还含有其他的,如整数规划。那么你就得修改了计算流程了。把遗传和BP,模拟退火、粒子群、蚁群或其他智能算法连接起来混合使用主要是对算法性能的进一步...
求助:关于matlab遗传算法工具箱中约束的输入问题
遗传算法工具箱的函数GA基本调用格式如下:X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub)其中前两个参数分别是适应度函数和变量个数,第三、四个参数(A和b)即为线性不等式约束。你现在需要做的是,增加几个线性约束条件:x1 < x2 x2 < x3 x3 < x4 x4 < x5 不过,有个问题,遗传算法等...
matlab遗传算法工具箱求解多元函数显示输入参数数目不足?求解答,非常...
错误的主要原因是你写的函数有问题。函数应该这样来表示:function y = Test1(x)a=x(1);b=x(2);y=a+b;end 使用优化工具箱,选择ga,运行可以得到如下结果
在matlab中用遗传算法求解y=20+x1.^2+x2.^2-10*(cos(3*pi*x1)+cos(p...
用matlab的ga()遗传算法函数,求得其函数的最小值。实现方法:一、求函数的最小值 >>ga_fun=@(x)20+x(1).^2+x(2).^2-10*(cos(3*pi*x(1))+cos(pi*x(2))); %自定义函数 >>[x,fval,exitflag] = ga(ga_fun,2,[],[],[],[],[0,0],[10,10])x = 1.3303 ...
matlab遗传算法优化问题中,非线性等式约束怎么添加啊?
建立约束条件函数,把非线性的等式约束条件添加加在[c,ceq]中。如 function [c,ceq]=NonCon(x)c=x(1)^2+x(2)^2-9;ceq=[];然后,再用ga()函数调用,如 [x, fval, exitflag] =ga(o@FitFun,nvars,A,b,Aeq,beq,lb,ub,NonCon)
...我应用matlab自带的遗传算法工具箱求函数最小值,,每次运行结果都不一...
一样才怪!遗传算法是一种带有随机性的搜索型的求解全局最优解的方法。随机性就是在优化过程中变量的取值是随机变化的,但是这种变化是朝向全局最优的方向随机变化。但是当种群数量足够大,而且进化代数足够多的时候,最优解是具有稳定性的,虽然每次都不一样,但是最优解的变化一般不会很大。myfun没有...