整数规划与及Lingo .ppt
文本预览下载声明
使用LINDO的一些注意事项 “”(或“”)号与“=”(或“=”)功能相同 变量与系数间可有空格(甚至回车), 但无运算符 变量名以字母开头,不能超过8个字符 变量名不区分大小写(包括LINDO中的关键字) 目标函数所在行是第一行,第二行起为约束条件 行号(行名)自动产生或人为定义。行名以“)”结束 行中注有“!”符号的后面部分为注释。如: ! It’s Comment. 在模型的任何地方都可以用“TITLE” 对模型命名(最多72个字符),如: TITLE This Model is only an Example 使用LINDO的一些注意事项 变量不能出现在一个约束条件的右端 表达式中不接受括号“( )”和逗号“,”等任何符号, 例: 400(X1+X2)需写为400X1+400X2 表达式应化简,如2X1+3X2- 4X1应写成 -2X1+3X2 缺省假定所有变量非负;可在模型的“END”语句后用“FREE name”将变量name的非负假定取消 可在 “END”后用“SUB” 或“SLB” 设定变量上下界 例如: “sub x1 10”的作用等价于“x1=10” 但用“SUB”和“SLB”表示的上下界约束不计入模型的约束,也不能给出其松紧判断和敏感性分析。 14. “END”后对0-1变量说明:INT n 或 INT name 15. “END”后对整数变量说明:GIN n 或 GIN name [注意]二次规划(QP)问题 LINDO可求解二次规划(QP)问题,但输入方式较复杂,因为在LINDO中不许出现非线性表达式 需要为每一个实际约束增加一个对偶变量(LAGRANGE乘子),在实际约束前增加有关变量的一阶最优条件,转化为互补问题 “END”后面使用QCP命令指明实际约束开始的行号,然后才能求解 建议总是用LINGO解QP [注意]对QP和IP: 敏感性分析意义不大 帆船生产问题 某公司需要决定下四个季度的帆船生产量。下四个季度的帆船需求量分别是40条,60条,75条,25条,这些需要必须按时满足。每个季度正常的生产能力是40条帆船,每条船的生产费用为400美金。如果加班生产,每条船的生产费用为450美金。每个季度末,每条船的库存费用为20美金。假定生产提前期为0,初始库存为10条船。如何安排生产可使总费用最小? 求解分析: 我们用DEM,RP,OP,INV分别表示需求量、正常生产的产量、加班生产的产量、库存量。 这里DEM已知,RP,OP,INV是未知数,需要求解。 模型的求解(LINDO求解): MIN 400 RP(1) + 450 OP(1) + 20 INV(1) + 400 RP(2) + 450 OP(2)+ 20 INV(2) + 400 RP(3) + 450 OP(3) + 20 INV(3) + 400 RP(4)+ 450 OP(4) + 20 INV(4) SUBJECT TO RP(1) =40 RP(2) =40 RP(3) =40 RP(4) =40 - INV(1) - RP(2) - OP(2) + INV(2) =-60 - INV(2) - RP(3) - OP(3) + INV(3) =-75 - INV(3) - RP(4) - OP(4) + INV(4) =-25 -RP(1) - OP(1) + INV(1) =- 30 END LINGO求解如下: MODEL: SETS: QUARTERS/1,2,3,4/:DEM,RP,OP,INV; ENDSETS MIN=@SUM(QUARTERS:400*RP+450*OP+20*INV); @FOR(QUARTERS(I):RP(I)=40); @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I);); INV(1)=10+RP(1)+OP(1)-DEM(1); DATA: DEM=40 60 75 25; ENDDATA END 如果最初的库存可以键盘输入 MODEL: SETS: QUARTERS/1,2,3,4/:DEM,RP,OP,INV; ENDSETS MIN=@SUM(QUARTERS:400*RP+450*OP+20*INV); @FOR(QUARTERS(I):RP(I)40); @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I);); INV(1)=A+RP
显示全部