matlab已知自变量的取值范围求最大值

已知10万<Q<100万 0.04<R<0.14 0<D<1 函数表达式为f=QR(1-D),求当Q R D 为何值时,函数有最大值,最大值为多少?麻烦附加一下程序代码

第1个回答  2020-09-12

如何用matlab在已知自变量的取值范围下求最大值?题主的问题可以解决:

1、根据函数表达式为f=QR(1-D),自定义其目标函数,fmincon_fun(x),即

f=-Q*R*(1-D); 这里负号表示最大值

2、根据约束条件,自定义其约束函数,fmincon_con(x),即

g(1)=Q-10; %Q>10;

g(2)=R-0.04; %R>0.04

g(3)=100-Q; %Q<100

g(4)=0.14-R; %R<0.14

g(5)=1-D; %D<1

3、初定Q,R,D的初值,这里用x0表示,即x0=rand(1,3);

4、根据条件确定Q,R,D的上下限,即

lb=[10,0.04,0];

ub=[100,0.14,1];

5、使用fmincon函数,求解Q,R,D的值,即

[x,fval] = fmincon(@(x) fmincon_fun(x),x0,[],[],[],[],lb,ub,@(x) fmincon_con(x),options);

Q=x(1),R=x(2),D=x(3),fmax=-fval

6、编写代码后运行可以得到如下结果。