数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 1853|回复: 3

MATLAB解线性规划

[复制链接]
发表于 2004-9-4 07:21:43 | 显示全部楼层 |阅读模式
<H3 ><FONT size=1>线性规划问题求最优解函数:</FONT></H3>
< ><FONT size=1><B><FONT face="Times New Roman">       </FONT></B><B>调用格式:<FONT face="Times New Roman">       x=linprog(f,A,b)<p></p></FONT></B></FONT></P>
< ><B><FONT face="Times New Roman"><FONT size=1>                            x=linprog(f,A,b,Aeq,beq)<p></p></FONT></FONT></B></P>
< ><B><FONT face="Times New Roman"><FONT size=1>                            x=linprog(f,A,b,Aeq,beq,lb,ub)<p></p></FONT></FONT></B></P>
<P ><B><FONT face="Times New Roman"><FONT size=1>                            x=linprog(f,A,b,Aeq,beq,lb,ub,x0)<p></p></FONT></FONT></B></P>
<P ><B><FONT face="Times New Roman"><FONT size=1>                            x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)<p></p></FONT></FONT></B></P>
<P ><FONT size=1><B><FONT face="Times New Roman">              [x,fval]=linprog(</FONT></B><B>…<FONT face="Times New Roman">)<p></p></FONT></B></FONT></P>
<P ><FONT size=1><B><FONT face="Times New Roman">              [x, fval, exitflag]=linprog(</FONT></B><B>…<FONT face="Times New Roman">)<p></p></FONT></B></FONT></P>
<P ><FONT size=1><B><FONT face="Times New Roman">              [x, fval, exitflag, output]=linprog(</FONT></B><B>…<FONT face="Times New Roman">)<p></p></FONT></B></FONT></P>
<P ><FONT size=1><B><FONT face="Times New Roman">              [x, fval, exitflag, output, lambda]=linprog(</FONT></B><B>…<FONT face="Times New Roman">)<p></p></FONT></B></FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       </FONT><B>说明:</B><FONT face="Times New Roman">x=linprog(f,A,b)</FONT>返回值<FONT face="Times New Roman">x</FONT>为最优解向量。</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       x=linprog(f,A,b,Aeq,beq) </FONT>作有等式约束的问题。若没有不等式约束,则令<FONT face="Times New Roman">A=[ ]</FONT>、<FONT face="Times New Roman">b=[ ] </FONT>。</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options) </FONT>中<FONT face="Times New Roman">lb ,ub</FONT>为变量<FONT face="Times New Roman">x</FONT>的下界和上界,<FONT face="Times New Roman">x0</FONT>为初值点,<FONT face="Times New Roman">options</FONT>为指定优化参数进行最小化。</FONT></P>
<P ><FONT size=1><B><FONT face="Times New Roman">Options</FONT></B><B>的参数描述:</B></FONT>
<FONT face="Times New Roman"><FONT size=1>Display   </FONT></FONT><FONT size=1>显示水平。<FONT face="Times New Roman"> </FONT>选择<FONT face="Times New Roman">’off’ </FONT>不显示输出;选择<FONT face="Times New Roman">’iter’</FONT>显示每一<FONT face="Times New Roman"> </FONT>步迭代过程的输出;选择<FONT face="Times New Roman">’final’ </FONT>显示最终结果。</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">MaxFunEvals </FONT>函数评价的最大允许次数</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">Maxiter </FONT>最大允许迭代次数</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">TolX   x</FONT>处的终止容限<FONT face="Times New Roman">  </FONT></FONT></P>
<P ><FONT size=1><FONT face="Times New Roman"><B>       </B>[x,fval]=linprog(</FONT>…<FONT face="Times New Roman">) </FONT>左端<FONT face="Times New Roman"> fval </FONT>返回解<FONT face="Times New Roman">x</FONT>处的目标函数值。</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">[x,fval,exitflag,output,lambda]=linprog(f,A,b, Aeq,beq,lb,ub,x0) </FONT>的输出部分:<B><FONT face="Times New Roman"> <p></p></FONT></B></FONT></P>
<P ><FONT size=1><FONT face="Times New Roman"><B>exitflag</B> </FONT>描述函数计算的退出条件:若为正值,表示目标函数收敛于解<FONT face="Times New Roman">x</FONT>处;若为负值,表示目标函数不收敛;若为零值,表示已经达到函数评价或迭代的最大次数。</FONT></P>
<P ><FONT size=1><B><FONT face="Times New Roman">output </FONT></B>返回优化信息:<FONT face="Times New Roman">output.iterations</FONT>表示迭代次数;<FONT face="Times New Roman">output.algorithm</FONT>表示所采用的算法;<FONT face="Times New Roman">outprt.funcCount</FONT>表示函数评价次数。</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman"><B>lambda</B> </FONT>返回<FONT face="Times New Roman">x</FONT>处的拉格朗日乘子。它有以下属性:</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       lambda.lower-lambda</FONT>的下界;</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       lambda.upper-lambda</FONT>的上界;</FONT></P>
<P ><FONT size=1><FONT face="Times New Roman">       lambda.ineqlin-lambda</FONT>的线性不等式;</FONT></P><FONT size=1>       lambda.eqlin-lambda的线性等式。</FONT>
 楼主| 发表于 2004-9-4 07:25:07 | 显示全部楼层
