用fmincon求目标函数最小值 其中有多个非线性不等式约束,还有参数大于零的正整数约束

用fmincon求目标函数最小值其中有多个非线性不等式约束,还有参数大于零的正整数约束,怎么在matlab的fmincon函数中表示这些约束条件?请大侠们帮忙,谢谢!主函... 用fmincon求目标函数最小值
其中有多个非线性不等式约束,还有参数大于零的正整数约束
,怎么在matlab的fmincon函数中表示这些约束条件?请大侠们帮忙,谢谢!

主函数:
function f = fun(x)
ci = 10000;
cm = 1000000;
f = ((x(1)+x(2)+x(3))*ci + cm) / (x(1)*x(4)+x(2)*x(5)+x(3)*x(6));

约束条件
2000≤x(1)*x(4)≤8000;
600≤x(2)*x(5)≤2400;
200≤x(3)*x(6)≤800;
x(1)> x(2)> x(3)>0,且为正整数;
x(4)> x(5)> x(6)>0;

初值:x0=[3000, 1000, 400];

约束条件的函数怎么写?并运行一下结果,谢谢!
初值:x0=[20,10,5,300,100,40]; 初值可以自己调整的
展开
 我来答
冒易0I1aaa
2016-05-25
知道答主
回答量:1
采纳率:0%
帮助的人:1.9万
展开全部
转换成小于零的约束例如
2000=<x(1)*x(4)<=8000可以转化成
x(1)*x(4)-8000<=0和2000-x(1)*x(4)=<0
海明灬
2019-08-22
知道答主
回答量:9
采纳率:0%
帮助的人:3.5万
展开全部
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
nonlcon就是非线性约束可以是函数可以是m文件,里面要有ce[],ceq[]
举个例子,写法:
function [ce,ceq]=myfunc(x)
ce[1]=x1+sin(x2);%表示x1+sin(x2)<=0的约束
ce[2]=x1-cos(x2);%表示x1-cos(x2)<=0的约束
ceq[1]=fun1;%表示fun1=0的约束
ceq[2]=fun2;%表示fun2=0的约束,这里fun1、fun2可以在其他M文件里提前写好。
%如果没有约束就直接ce[],ceq[]表示
求解的时候就直接
x = fmincon(@(x)myfun(x),x0,[],[],[],[],[],[],@(x) myfunc(x))%myfun(x)是提前写好的目标函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式