实验二、利用Lingo求解整数规划及非线性规划问题
- 格式:ppt
- 大小:763.50 KB
- 文档页数:22
2012——2013学年第一学期合肥学院数理系实验报告课程名称:运筹学实验项目: LINGO软件求解整数规划问题实验类别:综合性□设计性□√验证性□专业班级: 10数学与应用数学(1)班姓名:学号:实验地点:实验时间:指导教师:成绩:一.实验目的1、学会使用LINGO 软件求解整数规划问题。
2、学会分析LINGO 软件求解的结果。
二.实验内容1、某班有男同学30人,女同学20人,星期天准备去植树。
根据经验,一天中,男同学平均每人挖坑20个,或栽树30棵,或给25棵树浇水,女同学平均每人挖坑10个,或栽树20棵,或给15棵树浇水。
问应怎样安排,才能使植树(包括挖坑、栽树、浇水)最多。
建立该问题的数学模型,并求其解。
2、求解线性规划:121212212max 2251228010,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 人,则该问题的数学模型建立如下:1212345614252536123456max 201030202010302030202515,,,,,0Z x x x x x x x x x x x x x x x xx x x x x x =+++=⎧⎪++=⎪⎪+=+⎨⎪+=+⎪⎪≥⎩且全为整数2、模型略3、设1=j x 表示第j 号队员上场,0=j x 表示第j 号队员不上场,其中,82,1,,⋯=j ,其中,j c 表示第j 号队员的身高,82,1,,⋯=j 。
一、 实验目的应用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求解整数规划在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。
⾮线性整数规划模型(LINGO代码实现)⾮线性整数规划模型LINGO讲解分析:第⼀步:确定决策变量问题是确定调运⽅案,使得总运输费⽤最⼩。
⽽总运输费⽤=货物运量*货物单价,题⽬给了货物单价了,我们求货物运量即可,这⾥的货物运量则是我们的决策变量。
第⼆步:确定⽬标函数和约束条件上图第⼀⾏就是我们的⽬标函数,下⾯三⾏是我们的约束条件,在满⾜约束条件的前提下,软件会不断遍历Xij所有可能的值,然后z也会根据Xij的变化⽽产⽣不同的值,这个时候⽤⼀个min函数取所有可能值当中的最⼩值,即可。
第三步:⽤LINGO代码实现model:title 最少运费问题;sets:!集合的定义,WH是集合的名字,W1..W6是集合的长度,⼀般写成1..6,相当于创建了⼀个能放六个元素的容器WH,是抽象的,是虚⽆的,是⼀种声明,告诉我们“:”后⾯的变量是⼀个什么类型的变量,显然,后⾯的AI是⼀个确确实实有六个数的数组,是具体的,是实在WH/W1..W6/:AI;!集合的名称、集合内的成员、集合的属性(可以看成是与改集合有关的变量或常量,相当与数组);VD/V1..V8/:DJ;links(WH,VD):C,X;!以WH和VD为基础,衍⽣集合。
相当于把两个向量结合在⼀起,形成⼀个⼆维数组,有⾏和列,C和X这两个变量是实在的具体的⼆维数组,只不过后⾯C我们赋值了,X是通过系统根据约束条件和⽬标函数⾃⼰赋值的;endsetsdata:!数据段;AI=60,55,51,43,41,52;DJ=35,37,22,32,41,32,43,38;C=6,2,6,7,4,2,5,94,9,5,3,8,5,8,25,2,1,9,7,4,3,37,6,7,3,9,2,7,12,3,9,5,7,2,6,55,5,2,2,8,1,4,3;enddatamin=@sum(links(I,J):c(i,j)*x(i,j)); !⽬标函数.links我们上线提到了,是⼀个6X8的集合名;@for(WH(i):@sum(VD(j):x(i,j))<=AI(I));!约束条件.@for⼀出,你就要知道这⼀⾏写的就是约束条件了;@for(vd(j):@sum(WH(i):x(i,j))=DJ(j));!约束条件.;end。
Lingo如何求解整数规划?Lingo求解整数规划的详细方法
导读:Lingo是一款功能非常强大的求解器,Lingo能有效的精准的求解线性、非线性和整数最优化,那么,Lingo如何求解整数规划呢?下面就是Lingo如何求解整数规划的方法步骤,一起往下看看吧!
方法步骤
1、打开lingo,这是它的主界面;
2、输入程序框架;
3、输入问题只需要按照图中的格式去写。
可以看到,lingo的编程语言与我们所学到的运筹学公式基本一致;
4、添加整数约束希望哪一个变量是整数,就在末尾加一行“@gin(变量);”就可以了;
5、得出结果点击图中的“solve”按钮;
6、查看结果解决后,会弹出一个窗口,向你显示目标函数值和每个变量的
取值。
问题解决。
以上就是Lingo如何求解整数规划的方法步骤,如果你不知道怎么在Lingo 求解整数规划的话,那就快点根据上面的方法步骤学起来吧!。
用LINGO 解线性规划和整数规划在工程技术、经济管理、科学研究和日常生活等许多领域中,人们经常遇到的一类决策问题是:在一系列客观或主观限制条件下,寻求使关注的某个或多个指标达到最大(或最小)的决策。
例如:★ 结构设计要在满足强度要求条件下选择材料的尺寸,使其总重量最轻; ★ 资源分配要在有限资源约束下制定各用户的分配数量,使资源产生的总效益最大;★ 运输方案要在满足物资需求和装载条件下安排从各供应点到各需求点的运量和路线,使运输总费用最低;★ 生产计划要按照产品工艺流程和顾客需求,制定原料、零件、部件等订购、投产的日程和数量,尽量降低成本使利润最高。
上述这种决策问题通常称为优化问题。
人们解决这些优化问题的手段大致有以下几种:1.依赖过去的经验判断面临的问题。
这似乎切实可行,并且没有太大的风险,但是其处理过程会融入决策者太多的主观因素,难以客观地加以描述,从而无法确认结果的最优性。
2.做大量的试验反复比较。
这固然比较真实可靠,但是常要花费太多的资金和人力,而且得到的最优结果基本上离不开开始设计的试验范围。
3.用数学建模的方法建立数学规划模型求解最优决策。
虽然由于建模时要作适当的简化,可能使得结果不一定完全可行或达到实际上的最优,但是它基于客观规律和数据,又不需要多大的费用,具有前两种手段无可比拟的优点。
如果在此基础上再辅之以适当的经验和试验,就可以期望得到实际问题的一个比较圆满的回答,是解决这种问题最有效、最常用的方法之一。
1.1.1 数学规划模型数学规划模型一般有三个要素:一是决策变量,通常是该问题要求解的那些未知量,不妨用n 维向量12n x (x ,x ,,x )'= 表示;二是目标函数,通常是该问题要优化(最小或最大)的那个目标的数学表达式,它是决策变量x的函数,这里抽象地记作f(x);三是约束条件,由该问题对决策变量的限制条件给出,即x允许取值的范围x∈Ω,Ω称可行域,常用一组关于x的不等式(也可是等式)g i(x)≤0(I=1,2,…,m)来界定。
实验课题:(一)线性规划问题1.用lingo求解下列线性规划问题:2. 某班男同学30人、女同学20人,植树。
工作效率(个/人、天)如下表。
如何安排,植树最多?3.某牧场饲养一批动物,平均每头动物至少需要 700g 蛋白质、30g 矿物质和100g 维生素。
现有A、B、C、D、E五种饲料可供选用,每千克饲料的营养成分(单位:g)与价格(单位:元/kg)如下表所示:试求能满足动物生长营养需求又最经济的选用饲料方案。
4.在以色列,为分享农业技术服务和协调农业生产,常常由几个农庄组成一个公共农业社区。
在本课题中的这个公共农业社区由三个农庄组成,我们称之为南方农庄联盟。
南方农庄联盟的全部种植计划都由技术协调办公室制订。
当前,该办公室正在制订来年的农业生产计划。
南方农庄联盟的农业收成受到两种资源的制约。
一是可灌溉土地的面积,二是灌溉用水量。
这些数据由下表给出。
注:英亩-英尺是水容积单位,1英亩-英尺就是面积为1英亩,深度为1英尺的体积;1英亩-英尺≈1233.48立方米。
南方农庄联盟种植的作物是甜菜、棉花和高粱,这三种作物的纯利润及耗水量不同。
农业管理部门根据本地区资源的具体情况,对本联盟农田种植规划制定的最高限额数据由下表给出。
三家农庄达成协议:各家农庄的播种面积与其可灌溉耕地面积之比相等;各家农庄种植何种作物并无限制。
所以,技术协调办公室面对的任务是:根据现有的条件,制定适当的种植计划帮助南方农庄联盟获得最大的总利润,现请你替技术协调办公室完成这一决策。
对于技术协调办公室的上述安排,你觉得有何缺陷,请提出建议并制定新的种植计划。
5.有一艘货轮,分前、中、后三个舱位,它们的容积与最大允许载重量如下表所示:前舱中舱后舱最大允许载重量(t)2000 3000 1000容积(m3)4000 5400 1000现有三种货物待运,已知有关数据如下表所示:商品数量(件)每件体积(m3/件)每件重量(t/件)运价(元/件)A 600 10 8 1000B 1000 5 6 700C 800 7 5 600又为了航运安全,要求前、中、后舱在实际载重量上大体保持各舱最大允许载重量的比例关系。