1.掌握Lingo软件中变量定界函数,集合循环函数和@IF(条件,true结果,false结果) 2. 熟悉运输问题的数学模型,掌握简单运输问题数学模型的Lingo软件编程求解的方法,掌握解报告的内容 3. 掌握整数规划、0-1规划和指派问题的计算机求解方法。 1.求解下面混合整数规划 min z=-3x1+4x2-2x3+5x4; 4x1-x2+2x3-x4=-2; x1+x2+3x3-x4≤14; -2x1+3x2-x3+2x4≥2; x1为整数,x2=0或1,x3≥0,x4无约束; 源程序: min=-3*x1+4*x2-2*x3+5*x4; 4*x1-x2+2*x3-x4=-2; x1+x2+3*x3-x4<=14; -2*x1+3*x2-x3+2*x4>=2; @GIN(x1); @BIN(x2); end 运算结果: Global optimal solution found. Objective value: 9.000000 Objective bound: 9.000000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 6 Variable Value Reduced Cost X1 0.000000 17.00000 X2 1.000000 -1.000000 X3 0.000000 8.000000 X4 1.000000 0.000000 Row Slack or Surplus Dual Price 1 9.000000 -1.000000 2 0.000000 5.000000 3 14.00000 0.000000 4 3.000000 0.000000 当x2=1,x4=1时,有最小值为9 2、有4种机械要分别装在4个工地,它们在4个工地的工作效率不同,问应如何指派安排,才能使4台机械发挥总的效率最大?效率表如下:
源程序: sets: men/1..4/:m; site/1..4/:t; link(men,site):c,x; endsets data: c=30 25 40 32 32 35 30 36 35 40 34 27 28 43 32 38; end data max=@sum(link(i,j):c(i,j)*x(i,j)); @for(men(i):@sum(site(j):x(i,j))=1); @for(site(j):@sum(men(i):x(i,j))=1); @for(link:@bin(x));!@bin表示的是0,1变量,是对题目的约束进行简化的有效函数; end 运算结果: Objective value: 154.0000 Objective bound: 154.0000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 0 Elapsed runtime seconds: 0.10 Model Class: MILP Total variables: 24 Nonlinear variables: 0 Integer variables: 16 Total constraints: 9 Nonlinear constraints: 0 Total nonzeros: 48 Nonlinear nonzeros: 0 Variable Value Reduced Cost M( 1) 0.000000 0.000000 M( 2) 0.000000 0.000000 M( 3) 0.000000 0.000000 M( 4) 0.000000 0.000000 T( 1) 0.000000 0.000000 T( 2) 0.000000 0.000000 T( 3) 0.000000 0.000000 T( 4) 0.000000 0.000000 C( 1, 1) 30.00000 0.000000 C( 1, 2) 25.00000 0.000000 C( 1, 3) 40.00000 0.000000 C( 1, 4) 32.00000 0.000000 C( 2, 1) 32.00000 0.000000 C( 2, 2) 35.00000 0.000000 C( 2, 3) 30.00000 0.000000 C( 2, 4) 36.00000 0.000000 C( 3, 1) 35.00000 0.000000 C( 3, 2) 40.00000 0.000000 C( 3, 3) 34.00000 0.000000 C( 3, 4) 27.00000 0.000000 C( 4, 1) 28.00000 0.000000 C( 4, 2) 43.00000 0.000000 C( 4, 3) 32.00000 0.000000 C( 4, 4) 38.00000 0.000000 X( 1, 1) 0.000000 -30.00000 X( 1, 2) 0.000000 -25.00000 X( 1, 3) 1.000000 -40.00000 X( 1, 4) 0.000000 -32.00000 X( 2, 1) 0.000000 -32.00000 X( 2, 2) 0.000000 -35.00000 X( 2, 3) 0.000000 -30.00000 X( 2, 4) 1.000000 -36.00000 X( 3, 1) 1.000000 -35.00000 X( 3, 2) 0.000000 -40.00000 X( 3, 3) 0.000000 -34.00000 X( 3, 4) 0.000000 -27.00000 X( 4, 1) 0.000000 -28.00000 X( 4, 2) 1.000000 -43.00000 X( 4, 3) 0.000000 -32.00000 X( 4, 4) 0.000000 -38.00000 Row Slack or Surplus Dual Price 1 154.0000 1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000 6 0.000000 0.000000 7 0.000000 0.000000 8 0.000000 0.000000 9 0.000000 0.000000 所以机器Ⅰ去丙工地,机器Ⅱ去丁工地,机器Ⅲ去甲工地,机器Ⅳ去乙工地 3. 现在要在五个工人中确定四个人来分别完成四项工作中的一项工作。由于每个工人的技术特长不同,他们完成各项工作所需的工时也不同。每个工人完成各项工作所需工时如下表所示,试找出一个工作分配方案,使总工时最小。
源程序: sets: men/1..5/:m; task/1..4/:t; link(men,task):c,x; endsets data: c=9 4 3 7 4 6 5 6 5 4 7 5 7 5 2 3 10 6 7 4; end data min=@sum(link(i,j):c(i,j)*x(i,j)); @for(men(i):@sum(task(j):x(i,j))<=1); @for(task(j):@sum(men(i):x(i,j))=1); @for(link:@bin(x));!@bin表示的是0,1变量,是对题目的约束进行简化的有效函数; end 运算结果: Global optimal solution found. Objective value: 14.00000 Objective bound: 14.00000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 0 Variable Value Reduced Cost M( 1) 0.000000 0.000000 M( 2) 0.000000 0.000000 M( 3) 0.000000 0.000000 M( 4) 0.000000 0.000000 M( 5) 0.000000 0.000000 T( 1) 0.000000 0.000000 T( 2) 0.000000 0.000000 T( 3) 0.000000 0.000000 T( 4) 0.000000 0.000000 C( 1, 1) 9.000000 0.000000 C( 1, 2) 4.000000 0.000000 C( 1, 3) 3.000000 0.000000 C( 1, 4) 7.000000 0.000000 C( 2, 1) 4.000000 0.000000 C( 2, 2) 6.000000 0.000000 C( 2, 3) 5.000000 0.000000 C( 2, 4) 6.000000 0.000000 C( 3, 1) 5.000000 0.000000 C( 3, 2) 4.000000 0.000000 C( 3, 3) 7.000000 0.000000 C( 3, 4) 5.000000 0.000000 C( 4, 1) 7.000000 0.000000 C( 4, 2) 5.000000 0.000000 C( 4, 3) 2.000000 0.000000 C( 4, 4) 3.000000 0.000000 C( 5, 1) 10.00000 0.000000 C( 5, 2) 6.000000 0.000000 C( 5, 3) 7.000000 0.000000 C( 5, 4) 4.000000 0.000000 X( 1, 1) 0.000000 9.000000 X( 1, 2) 0.000000 4.000000 X( 1, 3) 1.000000 3.000000 X( 1, 4) 0.000000 7.000000 X( 2, 1) 1.000000 4.000000 X( 2, 2) 0.000000 6.000000 X( 2, 3) 0.000000 5.000000 X( 2, 4) 0.000000 6.000000 X( 3, 1) 0.000000 5.000000 X( 3, 2) 1.000000 4.000000 X( 3, 3) 0.000000 7.000000 X( 3, 4) 0.000000 5.000000 X( 4, 1) 0.000000 7.000000 X( 4, 2) 0.000000 5.000000 X( 4, 3) 0.000000 2.000000 X( 4, 4) 1.000000 3.000000 X( 5, 1) 0.000000 10.00000 X( 5, 2) 0.000000 6.000000 X( 5, 3) 0.000000 7.000000 X( 5, 4) 0.000000 4.000000 Row Slack or Surplus Dual Price 1 14.00000 -1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000 6 1.000000 0.000000 7 0.000000 0.000000 8 0.000000 0.000000 9 0.000000 0.000000 10 0.000000 0.000000 所以:第一个工人做C任务,第二个工人做A任务,第三个工人做B任务,第四个工人做D任务 4. 完成课件中的小学设点问题。 作业1: 解:设:0--1变量 xi = 1 (第i 个备选校址被选用)或 0 (第i 个备选校址没被选用)。这样我们可建立如下的数学模型: Min z=x1+x2+x3+x4+x5+x6; x1+x2+x3>=1; x2+x4>=1; x3+x5>=1; x4+x6>=1; x1+x2+x3+x4>=1; x5+x6>=1; x1=1; 利用lingo模型求解源代码: min=x1+x2+x3+x4+x5+x6; x1+x2+x3>=1; x2+x4>=1; x3+x5>=1; x4+x6>=1; x1+x2+x3+x4>=1; x5+x6>=1; x1=1; Global optimal solution found. Objective value: 3.000000 Infeasibilities: 0.000000 Total solver iterations: 3 Elapsed runtime seconds: 0.07 Model Class: LP Total variables: 5 Nonlinear variables: 0 Integer variables: 0 Total constraints: 7 Nonlinear constraints: 0 Total nonzeros: 18 Nonlinear nonzeros: 0 Variable Value Reduced Cost X1 1.000000 0.000000 X2 0.000000 1.000000 X3 0.000000 0.000000 X4 1.000000 0.000000 X5 1.000000 0.000000 X6 0.000000 0.000000 Row Slack or Surplus Dual Price 1 3.000000 -1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 -1.000000 5 0.000000 -1.000000 6 1.000000 0.000000 7 0.000000 0.000000 8 0.000000 -1.000000 解答:至少建三个小学,校址代码为A、D、E。 5.完成课件中的篮球队员选拔问题。 某篮球队有8名队员,其身高和专长如下表,现要选拔5名球员上场参赛,要求: | ||||||||||||||||||||||||||||||||||||||||
解:设:0--1变量 xi = 1 (第i 个队员被选中)或 0 (第i 个队员没被选用)。这样我们可建立如下的数学模型: 利用lingo模型求解源代码: max=0.2*(1.92*x1+1.90*x2+1.88*x3+1.86*x4+1.85*x5+1.83*x6+1.80*x7+1.78*x8); x1+x2+x3+x4+x5+x6+x7+x8=5; x1+x2=1; x6+x7+x8>=1; x6<=x2; @bin(x1);@bin(x2);@bin(x3);@bin(x4);@bin(x5);@bin(x6);@bin(x7);@bin(x8); Global optimal solution found. Objective value: 1.864000 Objective bound: 1.864000 Infeasibilities: 0.000000 Extended solver steps: 0 Total solver iterations: 0 Elapsed runtime seconds: 0.05 Model Class: PILP Total variables: 8 Nonlinear variables: 0 Integer variables: 8 Total constraints: 5 Nonlinear constraints: 0 Total nonzeros: 23 Nonlinear nonzeros: 0 Variable Value Reduced Cost X1 0.000000 -0.3840000 X2 1.000000 -0.3800000 X3 1.000000 -0.3760000 X4 1.000000 -0.3720000 X5 1.000000 -0.3700000 X6 1.000000 -0.3660000 X7 0.000000 -0.3600000 X8 0.000000 -0.3560000 Row Slack or Surplus Dual Price 1 1.864000 1.000000 2 0.000000 0.000000 3 0.000000 0.000000 4 0.000000 0.000000 5 0.000000 0.000000 解答:应当选择2,3,4,5,6号队员上场,平均身高1.864。
|
整数规划模型的编程求解
于 2022-12-12 22:15:00 首次发布