LINGO软件求解整数规划问题
- 格式:doc
- 大小:101.00 KB
- 文档页数:6
一、 实验目的应用lingo 软件实现线性规划和整数规划。
二、 实验内容:1.线性规划方法的lingo 软件实现。
2.整数规划方法的Lingo 软件实现三、 实验环境:1 硬件要求:计算机一台2 操作系统:WindowsXP3 软件要求:lingo10四、实验步骤及程序编写:1.线性规划模型。
某战略轰炸机群奉命摧毁敌人军事目标。
已知该目标有四个要害部位,只要摧毁其中之一即可达到目的。
为完成此项任务的汽油消耗量限制为48000升、重型炸弹48枚、轻型炸弹32枚。
飞机携带重型炸弹时每升汽油可飞行2千米,带轻型炸弹时每升汽油可飞行3千米。
又知每架飞机每次只能装载一枚炸弹,每出发轰炸一次除来回路程汽为了使摧毁敌方军事目标的可能性最大,应如何确定飞机轰炸的方案。
解:设用了x 枚重型炸弹,用了y 枚轻型炸弹,攻击的是第i 个部位,再设一标志变量f 定义如下: ⎩⎨⎧=个部位不攻击第个部位攻击第i i f i 01目标函数为: ()[]∑=⨯⨯+⨯=41max i i li ih f p y px()()480002004/3/2004/2/≤++⨯+++⨯i i i i d d y d d x48≤x ,32≤y141=∑=i if2、整数规划模型。
某厂生产甲、乙两种产品,生产甲种产品每件要消耗煤9t ,电力4kw ,使用劳动力3个,获利70元;生产乙种产品每件消耗煤4t ,电力5kw ,使用劳动力10个,获利120元。
有一个生产日,这个厂可动用的煤是360t ,电力是200kw ,劳动力是300个,问应该如何安排甲、乙两种产品的生产,才能使工厂在当日的获利最大,并问该厂当日的最大获利是多少? 解:模型建立:⎪⎪⎩⎪⎪⎨⎧<+<+<++=取整x x x x x x x x x x t s f 2121212121,3001032005436049..12070max五、程序调试及实验总结1.线性规划模型。
整数规划及Lingo 求解一、 概论1.1 整数规划的定义在工程设计和企业管理中,常常会遇到要求决策变量取整数值的规划问题。
安排生产时,投入的人力与机器数量必须是整数,生产的 某些产品(如汽车、机床、船舶等)的数量也是整数。
整数规划就是用于研究、处理这一类问题的数学规划。
如果在线性规划的基础上,把规划中的变量(部分或全部)限制为整数时,就称之为线性整数规划。
大部分的整数规划都是线性的所以我们也称线性整数规划为整数规划。
在许多情况下,我们都可以把规划问题的决策变量看成是连续的变量;但在某些情况下,规划问题的决策变量却被要求一定是整数。
例如,完成某项工作所需要的人数或设备台数,进入市场销售的商品件数,以及某一机械设备维修的次数等。
当连续的决策变量变为离散变量时非线性优化问题通常会难解得多。
但是应用软件就方便多了,本文给了Lingo 在规划中的常用方法和程序。
1.2 整数规划的分类在线性规划的基础上,要求所有变量都取整的规划问题称为纯整数规划问题;如果仅仅是要求一部分变量取整,则称为混合整数规划问题。
全部或部分决策变量只能取0,1值的规划问题称为10-规划问题。
1.3 整数规划的一般模型目标函数约束条件决策集 x 为整数如果用集合表示上面的式子目标函数: Cx =max(min)约束条件为: b Ax =例 1.1 飞船装载问题设有n 种不同类型的科学仪器希望装在登月飞船上, 令0>j c 表示每件第j 类仪器的科学价值;0>j a 表示每件第j 类仪器的重量。
每类仪器件数不限, 但装载件数只能是整数。
飞船总载荷不得超过数b 。
设计一种方案, 使得被装载仪器的科学价值之和最大。
建模 记j x 为第j 类仪器的装载数。
目标函数 ∑=j j x c m a x约束条件 ∑≤b x a j j决策集 j x 为正整数⎪⎪⎩⎪⎪⎨⎧≤+++≤+++≤+++m n mm m m n n n n k x a x a x a k x a x a x a k x a x a x a t s22112222212111212111..n n x c x c x c +++= 2211m ax (m in)二、 算法简介及应用举例2.1 解整数规划的一般算法通常解整数规划有三种方法,下面只介绍算法思想不具体讲解,在限制条件少的情况下分支定界法最为常用。
Lingo如何求解整数规划?Lingo求解整数规划的详细方法
导读:Lingo是一款功能非常强大的求解器,Lingo能有效的精准的求解线性、非线性和整数最优化,那么,Lingo如何求解整数规划呢?下面就是Lingo如何求解整数规划的方法步骤,一起往下看看吧!
方法步骤
1、打开lingo,这是它的主界面;
2、输入程序框架;
3、输入问题只需要按照图中的格式去写。
可以看到,lingo的编程语言与我们所学到的运筹学公式基本一致;
4、添加整数约束希望哪一个变量是整数,就在末尾加一行“@gin(变量);”就可以了;
5、得出结果点击图中的“solve”按钮;
6、查看结果解决后,会弹出一个窗口,向你显示目标函数值和每个变量的
取值。
问题解决。
以上就是Lingo如何求解整数规划的方法步骤,如果你不知道怎么在Lingo 求解整数规划的话,那就快点根据上面的方法步骤学起来吧!。
用LINGO求解整数规划在LINGO中,输入总是以model:开始,以end结束;中间的语句之间必须以“;”分开;LINGO不区分字母的大小写;目标函数用MAX=…;或MIN=…;给出(注意有等号“=”)。
在LINDO中所有的函数均以“@”符号开始,如约束中@gin(x1)表示x1为整数,用@bin(x1)表示x1为0-1整数。
在现在的LINDO中,默认设置假定所有变量非负。
函数中变量的界定:@GIN(X):限制X为整数@BIN(X):限定变量X为0 或1。
@FREE(X):取消对x的符号限制(即可取任意实数包括负数)@BND(L,X,U):限制L<= X <= ULINGO提供了大量的标准数学函数:@abs(x)???????????? 返回x的绝对值@sin(x)???????????? 返回x的正弦值,x采用弧度制@cos(x)???????????? 返回x的余弦值@tan(x)???????????? 返回x的正切值@exp(x)???????????? 返回常数e的x次方@log(x)???????????? 返回x的自然对数@lgm(x)???????????? 返回x的gamma函数的自然对数@sign(x)??????????? 如果x<0返回-1;否则,返回1@smax(x1,x2,…,xn)? 返回x1,x2,…,xn中的最大值@smin(x1,x2,…,xn)? 返回x1,x2,…,xn中的最小值例1:整数规划模型在LINGO中可以如下输入:model:Max=5*x1+8*x2;!*号不能省略x1+x2<=6;!约束条件和目标函数可以写在model:与end之间的任何位置5*x1<=45-9*x2;@gin(x1);@gin(x2); !和LINDO不同,不能写在end之后end运行后同样得到最优解为x1=0,x2=5,最优值为40。
例2:在线性规划中的应用max Z =5X1+3X2+6X3,s.t.X1 +2 X2 + X3 ≤182 X1 + X2 +3 X3 =16X1 + X2 + X3 =10X1 ,X2 ≥0 , X3 为自由变量应用LINGO 来求解该模型,只需要在 lingo窗口中输入以下信息即可:max=5*x1+3*x2+6*x3;x1+2*x2+x3<=18;2*x1+x2+3*x3=16;x1+x2+x3=10;@free(x3);然后按运行按钮,得到模型最优解,具体如下:Objective value: 46.00000Variable Value Reduced Costx1 14.00000 0.000000x2 0.000000 1.000000x3 -4 .000000 0.000000由此可知,当 x1 =14 , x2 =0 , x3 =-4 时,模型得到最优值,且最优值为 46。
(1) LINGO 软件介绍LINGO 是一种专门用于求解数学规划问题的软件包。
LINGO 主要用于求解线性规划、非线性规划、二次规划、动态规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。
LINGO 中包含了一种建模语言和大量的常用函数,可供使用者在建立数学规划问题的模型时调用。
(2) 示例例如,用LINGO 求解线性规划问题:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧==≥≥+≥+≥+≥+≥+++≥++++++++++=4,3,2,1;2,1,01002001100170010002000..153751511572521min 241423132212211124232221141312112423222114131211j i x x x xx x x x x x x x x x x x x t s x x x x x x x x z ij只需要打开LINGO ,然后按照下面的操作进行即可。
1、 模型的输入当打开LINGO 后,屏幕将出现如图1所示的窗口。
标题为“LINGO ”的窗口是主窗口,它包含所有的其他窗口以及所有命令菜单和工具栏。
里面的空白窗口用于输入LINGO 的程序代码,代码格式如下:MODEL:图1min=21*x11+25*x12+7*x13+15*x14+51*x21+51*x22+37*x23+15*x24; x11+x12+x13+x14>=2000; x21+x22+x23+x24>=1000; x11+x21>=1700;x12+x22>=1100;x13+x23>=200; x14+x24>=100; END2、 执行从Solve 菜单选择Solve 命令,或者在窗口顶部的工具栏里按Solve 按钮,LINGO 就会先对模型进行编译,检查模型是否具有数学意义以及是否符合语法要求。
如果模型不能通过这一步检查,会看到报错信息,并指出出错的语句。
2012——2013学年第一学期
合肥学院数理系
实验报告
课程名称:运筹学
实验项目: LINGO软件求解整数规划问题
实验类别:综合性□设计性□√验证性□专业班级: 10数学与应用数学(1)班
姓名:学号:
实验地点:
实验时间:
指导教师:成绩:
一.实验目的
1、学会使用LINGO 软件求解整数规划问题。
2、学会分析LINGO 软件求解的结果。
二.实验内容
1、某班有男同学30人,女同学20人,星期天准备去植树。
根据经验,一天中,
男同学平均每人挖坑20个,或栽树30棵,或给25棵树浇水,女同学平均每人挖坑10个,或栽树20棵,或给15棵树浇水。
问应怎样安排,才能使植树(包括挖坑、栽树、浇水)最多。
建立该问题的数学模型,并求其解。
2、求解线性规划:
121212
212max 2251228
010,Z x x x x x x x x x =++≥⎧⎪+≤⎪⎨
≤≤⎪⎪⎩全为整数
3、在高校篮球联赛中,我校男子篮球队要从8名队员中选择平均身高最高的出场阵容,队员的号码、身高及擅长的位置如右表:
同时,要求出场阵容满足以下条件: (1) 中锋最多只能上场一个。
(2)至少有一名后卫 。
(3)如果1号队员和4号队员都上场, 则6号队员不能出场
(4)2号队员和6号队员必须保留一个不出场。
问应当选择哪5名队员上场,才能使出场队员平均身高最高?
试写出上述问题的数学模型,并求解。
三. 模型建立
1、设需要男生挖坑1x 人,栽树2x 人,浇树3x 人;需要女生挖坑4x 人,栽树5x 人,
浇树5x 人,则该问题的数学模型建立如下:
12
12345614252536
123456max 201030202010302030202515,,,,,0Z x x x x x x x x x x x x x x x x
x x x x x x =+++=⎧⎪
++=⎪⎪
+=+⎨⎪+=+⎪⎪≥⎩且全为整数
2、模型略
3、设1=j x 表示第j 号队员上场,0=j x 表示第j 号队员不上场,其中,
82,1,,⋯=j ,其中,j c 表示第j 号队员的身高,82,1,,⋯=j 。
则该问题的数学模型为:
1188123456781267814626max (...)/5
511210112...8j z c x c x x x x x x x x x x x x x x x x x x x x j =+++++++++=⎧⎪+≤⎪⎪++≥⎪⎨
++≤⎪⎪+≤⎪
==⎪⎩或,,,,
其中,j c 表示第j 号队员的身高,82,1,,
⋯=j 。
四. 模型求解(含经调试后正确的源程序)
1、编写程序1.m 如下:
MAX =20*X1+10*X4; X1+X2+X3=30; X4+X5+X6=20;
20*X1+10*X4=30*X2+20*X5; 30*X2+20*X5=25*X3+15*X6; @GIN (X1); @GIN (X2); @GIN (X3); @GIN (X4);
@GIN(X6);
END
2、编写程序2.m如下:
MAX=X1+2*X2;
2*X1+5*X2>=12;
X1+2*X2<=8;
@bnd(0,X2,10);
@GIN(X1);
@GIN(X2);
END
3、编写程序3.m如下:
MAX=(1.92*X1+1.90*X2+1.88*X3+1.86*X4+1.85*X5+1.83*X6+1.80*X7+1.78*X8) /5;
X1+X2+X3+X4+X5+X6+X7+X8=5;
X1+X2<=1;
X6+X7+X8>=1;
X1+X4+X6<=2;
X2+X6<=1;
@BIN(X1);
@BIN(X2);
@BIN(X3);
@BIN(X4);
@BIN(X5);
@BIN(X6);
@BIN(X7);
@BIN(X8);
END
五.结果分析
1、结果为:
Global optimal solution found.
Objective value: 340.0000
Objective bound: 340.0000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 138
Variable Value Reduced Cost
X1 15.00000 -20.00000
X4 4.000000 -10.00000
X2 8.000000 0.000000
X3 7.000000 0.000000
Row Slack or Surplus Dual Price
1 340.0000 1.000000
2 0.000000 0.000000
3 0.000000 0.000000
4 0.000000 0.000000
5 0.000000 0.000000
最优解X*=(14,4,8,7,5,11) 最优值Z*=340 即安排15个男生、7个女生挖坑,4个男生、5个女生栽树,8个男生、11个女生浇水,总共栽树340棵2、结果为:
Global optimal solution found.
Objective value: 8.000000
Objective bound: 8.000000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 1
Variable Value Reduced Cost
X1 0.000000 -1.000000
X2 4.000000 -2.000000
Row Slack or Surplus Dual Price
1 8.000000 1.000000
2 8.000000 0.000000
3 0.000000 0.000000
最优解X*=(8,0) ,最优值Z*=8
3、结果为:
Global optimal solution found.
Objective value: 1.862000
Objective bound: 1.862000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
X1 1.000000 -0.3840000
X2 0.000000 -0.3800000
X3 1.000000 -0.3760000
X4 1.000000 -0.3720000
X5 1.000000 -0.3700000
X6 0.000000 -0.3660000
Row Slack or Surplus Dual Price
1 1.862000 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
最优解X*=(1,0,1,1,1,0,1,0) 最优值Z*=1.862 应选择1号3号4号5号7号球员入场比赛,此时平均身高1.862米
六.实验总结
通过此次实验,我进一步的掌握了LINGO软件的使用方法,让我了解到了如何使用LINGO软件求解整数规划问题。
让我们明白数学软件在数学计算中的重要性,所以我们更应该熟练地掌握数学软件的使用,这样在以后的实际应用中更能够方便、快速、准确的解决问题。
学生签名:
2012年 11 月 29 日。