用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]; 初值可以自己调整的 展开
其中有多个非线性不等式约束,还有参数大于零的正整数约束
,怎么在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]; 初值可以自己调整的 展开
2个回答
展开全部
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)是提前写好的目标函数
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)是提前写好的目标函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询