用lingo求解数学规划模型实例
用Lingo求解整数(0-1)规划模型
1、建立数学模型, 2、用lingo循环语句编写程序.
上机作业题 人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一
定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
班次
时间段
人数 班次
时间段
人数
1
6:00~9:00
例 4 求函数 z x 22 y 22 的最小值.
例 4 求函数 z x 22 y 22 的最小值.
解: 编写Lingo 程序如下:
min=(x+2)^2+(y-2)^2; @free(x); 求得结果: x=-2, y=2
二、Lingo 循环编程语句
(1) 集合的定义 包括如下参数: 1) 集合的名称.
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6:人员选拔问题
队员号码 身高 / m 位置 队员号码 身高 / m 位置
例 2 用Lingo软件求解整数规划问题
min z 2 x1 5 x2 3 x3
4 x1 x2 x3 0
2
x1
4 x2
2 x3
2
x1
x2
x3
2
xi 0 且取整数, i 1, 2, 3
Lingo 程序:
min=2*x1+5*x2+3*x3; -4*x1-x2+x3>=0; -2*x1+4*x2-2*x3>=2; x1-x2+x3>=2; @gin(x1);@gin(x2);@gin(x3);
Lingo超经典案例大全
Lingo超经典案例大全LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”。
Lingo超强的优化计算能力在很多方面(线性规划、非线性规划、线性整数规划、非线性整数规划、非线性混合规划、二次规划等)比matlab、maple等强得多,Lingo 编程简洁明了,数学模型不用做大的改动(或者不用改动)便可以直接采用Lingo语言编程,十分直观。
Lingo模型由4个段构成:(1)集合段(sets endsets);(2)数据段(data enddata);(3)初始段(init endinit);(4)目标与约束段。
Lingo的五大优点:1. 对大规模数学规划,LINGO语言所建模型较简洁,语句不多;2. 模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,如果在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;3. 数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变;4. “集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。
5. 使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.一、求解线性整数规划、非线性整数规划问题:1.线性整数规划:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);end求得x1=3,x2=1,最大值为4.运用matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。
通过验证也可知这两组解均满足。
数学建模0-1规划及LINGO程序模板
数模练习一某手机运营商准备在一个目前尚未覆盖的区域开展业务,计划投资5000万元来建设中继站。
该区域由15个社区组成,有7个位置可以建设中继站,每个中继站只能覆盖有限个社区。
图1.1.1是该区域的示意图,每个社区简化为一个多边形,每个可以建设中继站的位置已用黑点标出。
由于地理位置等各种条件的不同,每个位置建设中继站的费用也不同,且覆盖范围也不同。
表1.1.2中列出了每个位置建设中继站的费用以及能够覆盖的社区,表1.1.3列出了每个社区的人口数。
表1.1.2 每个位置建设中继站的费用及所能覆盖的社区位置 1 2 3 4 5 6 7 费用(百万元)9 6.5 20 14.51913 10.5 覆盖社区1,2,42,3,54,7,8,15,6,8,98,9,127,10,11,12,1512,13,14,15表1.1.3 每个社区的人口数量社区 1 2 3 4 5 6 7 8910 11 12 13 14 15人口(千人)2413694812 10 11614936问题一:在不超过5000万建设费用的情况下,在何处建设中继站,能够覆盖尽可能多的人口;问题二:考虑到中继站出现故障维修的时候可能会出现所覆盖的社区信号中断等问题,为此对通讯资费进行了调整,规定,仅有一个中继站信号覆盖的小区通讯资费按正常资费的70%收取,有两个或两个以上中继站信号覆盖的小区的通讯资费按正常收取,针对于5000万元的预算,应该如何建设中继站,才能够使得资费的收入达到最大。
问题分析: 问题一,图1.1.11234567891011121314151234567决策变量:为整数)(处建设中继站,位置处不建设中继站,位置i i i i X i ,7110≤≤⎩⎨⎧= 目标函数:},max{··},,max{·},max{·},max{},max{·.},max{··},max{},max{761571471376512611631054954867464253423212311X X y X y X y X X X y X y X X y X X y X X y X y X y X X y X y X y X X y X X y MAX +++++++⋅++++++⋅+⋅=约束条件:5071≤⋅∑=i i i f X用LINGO 软件编程求解,程序如下:sets :positi o n/1..7/:x,f; societ y /1..15/:r;endset s data :r=2 4 13 6 9 4 8 12 10 11 6 14 9 3 6; f=9 6.5 20 14.5 19 13 10.5; enddat amax =r(1)*@smax (x(1),x(3))+r(2)*@smax (x(1),x(2))+r(3)*x(2)+r(4)*x(3)+r(5)*@smax (x(2),x(4))+r(6)*x(4)+r(7)*x(6)+r(8)*@smax (x(4),x(5))+r(9)*@smax (x(4),x(5))+r (10)*@smax (x(3),x(6))+r(11)*x(6)+r(12)*@smax (x(5),x(6),x(7))+ r(13)*x(7)+r(14)*x(7)+r(15)*@smax (x(6),x(7)); @for (positi o n(i):@bin (x));@sum (positi o n(i):x(i)*f(i))<=50; !@max 和@smax 是不同的。
用Lingo求解整数(0-1)规划模型.
Lingo 程序: max=2*x1+5*x2+3*x3+4*x4;
-4*x1+x2+x3+x4>=0; -2*x1+4*x2+2*x3+4*x4>=1; x1+x2-x3+x4>=1; @bin(x1);@bin(x2);@bin(x3);@bin(x4);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
运用Lingo进行线性规划求解(实例)
LinDo
输入模型 求解
点击求解按钮 结果
即可
♂返回
!注释内容,可用中文
输
!目标函数:最大-max,最小-min,大小写不分
max 3 x1+5 x2+4 x3
入
!约束,以subject to开始
模
subject to
型
2 x1+3 x2<=1500
2 x2+4 x3<=800
3*x1+2*x2+5*x3<=2 000; end
注意与LinDo的区别
目标函数中加等号 变量与系数之间用“*” Model:-end可省略
♂返回
LinGo 模 式
Model: Sets: !定义集合
Endsets
Data:
!定义数据
Enddata 调用函数与计算
end
♂返回
model: !开始
数
@sum(set(set_index_list)|condition:expressi
on)
@min(max)(set(set_index_list)|condition:ex pression)
♂返回
Global optimal solution found at
iteration:
3
结
Objective value: 2675.000
果
Variable Value
Reduced Cost
C( 1) 3.000000
0.000000
C( 2) 5.000000
0.000000
C( 3) 4.000000
0.000000
用LINGO求解线性规划的例子
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A1,或者在设备乙上用8小时加工成4公斤A2。
根据市场需求,生产的A1、A2能全部售出,且每公斤A1获利24元,每公斤A2获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为480小时,并且设备甲每天至多能加工100公斤A1,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资?若投资,每天最多购买多少桶牛奶?2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?数学模型:设每天用x1桶牛奶生产A1 ,用x2桶牛奶生产A2目标函数:设每天获利为z元。
x1桶牛奶可生产3x1公斤A1,获利24*3x1,x2桶牛奶可生产4*x2公斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100非负约束:x1、x2均不能为负值,即x1≥0,x2≥0综上所述可得max z=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN 开始,按线性规划问题的自然形式输入(见下面例子所示)。
运用Lingo进行线性规划求解(实例)
LINGO
支持多种线性规划算法,包括单纯形法、网络算法等。
要点二
Gurobi
主要采用高级优化算法,如分支定界法、动态规划等。
LINGO与Gurobi的比较
LINGO
支持各种类型的约束条件,包括整数约束、非线性约束 等。
Gurobi
特别擅长处理大规模、非线性问题,但对线性问题的处 理能力稍弱。
LINGO
界面简洁,建模语言直观,易于学习和掌握。
Excel
需要结合多个函数和工具进行建模,对于复杂问题操作相对繁琐。
LINGO与Excel的比较
LINGO
针对优化问题进行了优化,求解速度 较快,精度较高。
Excel
求解速度较慢,对于大规模问题可能 无法得到满意的结果。
LINGO与Gurobi的比较
LINGO软件特点
高效求解
LINGO采用先进的求解算法,能够快速求解大规 模线性规划问题。
灵活建模
LINGO支持多种建模语言,用户可以根据需要选 择合适的语言进行建模。
图形界面
LINGO提供直观的图形界面,方便用户进行模型 设计和结果查看。
LINGO软件应用领域
生产计划
LINGO可用于制定生产计划,优化资源配置, 提高生产效率。
金融投资
LINGO可以用于金融投资组合优化,帮助投 资者实现风险和收益的平衡。
物流优化
LINGO可以帮助企业优化物流配送路线,降 低运输成本。
资源分配
LINGO可用于资源分配问题,如人员、设备、 资金的分配,以达到最优效果。
2023
PART 02
线性规划基本概念
REPORTING
线性规划定义
线性规划是数学优化技术的一种,它通过将问 题抽象为数学模型,利用数学方法来寻找最优 解。
用lingo求解规划问题实例
用lingo求解规划问题实例用Lingo求解规划问题实例问题一:某公司打算向它的3个营业区增设6个销售店,每个营业区至少增设一个。
从各区赚取的利润与增设的销售店个数有关,其数据如下表所示。
试求各区应分配几个增设的销售店,才能使总利润最大。
销售点增加数 0 1 2 3 4A区利润/万元 100 200 280 330 340B区利润/万元 200 210 220 225 230C区利润/万元 150 160 170 180 200分析:要设置集合zone/A,B,C/,表示三个地区。
因为获得的利润与地区和各地的销售点增加数均相关,所以可以仿照运输模型,用number/1..4/表示每个地区可选的销售点增加数,1,在i地区新增j个销售点,然后用一个派生集links(zone,number):c,profit,定义 c,,ij0,其他,profit(i,j)为在i地区新增j个销售点能获得的利润。
可写出约束条件为:4, c,1i,1,2,3,ijj,1c,0或1 ij34cj,6 ,,ijij,,11所求函数为max=@sum(links:c*profit);Lingo程序如下:model:sets:zone/A,B,C/; !A,B,C三个地区;number/1..4/; !各地区可选择新建的销售点数目,可选1~4中的一个数,通过links把zone和number联系起来;links(zone,number):c,profit; !若在i地区新建j个销售点,则c(i,j)=1,否则c(i,j)=0.profit(i,j)表示在i地区新建j个销售点的利润; endsets data:profit=200 280 330 340210 220 225 230160 170 180 200;enddatamax=@sum(links:c*profit);@for(zone(I):@sum(number(J):c(I,J))=1); !对于每一个地区,新建销售点的数目是一定的,c的和为1;@sum(zone(I):@sum(number(J):c(I,J)*J))=6; !三个地区新建的销售点总数为6;@for(links(i,j):@bin(c(i,j))); !每一个c(i,j)只能取0或1;end用Lingo求解,结果如下:Global optimal solution found.Objective value: 710.0000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostC( A, 1) 0.000000 -200.0000C( A, 2) 0.000000 -280.0000C( A, 3) 1.000000 -330.0000C( A, 4) 0.000000 -340.0000C( B, 1) 1.000000 -210.0000C( B, 2) 0.000000 -220.0000C( B, 3) 0.000000 -225.0000C( B, 4) 0.000000 -230.0000C( C, 1) 0.000000 -160.0000C( C, 2) 1.000000 -170.0000C( C, 3) 0.000000 -180.0000C( C, 4) 0.000000 -200.0000 则在A,B,C区域应分别新增3,1,2个销售点,可获得的最大利润为710万元。
Lingo超经典案例大全
Lingo超经典案例大全LINGO是Linear Interactive and General Optimizer的缩写,即“交互式的线性和通用优化求解器”。
Lingo超强的优化计算能力在很多方面(线性规划、非线性规划、线性整数规划、非线性整数规划、非线性混合规划、二次规划等)比matlab、maple等强得多,Lingo编程简洁明了,数学模型不用做大的改动(或者不用改动)便可以直接采用Lingo语言编程,十分直观。
Lingo模型由4个段构成:(1)集合段(sets endsets);(2)数据段(data enddata);(3)初始段(init endinit);(4)目标与约束段。
Lingo的五大优点:1. 对大规模数学规划,LINGO语言所建模型较简洁,语句不多;2. 模型易于扩展,因为@FOR、@SUM等语句并没有指定循环或求和的上下限,如果在集合定义部分增加集合成员的个数,则循环或求和自然扩展,不需要改动目标函数和约束条件;3. 数据初始化部分与其它部分语句分开,对同一模型用不同数据来计算时,只需改动数据部分即可,其它语句不变;4. “集合”是LINGO有特色的概念,它把实际问题中的事物与数学变量及常量联系起来,是实际问题到数学量的抽象,它比C语言中的数组用途更为广泛。
5. 使用了集合以及@FOR、@SUM等集合操作函数以后可以用简洁的语句表达出常见的规划模型中的目标函数和约束条件,即使模型有大量决策变量和大量数据,组成模型的语句并不随之增加.一、求解线性整数规划、非线性整数规划问题:1.线性整数规划:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);end求得x1=3,x2=1,最大值为4.运用matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。
通过验证也可知这两组解均满足。
附1:用LINGO求解线性规划的例子 一奶制品加工厂用牛奶生产A1、A2
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A、A两种奶制品,1桶牛奶可以在设备甲上用12小时加工成3公斤A,121或者在设备乙上用8小时加工成4公斤A。
根据市场需求,生产的A、A能全部售出,且每公斤A获利212124元,每公斤A获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间为4802 小时,并且设备甲每天至多能加工100公斤A,设备乙的加工能力没有限制。
试为该厂制定一个生产计划,1使每天获利最大,并进一步讨论以下3个附加问题:1)若用35元可以购买到1桶牛奶,应否作这项投资,若投资,每天最多购买多少桶牛奶,2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元,3)由于市场需求变化,每公斤A的获利增加到30元,应否改变生产计划, 1数学模型:设每天用x桶牛奶生产A1 ,用x桶牛奶生产A2 12目标函数:设每天获利为z元。
x桶牛奶可生产3x公斤A1,获利24*3x,x桶牛奶可生产4*x公11122斤A2,获利16*4x,故z=72x+64x212约束条件:原料供应:生产A、A的原料(牛奶)总量不超过每天的供应50桶,即 12x+x?50 12劳动时间:生产A、A的总加工时间不超过每天正式工人总的劳动时间480小时,即 1212x+8x?480 12设备能力:A的产量不得超过设备甲每天的加工能力100小时,即 13x?100 1非负约束:x、x均不能为负值,即x?0,x?0 2121综上所述可得max z=72x+64x 12s.t.x+x?50 1212x+8x?480 123x?100 1x?0,x?0 21显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
用lingo求解数学规划模型实例
问题一:若该公司只经营一日游业务,只选择小型船,应如何 规划旅游线路? 问题二:若该公司只经营一日游业务,可同时选择小型船和大 型船,应如何规划旅游线路? 问题三:若该公司同时经营一日游、二日游业务,只选择小型 船,应如何规划旅游线路? 问题四:若该公司同时经营一日游、二日游业务,可同时选择 小型船和大型船,应如何规划旅游线路?
a=60,55,51,43,41,52; b=35,37,22,32,41,32,43,38; c=6,2,6,7,4,2,5,9,4,9,5,3,8,5,8,2,5,2,1,9,7,4,3, 3,7,6,7,3,9,2,7,1,2,3,9,5,7,2,6,5,5,5,2,2,8,1,4,3;
@text()=@table(x); enddata
例2 (指派问题)九种不同型号的装备配给9个部队, 由于各部队的特点与条件不同,不同的装备在不同部队 中产生效能不同,问如何分配可保证每个部队各分得一 种装备,且使总效能最大(装备在不同部队的效能见下表)。
装备 部队 1 2 3 4 5 6 7.31 0.49 0.63 0.45 0.45 0.32 0.33
9
sets: max aij xij army/ar1..ar9/; i 1 j1 equi/eq1..eq9/; 9 link(army,equi):a,x; xij 1 endsets i 1 [obj]max=@sum(link:a*x); 9 @for(equi(i):@sum(army(j):x(i,j))=1); xij 1 @for(army(j):@sum(equi(i): x(i,j))=1); j 1 @for(link: @bin(x)); xij=0或1 data: a=@file(F:\数学软件\lingoli\dali002.txt); ( i, j=1,2,…,9) @text(F:\数学软件 \lingoli\li002.txt )=@table(x); enddata
用LINGO解决非线性规划问题
注意比较:
当去掉第二个约束条件y<=0.5时,最小值 为-3 当x=0, y=1时;
当去掉所有约束条件无条件最值时,最小
值为-5 当x=1, y=2时;
15
三、用LINGO解决非线性规划问题
例3 求解非线性规划问题:
16
三、用LINGO解决非线性规划问题
17
三、用LINGO解决非线性规划问题
18
X1+ 3X2<=18;
X1,X2为决策变量;
2X1+ X2<=16;
4X2<=20; 第二到四行均为约束条件
8
二、用LINGO解决基本的线性规划问题
我们编辑程序并求解后,得到LINGO Model窗口、 Solution report窗口和Solver status窗口如下:
9
二、用LINGO解决基本的线性规划问题
6
二、用LINGO解决基本的线性规划问题
例1 求解如下的线性规划模型:
m ax z 50 x1 70 x2 ,
x1 3 x2 1 8,
2 x 1 x 2 1 6 ,
4x2 20,
x 1 , x 2 0
7
二、用LINGO解决基本的线性规划问题
我们编辑一个LINGO程序:
MAX=50X1+70X2; 目标函数;
三、用LINGO解决非线性规划问题
例4 求解二次规划问题:
直接使用LINGO最大化过程:
max=98x1+277x2-x1^2-0.3x1x2-2x2^2; x1 + x2 <= 100; x1 <= 2x2; ginx1;ginx2;
19
三、用LINGO解决非线性规划问题
Lingo软件编程求解规划问题数学建模
例2——军队供给问题
用Lingo软件求解
结果
Lingo软件
Lingo 是一个可以简洁地阐述、解决和分析复杂问题的简便工具。
其特点是程序执行速度很快,易于输入、修改、求解和分析一个数 学规划问题。
LINGO模型的构成:4个段
• 集合段(SETS ENDSETS) • 目标与约束段 • 数据段(DATA ENDDATA) • 初始段(INIT ENDINIT)
用Lingo软件求解
求 z 72 x1 64 x2的最大值?
x1 x2 50
12
x1 8x2 480 3x1 100
x1 0
x2 0
Lingo结果中其它项的意思! 更多信息
例 1 求 f = 2ex sin x 在 0<x<8 中的最小值与最大值
max=@sin(x)*2*@exp(-x); x<8; x>0;
获利24元/公斤 获利16元/公斤
每天: 50桶牛奶 时间480小时 至多加工100公斤A1
例1——加工奶制品的生产计划
1桶牛 奶或
12小时 8小时
3公斤A1 4公斤A2
每天:50桶牛奶 时间480小时
获利24元/公斤 获利16元/公斤 至多加工100公斤A1
决策变量 目标函数
约束条件
x1桶牛奶生产A1 获利 24×3x1 每天获利 原料供应 劳动时间 加工能力 非负约束
x2桶牛奶生产A2 获利 16×4 x2
Max z 72 x1 64 x2
x1 x2 50
12 x1 8x2 480 3x1 100
x1, x2 0
线性规 划模型 (LP)
例1——加工奶制品的生产计划
x1 x2 50
LINGO模型实例及求解
LINGO求解整数非线性规划模型
Local optimal solution found at
iteration: 12211
Objective value:
28.00000
Variable Value Reduced Cost
X1 10.00000
0.000000
X2 10.00000
2.000000
当余料没有用处时,通常以总根数最少为目标
钢管下料问题2
增加一种需求:5米10根;切割模式不超过3种。
现有4种需求:4米50根,5米10根,6米20根,8米 15根,用枚举法确定合理切割模式,过于复杂。
对大规模问题,用模型的约束条件界定合理模式
决策变量 (15维) xi ~按第i 种模式切割的原料钢管根数(i=1,2,3) r1i, r2i, r3i, r4i ~ 第i 种切割模式下,每根原料钢管 生产4米、5米、6米和8米长的钢管的数量
每根原料钢管切割成2某人打算外出旅游并登山路程比较远途中要坐火车和飞机考虑要带许多必要的旅游和生活用品例如照相机摄像机食品衣服雨具书籍等等共n件物品重量分别为a而受航空行李重量限制以及个人体力所限能带的行李总重量为bn件物品的总重量超过了b需要裁减该旅行者为了决策带哪些物品对这些物品的重要性进行了量化用c表示试建立该问题的数学模型
4 x1 3 x22 x3x4x550最优解:x2=15,
x22x4x53x620 x5=5, x7=5,
x3x52x715
其余为0;
xi 为整数
最优值:25。
按模式2切割15根, 与目标1的结果“共切割
按模式5切割5根, 27根,余料27米” 相比
按模式7切割5根, 共25根,余料35米 虽余料增加8米,但减少了2根
利用LINGO软件解决数学建模问题
LINDO:
Max x1+x2+x3+x4 ST(大写或写subject to) x5+x6+x7+x8>=250000 x1+x5<=380000 x2+x6<=265200 x3+x7<=408100 x4+x8<=130100 2.85*x1-1.42*x2+4.27*x318.49*x4>=0; 2.85*x5-1.42*x6+4.27*x718.49*x8>=0; 16.5*x1+2.0*x2-4.0*x3+17*x4>=0; 7.5*x5-7.0*x6-13.0*x7+8.0*x8>=0; end
2) 0.000000 3) 0.000000 4) 0.000000 5) 0.000000 6) 0.000000 7) 0.000000 8) 43454.000000 9) 3239024.250000 10) 1890675.875000
-1.000000 1.000000 1.000000 1.000000 1.000000 0.000000 0.000000 0.000000 0.000000
表2
飞机汽油 1 2 辛烷数 >=91 >=100 蒸汽压力(g/cm^2) <=9.96*10^(-2) <=9.96*10^(-2) 产量需求(L) 越多越好 >=250000
建模过程略(详见《运筹学基础》P54—55) 目标函数:max z=x1+x2+x3+x4 约束条件:x5+x6+x7+x8>=250000 x1+x5<=380000 x2+x6<=265200 x3+x7<=408100 x4+x8<=130100 2.85x1-1.42x2+4.27x3-18.49x4>=0 2.85x5-1.42x6+4.27x7-18.49x8>=0 16.5x1+2.0x2-4.0x3+17x4>=0 7.5x5-7.0x6-13.0x7+8.0x8>=0 xj>=0(j=1,2...,8)
lingo例题
例1.1.1某工厂有两条生产线,分别用生产M 和P 两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M 产品需要1个劳动日(1个工人工作8小时成为1个劳动日)进行调试、检测等工作,而每个P 产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?解:设两种产品的生产量分别为1x 和2x ,则目标函数 12max 200300z x x =+约束条件 1212100,120,2160,0,1,2.i x x x x x i ≤⎧⎪≤⎪⎨+≤⎪⎪≥=⎩ 例1.1.2 基金的优化使用(2001年数学建模竞赛C 题)假设某校基金会得到了一笔数额为M 万元的基金,打算将其存入银行,校基金会计划在n 年末仍保留原基金数额.银行存款税后利率见表元,5n =年的情况下设计具体存款方案.解:分析:假定首次发放奖金的时间是在基金到位后一年,以后每隔一年发放一次,每年发放的时间大致相同,校基金会希望获得最佳的基金使用计划,以提高每年的奖金额,且在n 年末仍保留原基金数额M ,实际上n 年中发放的奖金额全部来自于利息。
如果全部基金都存为一年定期,每年都用到期利息发放奖金,则每年的奖金数为50000.01890⨯=万元,这是没有优化的存款方案。
显然,准备在两年后使用的款项应当存成两年定期,比存两次一年定期的收益高,以此类推。
目标是合理分配基金的存款方案,使得n 年的利息总额最多。
定义:收益比a =(本金+利息)/本金。
于是存2年的收益比为21 2.16%2 1.0432a =+⨯=。
按照银行存款税后利率表计算得到各存款年限对应的最优收益比见表(1) 一次性存成最长期,优于两个(或两个以上)比较短期的组合(中途转存)(2) 当存款年限需要组合时,收益比与组合的先后次序无关。
建立模型 把总基金M 分成5+1份,分别用123456,,,,,x x x x x x 表示,其中12345,,,,x x x x x 分别存成15 年定期,到期后本息合计用于当年发放奖金,6x 存5年定期,到期的本息合计等于原基金总数M 。
lingo求解多目标规划--例题
实验二:目标规划一、实验目的目标规划是由线性规划发展演变而来的,线性规划考虑的是只有一个目标函数的问题,而实际问题中往往需要考虑多个目标函数,这些目标不仅有主次关系,而且有的还相互矛盾。
这些问题用线性规划求解就比较困难,因而提出了目标规划。
熟悉目标规划模型的建立,求解过程及结果分析。
二、目标规划的一般模型设)...2,1(n j x j =是目标规划的决策变量,共有m 个约束是国内刚性约束,可能是等式约束,也可能是不等式约束。
设有l 个柔性目标约束,其目标规划约束的偏差是),...,2,1(,l i d d i i =-+。
设有q 个优先级别,分别为q p p p ,...,21。
在同一个优先级k p 中,有不同的权重,分别记为),...,2,1(,l j w w kj kj =-+。
因此目标规划模型的一般数学表达式为:min ∑∑=++--=+=lj j kj j kj q k kd w d wp z 11);(.,,...2,1,),(1m i b x anj i j ij=≥=≤∑= .,...2,1,0,,,...,2,1,,,...2,1,1l i d d n x o x l i g d d x ci i j i nj i i j ij=≥=≥==-++-=+-∑三、实验设备及分组实验在计算机中心机房进行,使用微型电子计算机,每人一机(一组)。
四、实验内容及步骤1、打开LINGO ,并利用系统菜单和向导在E 盘创建一个项目。
目录和项目名推荐使用学生自己的学号。
2、以此题为例,建立数学模型,并用说明语句进行说明,增强程序的可读性。
例:某工厂生产Ⅰ、Ⅱ两种产品,需要用到A ,B ,C 三种设备,已知有关数据见下表。
企业的经营目标不仅仅是利润,还需要考虑多个方面:(1) 力求使利润不低于1500元;(2) 考虑到市场需求,Ⅰ、Ⅱ两种产品的产量比应尽量保持1:2; (3) 设备A 为贵重设备,严格禁止超时使用;(4) 设备C 可以适当加班,但要控制;设备B 即要求充分利用,又尽可能不加班。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如在例6.7 (职员时序安排模型) 一项工作一周7天 都需要有人(比如护士工作),每天(周一至周日) 所需的最少职员数为20、16、13、16、19、14和12, 并要求每个职员一周连续工作5天, 试求每周所需最少职员数,并给出安排。 注意这里我们考虑稳定后的情况。
Байду номын сангаас
Objective value:
664.0000
V1 V2 V3 V4 V5 V6 V7 V8 W1 0 19 0 0 41 0 0 0 W2 1 0 0 32 0 0 0 0 W3 0 11 0 0 0 0 40 0 W4 0 0 0 0 0 5 0 38 W5 34 7 0 0 0 0 0 0 W6 0 0 22 0 0 27 3 0
二、线性规划模型
特点:目标函数与约束条件均为一次的。
线性规划的一般模型
n
min z ci xi
i 1
n
s.t.
aij xi
i 1
(, )bi
( j 1,2,, m)
li xi hi
(i 1,2,, n)
例1(运输规划模型) 某产品有6个产地Ai 和8个销售地 Bj (i=1,2,…,6, j=1,2,…,8) ,产地到销地的单位运价见下表, 问如何安排运输可使运输总费用最小。
产地 总产量和:302 销地 总销量和:280 产大于销的模型。
产地 Ai : 总产量 ai 销地 Bi : 总销量 bi 产地Ai到销地Bj : 单位运价 cij 运输量 xij
i=1,2,…,6;
j=1,2,…,8
决策变量:产地Ai到销地Bj的 运输量 xij
从产地Ai到销地Bj的运费 cij xij
销地总销量和:280
为产大于销的模型。
68
目标函数: min
cij xij
i1 j1
6
运往Bj的总运量: xij bj
i 1
8
从Aj运出的总量: xij ai
j1
对变量xij的限制: xij 0
68
min
cij xij
i1 j1
6
s.t: xij bj
i 1
8
xij ai
决策变量:xi第i周天开始上班的人数;
7
目标函数: min xi
i 1 5
s.t. xmod( ji1,7)1 d j j 1,2,,7
i 1
7
5
min xi , s.t.
xmod( ji1,7)1 d j, j 1,2,,7
i 1
i 1
sets: day/mon..sun/:x,d; endsets [obj]min=@sum(day:x); @for(day(j):@sum(day(i)|i#le#5:x(@wrap(j+i+2,7)))>=d); @for(day:@gin(x)); data: d=20,16,13,16,19,14,12; @text(F:\数学软件\lingoli\li607.txt)=day '开始上班的人数为' x; Enddata
单位运价表:
B1 B2 B3 B4 B5 B6 B7 B8 产 量
A1 6 2 6 7 4 2 5 9 60 A2 4 9 5 3 8 5 8 2 55 A3 5 2 1 9 7 4 3 3 51 A4 7 6 7 3 9 2 7 1 43 A5 2 3 9 5 7 2 6 5 41 A6 5 5 2 2 8 1 4 3 52 销 量 35 37 22 32 41 32 43 38
用lingo求解数学规划模型实例
一、lingo中的输入输出函数 @text函数
该函数被用在数据部分,用来将所需的数据输出至 文本文件中。
其语法为: @text(filename) 这里filename是文件名,可以采用相对路径和绝对
路径两种表示方式。如果忽略filename,那么数据就 被输出到标准输出设备(大多数情形都是屏幕)。
MON 开始上班的人数为 8.0000000 TUE 开始上班的人数为 2.0000000 WED 开始上班的人数为 0.0000000 THU 开始上班的人数为 6.0000000 FRI 开始上班的人数为 3.0000000 SAT 开始上班的人数为 3.0000000 SUN 开始上班的人数为 0.0000000
j1
xij 0
i=1,2,…,6; j=1,2,…,8
sets: chdi/w1..w6/:a; xdi/v1..v8/:b; link(chdi,xdi):c,x; endsets [obj]min=@sum(link:c*x); @for(xdi(j):@sum(chdi(i):x(i,j))=b(j)); @for(chdi(i):@sum(xdi(j):x(i,j))<=a(i)); data:
例2 (指派问题)九种不同型号的装备配给9个部队, 由于各部队的特点与条件不同,不同的装备在不同部队 中产生效能不同,问如何分配可保证每个部队各分得一 种装备,且使总效能最大(装备在不同部队的效能见下表)。
装备
@file函数 该函数用从外部文件中输入数据,可以放在模型中任
何地方。
语法格式为@file(filename) 这里filename是文件名,可以采用相对路径和绝对路径 两种表示方式。
执行一次 @file输入 1个记录,记录之间的分隔符为 ~。 @table函数 该函数以表格形式输出数据,只能在数据段(DATA) 中使用。
8
从Ai到各销地的运费 cij xij
j1 68
总运费
cij xij
i1 j1
68
目标函数: min
cij xij
i1 j1
产地 Ai : 总产量 ai 销地 Bi : 总销量 bi 产地Ai到销地Bj : 单位运价 cij 运输量 xij
i=1,2,…,6;
j=1,2,…,8
产地总产量和:302
a=60,55,51,43,41,52; b=35,37,22,32,41,32,43,38; c=6,2,6,7,4,2,5,9,4,9,5,3,8,5,8,2,5,2,1,9,7,4,3, 3,7,6,7,3,9,2,7,1,2,3,9,5,7,2,6,5,5,5,2,2,8,1,4,3;
@text()=@table(x); enddata