已知目标函数和约束条件,用MATLAB怎么求最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了已知目标函数和约束条件,用MATLAB怎么求最大值相关的知识,希望对你有一定的参考价值。

目标函数 1.08∧x(1)×2.06∧x(2)×1.17∧x(3)
约束条件 3×x(1)+6×x(2)+12×x(3)≤20
x(1),x(2),x(3)≥0
求目标函数最大值

已知目标函数和约束条件,求最大值,属于条件极值问题,可以用拉格朗日数乘法来做,下面给出拉格朗日数乘法的matlab代码:

clc;clear;
syms x y z t%定义自变量x,y,z,拉格朗日乘数t
f(x,y,z)=x+2*y+3*z;%设需要求最大值的表达式x+2*y+3*z
g=x^2+y^2+z^2-4;%设约束条件x^2+y^2+z^2-4=0
L=f-t*g;
sln=solve(diff(L,x)==0,diff(L,y)==0,diff(L,z)==0,g==0);%解拉格朗日数乘法的方程组
eval(f(sln.x,sln.y,sln.z))%把解带回f,求出条件极值

运行结果如下:
ans =

7.4833
-7.4833
即得到x+2*y+3*z在x^2+y^2+z^2-4=0条件下的最大值7.4833,最小值-7.4833。
参考技术A >> f = @(x) -(1.08.^x(1).*2.06.^x(2).*1.17.^x(3)); % 加了负号,求出的最小值的相反数即为要求的最大值
>> a = [-1 0 0;0 -1 0;0 0 -1;3 6 12]; 约束条件
>> b = [0 0 0 20];
>> x0 = [1 1 1]; % 迭代初始值
>> [x,val] = fmincon(f,x0,a,b,[],[],[],[],[],optimset('Algorithm','interior-point'))

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the default value of the function tolerance,
and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>


x =

    0.0000    3.3333    0.0000


val =

  -11.1231

即x1=0,x2=3.333,x3=0时,原目标函数取得最大值11.1231

请教matlab,已知优化目标函数表达式和约束条件,如何求一个使目标极值的参数对应的一般表达式!

我能计算出来固定条件时候的极值,但是我需要一般式的解,也就是闭合表达式

参考技术A 我是高三,…利用约束条件画出图,再用目标函数求出优解,即是图像最高点和最低点坐标,…两点公式 参考技术B 建议用lingo来解决这类优化问题。lingo很容易上手。比Matlab解决方便多了。网上有这软件下载,若需要发邮件到ling0203.happy@163.com 参考技术C 线性优化用:
min z=cX
s.t AX<=b
Aeq*X=beq
VLB≤X≤VUB
命令:[1] x=linprog(c,A,b,Aeq,beq, VLB,VUB)
[2] x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0)
注意:[1] 若没有等式约束: , 则令Aeq=[ ], beq=[ ].
[2]其中X0表示初始点
4. 命令:[x,fval]=linprog(…)
返回最优解x及x处的目标函数值fval.
非线性优化用:
1.x=quadprog(H,C,A,b);
2.x=quadprog(H,C,A,b,Aeq,beq);
3.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);
4.x=quadprog(H,C,A,b, Aeq,beq ,VLB,VUB,X0);
5.x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);
6.[x,fval]=quaprog(…);
7.[x,fval,exitflag]=quaprog(…);
8.[x,fval,exitflag,output]=quaprog(…);
等···

以上是关于已知目标函数和约束条件,用MATLAB怎么求最大值的主要内容,如果未能解决你的问题,请参考以下文章

如何用Matlab求有限制条件的目标函数的最小值求解一个优化问题(目标函数非线性,约束函数线性)?

如何 求多元一次函数的最大值

matlab求解线性规划最优解怎么弄?

怎么用matlab求解非线性最优化问题

Matlab中已知函数值的最小值求对应的自变量值...

MATLAB编程求最小值