Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-03-28
年龄: 24
帖子: 6
声望力: 0 ![]() |
![]()
我在做一个非线性约束优化,用的是fmincon函数
下面两个是M文件: function f=fun(x) f=80*x(1)^2+220*x(2)^2+130*x(3)^2+270*x(4)^2+130*x(5)^2+50*x(6)^2-2027520 上面是目标函数,我要求它的最小值 function[c,ceq]=mycon(x) c=[5667837663/(x(2)^4-5308416)+21409535793/(x(3)^4-5308416)+119946300159/(x(4)^4-5308416)+239028895561/(x(5)^4-5308416)+10861837323/(x(6)^4-5308416)-26800;8799166/(x(4)^4-5308416)-1629475/(x(6)^4-5308416)-0.3;1822900/(x(5)^3-5308416/x(5))-60]; ceq=[]; 上面是约束条件,只有非线性不等式约束 我在matlab命令窗口输入: x0=[70;75;80;90;110;120]; lb=[0;0;0;0;0;0;0]; ub=[]; [x,fval,exitflag,output,lambda]=fmincon(@fun,x0,[],[],[],[],lb,ub,@mycon) 为什么他给我的一组结果就是我设的初始值啊,但我需要的是不同于初始值的解啊 我没学过matlab,现在做毕业设计要用才刚开始自学的,能不能麻烦各位帮我看一下我错在哪了呀,应该怎么解决啊。 麻烦各位了,谢谢!! |
![]() |
![]() |