如何用matlab求解非线性最优化
如何用matlab求解非线性最优化,假如f=a*(b^x)+c*(d^x)+……,0<x<1,当然这里b和d等也是在0和1之间。求x使得f最小。希望能给出代码,谢谢。b和...
如何用matlab求解非线性最优化,假如f=a*(b^x)+c*(d^x)+……,0<x<1,当然这里b和d等也是在0和1之间。求x使得f最小。希望能给出代码,谢谢。
b和d可能是在0,1之间,也可能大于1,反正不为负数就对了。 展开
b和d可能是在0,1之间,也可能大于1,反正不为负数就对了。 展开
1个回答
展开全部
数学模型:min z=f(x)
s.t. Ax<b
语法:[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)
例:min f(x)=-5x(1)-4x(2)-6x(3)
s.t. x(1)-x(2)+x(3)≤20
3x(1)+2x(2)+4x(3)≤42
3x(1)+2x(2)≤30
x(1),x(2),x(3)≥0
f=[-5 -4 -6]
A=[1 -1 1;3 2 4;3 2 0]
b=[20;42;30]
lb=zeros(3,1)
[x,fval]=linprog(f,A,b,[],[],lb,[])
x =
0.0000 x(1)
15.0000 x(2)
3.0000 x(3)
fval =
-78.0000 目标值
s.t. Ax<b
语法:[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)
例:min f(x)=-5x(1)-4x(2)-6x(3)
s.t. x(1)-x(2)+x(3)≤20
3x(1)+2x(2)+4x(3)≤42
3x(1)+2x(2)≤30
x(1),x(2),x(3)≥0
f=[-5 -4 -6]
A=[1 -1 1;3 2 4;3 2 0]
b=[20;42;30]
lb=zeros(3,1)
[x,fval]=linprog(f,A,b,[],[],lb,[])
x =
0.0000 x(1)
15.0000 x(2)
3.0000 x(3)
fval =
-78.0000 目标值
更多追问追答
追问
函数是幂次形式也可以用linprog么,之前用fmincon老报错。
看了下帮助文档,这个貌似不行的啊,注意我这里的函数是幂次形式哈
追答
你可以用这个函数fmincon()试一试
[x,fval,exitflag]=fmincon('gearboxfun',x0,A,b,Aeq,beq,lb,ub,'gearboxcon')
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询