现在的位置: 首页 > 综合 > 正文

MATHEMATICA处理线性规划与非线性规划问题 (2010-08-02 10:34:55)转载

2012年11月10日 ⁄ 综合 ⁄ 共 1579字 ⁄ 字号 评论关闭

 

MATHEMATICA处理线性规划与非线性规划问题 (2010-08-02 10:34:55)转载
标签: 校园 分类: 优化设计
MATHEMATICA讲座第八讲
线性规划与非线性规划
模型 min(or max) f=c'X=c1x1+c2x2+...+cnxn
s.t. MX>=b,X>=0
命令格式
ConstrainedMax[f,{inequalities},{x,y,...}]
ConstrainedMin[f,{inequalities},{x,y,...}]
LinearProgramming[c,M,b]
执行算例1 求解线性规划问题
max f=2x+3y
s.t. x+2y<=8
0<=x<=4,0<=y<=3
 
ConstrainedMax[2*x+3*y,{x+2 y<=8,x<=4,y<=3},{x,y}]
第一个参数是目标函数的最优值,第二个参数是决策变量的取值。
 
执行算例2
min f=x+2y+3z
s.t. 2x-y =1
x +z=1
x,y,z>=0
(*解法一*)
ConstrainedMin[x+2y+3z,{2x-y==1,x+z==1},{x,y,z}]
(*解法二*)
c={2,-3}
M={{-1,-1},{1,-1},{1,0}}
b={-10,2,1}
q=LinearProgramming[c,M,b]
 
执行算例3 求解线性规划问题
min -f =- 0.40x1-0.28x2-0.32x3-0.72x4-0.64x5-0.61x6
s.t. -0.01x1-0.01x2-0.01x3-0.03x4-0.03x5-0.03x6>=-850
-0.02x1 -0.05x4 >=-700
-0.02x2 -0.05x5 >=-100
-0.03x3 -0.08x6>=-900
x1,x2,x3,x4,x5,x6>=0
 
解:
c={-0.4,-0.28,-0.32,-0.72,-0.64,-0.6};
A={{-0.01,-0.01,-0.01,-0.03,-0.03,-0.03},
{-0.02,0,0,-0.05,0,0},{0,-0.02,0,0,-0.05,0},
{0,0,-0.03,0,0,-0.08}};
b={-850,-700,-100,-900};
LinearProgramming[c,A,b]
(* 此命令只给出决策变量。*)
线性约束条件下的非线性规划问题
线性逼近法(FW法)
模型: (NLP)minf(x)
S.t.: E={x|AX>=b,X>=0}
 
执行算例4 求解非线性规划问题
用线性逼近法求解非线性规划问题
目标函数 f(x1,x2)=(x1-1)^2+(x2-2)^2
约束条件 0<=x1<=2,0<=x2<=3
 
下面是第一次迭代
Clear[a,b,c,d,s,e,pf]
f[x1_,x2_]:=(x1-1)^2+(x2-2)^2;
gradf={D[f[x1,x2],x1],D[f[x1,x2],x2]};
c={0.7,1.25}; (*C即基可行解X0*)
s=gradf/.{x1->Part[c,1],x2->Part[c,2]} (*求X0点梯度*)
{-0.6, -1.5}
x1=.; (*清除X1,X2的值*)
x2=.;
p[u_,v_]:=s.{u,v}
a=ConstrainedMin[p[x1,x2],{x1<=2,x2<=3},{x1,x2}]
(*求出最优解Y0*)
b={x1,x2}/.Part[a,2];
e=b-c;
pf=s.e;
If[Abs[pf]>0.01,
g=c+d*e;
t[d_]:=f[Part[g,1],Part[g,2]];
w=FindMinimum[t[d],{d,1,0,1}];
c=c+(d/.Part[w,2])e;
]
Print["c1=",c]
(* 得到初始点c1,将其替换c,运算后的结果继续代替C,直到w的绝对
值小于0.01为止。*) *)

抱歉!评论已关闭.