<H3 0cm 0cm 0pt"><FONT size=1>举例</FONT></H3>< 0cm 0cm 0pt; TEXT-INDENT: 21pt"><FONT size=1><FONT face="Times New Roman"><b><FONT face=宋体>  </FONT></b>minf=5x<SUB>1</SUB>-x<SUB>2</SUB>+2x<SUB>3</SUB>+3x<SUB>4</SUB>-8x<SUB>5</SUB></FONT></FONT></P>< 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><FONT size=1><FONT face="Times New Roman">s.t  –2x<SUB>1</SUB>+x<SUB>2</SUB>-x<SUB>3</SUB>+x<SUB>4</SUB>-3x<SUB>5</SUB></FONT>≤6<p></p></FONT></P>< 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><FONT size=1>    <FONT face="Times New Roman">2x<SUB>1</SUB>+x<SUB>2</SUB>-x<SUB>3</SUB>+4x<SUB>4</SUB>+x<SUB>5</SUB></FONT>≤7<p></p></FONT></P><P 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><FONT size=1>    0≤<FONT face="Times New Roman">x<SUB>j</SUB></FONT>≤15  j=1,2,3,4,5<p></p></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt"><B><FONT size=1>程序:<p></p></FONT></B></P><P 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt"><B><FONT face="Times New Roman"><FONT size=1>f=[5 -1 2 3 -8];<p></p></FONT></FONT></B></P><P 0cm 0cm 0pt 20.9pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.55pt"><B><FONT face="Times New Roman"><FONT size=1>A=[-2 1 -1 1 -3;2 1 -1 4 1];<p></p></FONT></FONT></B></P><P 0cm 0cm 0pt 20.9pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.55pt"><B><FONT face="Times New Roman"><FONT size=1>b=[6;7];<p></p></FONT></FONT></B></P><P 0cm 0cm 0pt 20.9pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.55pt"><B><FONT face="Times New Roman"><FONT size=1>lb=[0 0 0 0 0];<p></p></FONT></FONT></B></P><P 0cm 0cm 0pt 20.9pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.55pt"><B><FONT face="Times New Roman"><FONT size=1>ub=[15 15 15 15 15];<p></p></FONT></FONT></B></P><P 0cm 0cm 0pt 20.9pt; TEXT-INDENT: 21.1pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.55pt"><B><FONT face="Times New Roman"><FONT size=1>[x,fval]=linprog(f,A,b,[],[],lb,ub) <p></p></FONT></FONT></B></P><P 0cm 0cm 0pt; TEXT-INDENT: 20.9pt"><FONT size=1><B>结果:</B><FONT face="Times New Roman">x =</FONT></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman"><FONT size=1>           0.0000</FONT></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman"><FONT size=1>           0.0000</FONT></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman"><FONT size=1>           8.0000</FONT></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman"><FONT size=1>           0.0000</FONT></FONT></P><P 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman"><FONT size=1>           15.0000</FONT></FONT></P><P 0cm 0cm 0pt 21pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0; mso-char-indent-size: 10.5pt"><FONT face="Times New Roman" size=1>minf =</FONT></P><FONT size=1>       -104</FONT>
发表于 2004-9-18 21:34:40 | 显示全部楼层
<>谢谢 </P><>不过这个能管用吗 !</P>
发表于 2004-9-19 10:52:07 | 显示全部楼层
<>如果不能给出具体的目标函数表达式呢?</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-29 04:47 , Processed in 0.059645 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表