请教关于用Matlab在非线性约束条件下的最优解

2024-11-22 09:23:28
推荐回答(3个)
回答1:

这种简单的问题,不需要用遗传算法
M文件:
function f = fun1(x)
f = -cos(x(1))-cos(x(2))-cos(x(3))-cos(x(4));

function [c, ceq] = fun2(x)
c = [];
ceq = [cos(5*x(1))+cos(5*x(2))+cos(5*x(3))+cos(5*x(4));
cos(7*x(1))+cos(7*x(2))+cos(7*x(3))+cos(7*x(4));
cos(11*x(1))+cos(11*x(2))+cos(11*x(3))+cos(11*x(4))];

在matlab命令窗口中输入:
clear all;
[x,fval]=fmincon(@fun1,rand(4,1),[],[],[],[],[],[],@fun2)

回答2:

可采用惩罚函数法,求最大值的话,对于不满足约束的解,将其M值赋一很小的值。然后采用无约束问题的优化方法求解。

回答3:

可以用遗传算法来做,matlab7.1后的版本都有这个功能了!
还有一些其他的优化函数可以调用,都是可以的!
我的腾讯联系方式,散坝而要龄要伞流午