线性规划——LINGO 程序集 向浩 2011-7-20 程序一: Model: Max= 4.8*x11 + 4.8*x21 + 5.6*x12 + 5.6*x22 - 10*x1 - 8*x2 - 6*x3; x11+x12 < x + 500; x21+x22 < 1000; 0.5*x11 - 0.5*x21 > 0; 0.4*x12 - 0.6*x22 > 0; x=x1+x2+x3; (x1 - 500) * x2=0; (x2 - 500) * x3=0; @bnd(0,x1, 500); @bnd(0,x2, 500); @bnd(0,x3,500); End 程序二: Model: SETS: Points/1..4/: b, c, y, z; ! 端点数为 4,即分段数为 3; ENDSETS DATA: b=0 500 1000 1500; c=0 5000 9000 12000; y=,,,0; ! 增加的虚拟变量 y(4)=0; ENDDATA Max= 4.8*x11 + 4.8*x21 + 5.6*x12 + 5.6*x22 - @sum(Points: c*z); x11+x12 < x + 500; x21+x22 < 1000; 0.5*x11 - 0.5*x21 > 0; 0.4*x12 - 0.6*x22 > 0; @sum(Points: b*z)=x; @for(Points(i)|i#eq#1: z(i) <= y(i)); @for(Points(i)|i#ne#1: z(i) <= y(i-1)+y(i)); @sum(Points: y)=1; @sum(Points: z)=1; @for(Points: @bin(y)); End 程序三: MODEL: TITLE 瓶颈设备的多级生产计划; ! 从文本文件 exam0502.LDT 中读取数据; SETS: ! PART = 项目集合, Setup = 生产准备费,Hold = 单件库存成本, A = 对瓶颈资源的消耗系数; PART/ @FILE( 'F:\lindo\lindo 书\ch05\exam0502.LDT')/ : Setup, Hold, A; ! TIME = 计划期集合,Capacity = 瓶颈设备的能力; TIME / @FILE( 'F:\lindo\lindo 书\ch05\exam0502.LDT')/ : Capacity; ! USES = 项目结构关系,Req = 项目之间的消耗系数; USES( PART, PART) : Req; ! PXT = 项目与时间的派生集合,Demand = 外部需求, X = 产量(批量), Y = 0/1 变量,INV = 库存; PXT( PART, TIME): Demand, X, Y, Inv; ENDSETS ! 目标函数; [OBJ] Min = @sum(PXT(i,t): setup(i)*Y(i,t) + hold(i)*Inv(i,t) ); ! 物流平衡方程; @FOR( PXT(i, t) | t #NE# 1 : [Bal] Inv(i,t-1)+X(i,t)-Inv(i,t) = Demand(i, t) + @SUM( USES(i,j): Req(i,j)*X(j,t)) ); @FOR( PXT(i, t) | t #eq# 1 : [Ba0] X(i,t)-Inv(i,t) = Demand(i, t) + @SUM( USES(i,j): Req(i,j)*X(j,t)) ); ! 能力约束; @FOR( TIME(t): [Cap] @SUM( PART(i): A(i)*X(i,t...