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

在以下约束条件下
cos(5*x)+cos(5*y)+cos(5*z)+cos(5*m)=0;
cos(7*x)+cos(7*y)+cos(7*z)+cos(7*m)=0;
cos(11*x)+cos(11*y)+cos(11*z)+cos(11*m)=0;
使M=cos(x)+cos(y)+cos(z)+cos(m)最大的求法,想通过Matlab最优化处理,可不知道如何实现?看了一些例子都是关于x,y等的约束,可我不知道怎么实现在cosnx(n=6k+1和n=6k-1)组成的方程组的约束下的最优解。
能不能详细讲讲呢?我对用Matlab中的遗传算法不熟悉,谢谢

这种简单的问题,不需要用遗传算法
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)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-13
可采用惩罚函数法,求最大值的话,对于不满足约束的解,将其M值赋一很小的值。然后采用无约束问题的优化方法求解。本回答被网友采纳
第2个回答  2012-01-13
可以用遗传算法来做,matlab7.1后的版本都有这个功能了!
还有一些其他的优化函数可以调用,都是可以的!
我的腾讯联系方式,散坝而要龄要伞流午追问

能不能详细讲讲呢,我对遗传算法不了解

追答

你的matlab里面运行help ga里面有算法和例子,可以自己看一下!