用matlab求解题主的多目标优化问题,可以这样来考虑:
1、创建目标函数,其内容
w1 =0.4w2=1-w1
y =w1*0.78539*(x(1)^2-x(2)^2)+w2*x(1)^2
2、创建约束条件函数,其内容
c(1)=(9224400*x(1)/(x(1)^4-x(2)^4))-45
c(2)=(13050819/(x(1)^4-x(2)^4))-1
c(3)=216379-(x(1)^4-x(2)^4)/x(1)
c(4)=-x(1)+x(2)
ceq = []
3、初设x0的初值,即 x0 =[80,20]
4、设定上下限值,即lb=[0,0]ub=[170,100]
5、使用fmincon最小值最优化函数,求出x(1)、x(2)的值。即
[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x))
6、验证约束条件,即
disp('x2-x1<0')
disp(x(2)-x(1))
运行代码后得到如下结果。
用遗传算法工具箱求解一个多目标优化问题的步骤:
1、根据题意,建立自定义目标函数,ga_fun1(x)
2、在命令窗口中,输入
>>optimtool %调用遗传算法工具箱
3、在遗传算法工具箱界面中,分别对Fitness function框内输入@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值。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)