如何利用MATLAB解非线性规划

 我来答
wacs5
推荐于2016-03-18 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:3165万
展开全部
给你一个例子吧。
目标函数:f=x1y1+x2y2+x3y3+x4y4
约束条件:4y1+80y2+35y3+25y4<=600
9y1+2y2+30y3+40y4<=700
y1=-6.49*x1+6748
y2=-1.2*x2+1184
y3=-0.22x3+0.026x4+420
y4=-0.034x4+0.027x3+70
所有变量均〉=0
求:目标函数最大值

我的求解过程如下:
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function f=zhidao_theendoflife(x)
%目标函数构造
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);

y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;

f=x1*y1+x2*y2+x3*y3+x4*y4;
f=-f;%你要求最大值,这里加负,然后计算最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [y,yeq]=zhidao_theendoflife_cond(x)
%约束条件
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);

y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;

y=[4*y1+80*y2+35*y3+25*y4-600;9*y1+2*y2+30*y3+40*y4-700]; %加约束的话,在这里加
yeq=[];%等式约束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

返回Matlab输入:
x0=[0;0;0;0]; xm=[0;0;0;0]; xM=inf*[1;1;1;1]; A=[]; B=[]; Aeq=[]; Beq=[];
[x,f_min,flag,c]=fmincon('zhidao_theendoflife',x0,A,B,Aeq,Beq,xm,xM,'zhidao_theendoflife_cond');
f_max=-f_min;
x,f_max

运行得
x =
1.0e+003 *
0.9840
0.9619
2.8354
4.0759
f_max =
1.3974e+005
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
创作者E7XU9oRMsb
游戏玩家

2020-05-03 · 游戏我都懂点儿,问我就对了
知道大有可为答主
回答量:9827
采纳率:31%
帮助的人:777万
展开全部
给你一个例子吧。
目标函数:f=x1y1+x2y2+x3y3+x4y4
约束条件:4y1+80y2+35y3+25y4<=600
9y1+2y2+30y3+40y4<=700
y1=-6.49*x1+6748
y2=-1.2*x2+1184
y3=-0.22x3+0.026x4+420
y4=-0.034x4+0.027x3+70
所有变量均〉=0
求:目标函数最大值
我的求解过程如下:
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function
f=zhidao_theendoflife(x)
%目标函数构造
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);
y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;
f=x1*y1+x2*y2+x3*y3+x4*y4;
f=-f;%你要求最大值,这里加负,然后计算最小值
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function
[y,yeq]=zhidao_theendoflife_cond(x)
%约束条件
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);
y1=-6.49*x1+6748;
y2=-1.2*x2+1184;
y3=-0.22*x3+0.026*x4+420;
y4=-0.034*x4+0.027*x3+70;
y=[4*y1+80*y2+35*y3+25*y4-600;9*y1+2*y2+30*y3+40*y4-700];
%加约束的话,在这里加
yeq=[];%等式约束
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
返回Matlab输入:
x0=[0;0;0;0];
xm=[0;0;0;0];
xM=inf*[1;1;1;1];
A=[];
B=[];
Aeq=[];
Beq=[];
[x,f_min,flag,c]=fmincon('zhidao_theendoflife',x0,A,B,Aeq,Beq,xm,xM,'zhidao_theendoflife_cond');
f_max=-f_min;
x,f_max
运行得
x
=
1.0e+003
*
0.9840
0.9619
2.8354
4.0759
f_max
=
1.3974e+005
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
杨好巨蟹座
推荐于2018-04-13 · TA获得超过5万个赞
知道大有可为答主
回答量:6197
采纳率:80%
帮助的人:1629万
展开全部
用蒙特卡洛法求解的基本思想
1
在估计的区域内随机取若干试验点。
2
然后从实验点中找出可行点。
3
再从可行点中选择最小点。
END
基本假设
试验点的第j个分量xj服从[aj ,bj]内的均匀分布.
END
求解过程
1
先产生一个随机数作为初始试验点,以后则将上一个试验点的第j个分量随机产生,其它分量不变而产生一新的试验点.这样,每产生一个新试验点只需一个新的随机数分量.当K>MAXK或P>MAXP时停止迭代.
2
符号说明:
P: 试验点总数;  MAXP:最大试验点总数;
K: 可行点总数;  MAXK:最大可行点数;
X*:迭代产生的最优点;  Q:迭代产生的最小值f(X*),其初始值为计算机所能表示的最大数.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式