matlab中约束条件非线性,求目标函数(线性)最大值怎么做?

WM_THU
2013-07-10 · TA获得超过7164个赞
知道大有可为答主
回答量:4285
采纳率:80%
帮助的人:3916万
展开全部
脚本如下:
fun = @(t)-(183545*t-367490003);
lb = 2004;
ub = 2030;
t0 = 2015;
x = fmincon(fun,t0,[],[],[],[],lb,ub,@c)
起始值t0随便写一个。
另外在c.m中定义非线性约束函数:
function [c,ceq] = c(t)
c = 462.2*t.^2-2e6*t+2e9; % nonlinear inequalities at x.
ceq = 0; % nonlinear equalities at x.
运行结果2030。
追问
还想再请问下,我发现算出来的结果和我设的ub值有关,如果我把ub值改成2050年,那算出来最大值就是2050。这个结果是不是不对呢??
追答
其实你可以验证一下你的约束函数,先看看其在ub处是不是<0。我验证过2030是的。如果这个条件成立的话,一直取ub就很显然了。
我行我素850915
2013-07-10 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1744万
展开全部
function [c ceq]=mycon1(x)
c=462.2*x^2-2e6*x+2e9;
ceq=[];
上面程序保存为mycon1.m
f=@(x)-183545*x+367490003;fmincon(f,[2005],[],[],[],[],[2004],[2030],@mycon1)
结果:
ans =
2030
即t=2030时得最大值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式