优化模型讲解 附LINGO程序
- 格式:doc
- 大小:321.50 KB
- 文档页数:15
网络优化例与计算LINGO程序例装配线平衡模型一条装配线含有一系列的工作站,在最终产品的加工过程中每个工作站执行一种或几种特定的任务。
装配线周期是指所有工作站完成分配给它们各自的任务所化费时间中的最大值。
平衡装配线的目标是为每个工作站分配加工任务,尽可能使每个工作站执行相同数量的任务,其最终标准是装配线周期最短。
不适当的平衡装配线将会产生瓶颈——有较少任务的工作站将被迫等待其前面分配了较多任务的工作站。
问题会因为众多任务间存在优先关系而变得更复杂,任务的分配必须服从这种优先关系。
这个模型的目标是最小化装配线周期。
有2 类约束:①要保证每件任务只能也必须分配至一个工作站来加工;②要保证满足任务间的所有优先关系。
例有11 件任务(A—K)分配到4 个工作站(1—4),任务的优先次序如下图。
每件任(F)(A) (B) (C)(G)(J) (K)(H)(D) (E)(I)计算程序:MODEL:!装配线平衡模型;SETS:!任务集合,有一个完成时间属性T;TASK/ A B C D E F G H I J K/: T;!任务之间的优先关系集合(A 必须完成才能开始B,等等);PRED( TASK, TASK)/ A,B B,C C,F C,G F,J G,JJ,K D,E E,H E,I H,J I,J /;! 工作站集合;STATION/1..4/;TXS( TASK, STATION): X;! X是派生集合TXS的一个属性。
如果X(I,K)=1,则表示第I个任务指派给第K个工作站完成;ENDSETSDATA:!任务A B C D E F G H I J K的完成时间估计如下;T = 45 11 9 50 15 12 12 12 12 8 9;ENDDATA! 当任务超过15个时,模型的求解将变得很慢;!每一个作业必须指派到一个工作站,即满足约束①;@FOR( TASK( I): @SUM( STATION( K): X( I, K)) = 1);!对于每一个存在优先关系的作业对来说,前者对应的工作站I必须小于后者对应的工作站J,即满足约束②;@FOR( PRED( I, J): @SUM( STATION( K): K * X( J, K) - K * X( I, K)) >= 0); !对于每一个工作站来说,其花费时间必须不大于装配线周期;@FOR( STATION( K):@SUM( TXS( I, K): T( I) * X( I, K)) <= CYCTIME);!目标函数是最小化转配线周期;MIN = CYCTIME;!指定X(I,J) 为0/1变量;@FOR( TXS: @BIN( X));END计算的部分结果为Global optimal solution found at iteration: 1255 Objective value: 50.00000Variable Value Reduced CostCYCTIME 50.00000 0.000000X( A, 1) 1.000000 0.000000X( A, 2) 0.000000 0.000000X( A, 3) 0.000000 45.00000X( A, 4) 0.000000 0.000000X( B, 1) 0.000000 0.000000X( B, 2) 0.000000 0.000000X( B, 3) 1.000000 11.00000X( B, 4) 0.000000 0.000000X( C, 1) 0.000000 0.000000X( C, 2) 0.000000 0.000000X( C, 3) 0.000000 9.000000X( C, 4) 1.000000 0.000000X( D, 1) 0.000000 0.000000X( D, 2) 1.000000 0.000000X( D, 3) 0.000000 50.00000X( D, 4) 0.000000 0.000000X( E, 1) 0.000000 0.000000X( E, 2) 0.000000 0.000000X( E, 3) 1.000000 15.00000X( E, 4) 0.000000 0.000000X( F, 1) 0.000000 0.000000X( F, 2) 0.000000 0.000000X( F, 3) 0.000000 12.00000X( F, 4) 1.000000 0.000000X( G, 1) 0.000000 0.000000 X( G, 2) 0.000000 0.000000 X( G, 3) 0.000000 12.00000 X( G, 4) 1.000000 0.000000 X( H, 1) 0.000000 0.000000 X( H, 2) 0.000000 0.00000045X( H, 3) 1.000000 12.00000 X( H, 4) 0.000000 0.000000 X( I, 1) 0.000000 0.000000 X( I, 2) 0.000000 0.000000 X( I, 3) 1.000000 12.00000 X( I, 4) 0.000000 0.000000 X( J, 1) 0.000000 0.000000 X( J, 2) 0.000000 0.000000 X( J, 3) 0.000000 8.000000 X( J, 4) 1.000000 0.000000 X( K, 1) 0.000000 0.000000 X( K, 2) 0.000000 0.000000 X( K, 3) 0.000000 9.000000 X( K, 4) 1.000000 0.000000例 旅行售货员问题(又称货郎担问题,Traveling Salesman Problem )有一个推销员,从城市1 出发,要遍访城市2,3,…,n 各一次,最后返回城市1。
培训专题:《LINGO优化》培训人:数学中国站长马壮培训时间:9月5日培训形式:QQ文字直播第三期为数学中国在国赛前准备的第三期培训专题,数学中国站长马壮会向大家介绍比赛中的《LINGO优化》,敬请期待!数学建模专题培训三《LINGO优化》讲稿全文LINGO优化LINGO是用来湂解线性和非线性优化问题的简易工具。
LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的湂解器可快速湂解并分析结果。
我们关滨近几年全国赛赛题的同学们都会发现,优化问题始终是数学建模的热点,近几年整数规划、二次规划的问题多次出现。
优化问题往往有建模简单,湂解困难的特点,如何找到我们所需要的全幀最优解或者幀部最优解是非常重要的,Lingo是我们完成优化建模湂解的有效工具,它的学习直接关绻到了我们建模的最终成败。
我其实也是一个Lingo的初学者,还只是对Lingo做了初步的了解,因为我感觉到它其实还是非常博大的,因为Lingo让我体会到了解决实际问题的兴奋,体会到了面向对蹡编程思想对数学的意义。
甚至我用Lingo赚到了钱,呵呵,大家不要帏看它呀!首先我先说说我学习Lingo的三个最大的体会:1、Lingo中最重要的概念是“集”。
可以说真正能用“集”的思想去建模,你才真正把计算机和数学融为一体了,因为“集”是计算机中的面向对蹡编程思想的体现。
2、一定要会用@for和@sum两个函数。
因为在优化模型中,通常都会有很多的决策变量和约束条件,这两个函数不会用,那你的模型几乎很难放在Lingo中。
3、一定要能看得懂湂解结果。
复杂的优化问题并不能保证得到全幀最优解,Lingo有的时候也无能为力,我们不能完全依赖它,有的时候还要帮它绕过一些困难。
另外灵敏性分析的结果也非常重要,这些在Lingo的结果报告中可以给出。
好的,我们先来踈踈“集”。
对实际问题建模的时候,总会遇到一群或多群相联绻的对蹡,比如工厂、消费者群体、交通工具和雇工等等。
数学建模培训讲义——优化模型与LINGO软件二○一一年七目录1 静态优化模型 (1)1.1 最优生产计划问题 (1)1.2 存贮模型 (2)2 线性规划模型 (2)2.1 LINGO简介 (2)2.2 配料问题 (3)2.3 练习:运输问题 (4)3 整数规划模型 (4)3.1 电影院广告问题 (4)3.2 练习:生产计划问题 (5)4 0-1规划 (5)4.1 背包问题 (5)4.2 矿井选址问题 (6)4.3 练习:混合泳接力队的选拔问题 (7)5 LINGO应用 (8)5.1 变量定界函数 (8)5.2 集合 (8)5.3 帆船生产问题 (9)5.4 派生集合 (11)5.5 通过电子表格(Excel)文件传递数据 (12)5.6 旅游问题 (13)优化模型与LINGO 软件优化问题是计划管理工作中经常要碰到的问题,比如,出门旅行就要考虑选择什么样的路线和交通工具,才能使旅行费用最省或使所花费的时间最少。
在工厂技术、经济管理和科学研究等领域中,最优化问题就更多,一个工厂要怎样安排产品的生产,才能获得最大利润?一个设计部门要考虑在满足结构强度的要求下怎样使得所用的材料的总重量最轻?比较有效的求解优化问题的一个方法使数学规划,它包括:线性规划、非线性规划、整数规划、动态规划和多目标规划等等。
用数学建模的方法来处理一个优化问题的时候,首先要确定优化的目标是什么,寻求的决策是什么,决策受到哪些条件的限制(如果有限制的话),然后用数学工具(变量、函数等)表示它们。
1 静态优化模型静态优化模型,归结为微积分中的函数极值问题,可以直接用微分法求解。
1.1 最优生产计划问题一计算机公司引进A 、B 两种类型的芯片技术,总耗资400000元,准备生产这两种类型的芯片出售。
生产一片A 芯片的成本为1950元,而市场售价为3390元,生产一片B 芯片的成本为2250元,而市场售价3990元。
由于市场存在竞争,每售出一片A 芯片,A 芯片就会降价0.1元,并且令B 芯片降低0.04元,每售出一片B 芯片,B 芯片就会降价0.1元,并且令A 芯片降价0.03元。
假设生产的芯片都能卖出,求一生产计划,以获得最大利润。
模型分析:假设A 、B 两种芯片的数量分别是1x 和2x ,市场价格分别是1p 和2p ,用R 表示出售芯片的总收入,用C 表示生存芯片的总费用,用P 表示总利润。
根据题意,上述变量有如下关系:11233900.10.03p x x =-- 21239900.040.1p x x =--1122R p x p x =+1240000019502250C x x =++P R C =- 模型建立:根据上述分析,可得优化模型22112212max 14400.117400.10.07400000P x x x x x x =-+---.s t 1,x 20x ≥且为整数 模型求解:用微分法求解12112214400.20.0717400.070.2Px x x P x x x ∂⎧=--⎪∂⎪⎨∂⎪=--⎪∂⎩ 最优解是14735x =,27043x =此时max 9136410P =1.2 存贮模型详见“静态优化模型”PDF 文档。
2 线性规划模型如果约束条件和目标函数都是线性的,称之为线性规划模型。
例如: 12max 25f x x =+12121243.28,0x x s t x x x x ≤⎧⎪≤⎪⎨+≤⎪⎪≥⎩解法一:两个变量的线性规划模型的图解法 解法二:消元法(迭代法) 解法三:单纯形法(迭代法演化) 解法四:LINGO 软件求解max=2*x1+5*x2; x1<=4; x2<=3; x1+2*x2<=8; 2.1 LINGO 简介LINGO 是英文“Linear Interactive And General Optimizer ”字首的缩写形式,即“交互式线性和通用优化求解器”,其语法特点是:(1)语句的顺序不重要,因为LINGO 总是根据“max =”或“min =”语句寻找目标函数,而其他语句都是约束条件,也可以没有约束条件。
(2)LINGO 不区分大小写,但变量必须以字母开头。
(3)LINGO 默认所有变量非负。
(4)LINGO 模型是由一系列语句组成,每个语句都是以“;”结尾,编写程序时应注意保持模型的可读性,同时保持语法的严谨性。
(5)LINGO 中以感叹号“!”开始的是说明语句(说明语句也必须以“:”结束)。
LINGO 软件的具体用法在模型中介绍。
表1 各版本信息2.2 配料问题某养鸡场饲养一批小鸡,对小鸡健康成长的基本营养元素有三种,简单地称为A 、B 、C 。
这批小鸡每日对这三种营养的最低需要量是:元素A 为12单位,元素B 为36单位,元素C 为恰好为24单位,C 元素不够或过量都是有害的。
现市场供应的饲料有甲、乙两种,甲饲料每千克5元,所含的营养元素A 为2单位,B 为2单位,C 为2单位;乙饲料每千克4元,所含的营养元素A 为1单位,B 为9单位,C 为3单位。
养鸡场负责人希望得到甲乙两种饲料的混合饲料最优配比,既能满足小鸡健康成长的需要,又能降低饲料的费用。
模型建立:假设甲饲料每天需求1x 千克,乙饲料每天需求2x 千克,每天饲料总费用为f 。
12min 54f x x =+121212122122936.2324,0x x x x s t x x x x +≥⎧⎪+≥⎪⎨+=⎪⎪≥⎩ LINGO 程序:min=5*x1+4*x2;2*x1+x2>=12; 2*x1+9*x2>=36; 2*x1+3*x2=24; 2.3 练习:运输问题设有两个煤厂甲和乙,每月进煤数量分别为60和100吨,联合供应三个居民区A 、B 、C ,三个居民区每月对煤的需求量依次为50吨、70吨和40吨。
煤厂到各个居民区的运输费用如图所示,如何分配供煤量使得总费用最少?3 整数规划模型部分变量或全部变量要求取整数,称为整数规划模型。
LINGO 程序中通过“@gin(变量)”命令限制变量为整数,例如:12max 43f x x =+121212410.238,0x x s t x x x x +≤⎧⎪+≤⎨⎪≥⎩且为整数 LINGO 程序:max=4*x1+3*x2; 4*x1+x2<=10; 2*x1+3*x2<=8; @gin(x1); @gin(x2); 3.1 电影院广告问题某小型工厂计划每周花71元在两个小型电影院加映广告片,推销该厂的产品,为了获得更多的观众,要合理的在两个电影院里分配经费。
已知甲电影院加映广告片的时间为4分钟,每放映一次要付12元,预计每次有200人观看,该电影院每周仅能为该厂提供13分钟广告时间;乙电影院广告片的时间为2分钟,每次收费16元,预计每次300人观看,该电影院仅能为该厂提供7分钟广告时间。
若观众人数以百人计,试建立数学模型解答。
1284乙6510甲C B A假设每周在甲电影院放映广告1x 次,在乙电影院放映2x 次,观看的观众总数为f 。
12max 23f x x =+121212121671413.27,0x x x s t x x x +≤⎧⎪≤⎪⎨≤⎪⎪≥⎩且为整数 LINGO 程序:max=2*x1+3*x2; 12*x1+16*x2<=71; 4*x1<=13; 2*x2<=7; @gin(x1); @gin(x2);3.2 练习:生产计划问题某工厂拥有A 、B 、C 三种类型的设备,生产甲、乙两种产品,每件产品在生产中需要占用的设备时数、每件产品可以获得的利润以及三种设备可利用的时数如表所示。
问题:工厂应如何安排生产可获得最大的利润?4 0-1规划0-1规划是整数规划中的一种特殊情形,当决策变量i x 只能取0或1时,这样的整数规划称之为0-1规划。
约束条件可以写成“01,i x ≤≤且为整数”,LINGO 中通过“@bin(变量)”命令实现。
4.1 背包问题一旅行者的背包最多只能装6kg 的物品,待装的物品有4件,它们的重量和价值依次为:2kg ,1元;3kg ,1.2元;3kg ,0.9元;4kg ,1.1元。
那么他的背包中携带哪些物品可使价值最大?设备设备能力产品乙产品甲25001500利润(元/件)7530设备C4012设备B 6523A/h用i x 表示第i 种物品是否被携带,令1,0,i i x i ⎧=⎨⎩携带第种物品不携带第种物品携带物品的总价值记为f 。
1234max 1.20.9 1.1f x x x x =+++123423346.01,1,2,3,4)i i x x x x s t x x i +++≤⎧⎨≤≤=⎩且为整数( LINGO 程序:max=x1+1.2*x2+0.9*x3+1.1*x4; 2*x1+3*x2+3*x3+4*x4<=6; @bin(x1); @bin(x2); @bin(x3); @bin(x4); 4.2 矿井选址问题某煤矿准备在5个矿井挖煤,现在有10个矿井可供选择,设10个矿井的代号为A1、 A2、…、A10,相应的开采费用分别为8、9、3、10、4、7、5、14、11、8,对矿井的选择要满足以下限制条件: (1)或选A1和A7,或选A8;(2)在A4、A5、A6、A7中最多只能选两个; (3)选择A3或A4,就不能选择A5,反之亦然。
如何选择,才能使开采总费用最小? 模型建立:用i x 表示第i 个矿井是否被选择,令1,0,i i x i ⎧=⎨⎩选择第个矿井不选择第个矿井开采总费用记为f 。
12345678910max 8931047514118f x x x x x x x x x x =+++++++++101187845673545511.21101,1,2,,10)i i i i x x x x x s t x x x x x x x x x x i =⎧=⎪⎪+=⎪⎪+=⎪⎨+++≤⎪⎪+≤⎪+≤⎪⎪≤≤=⎩∑且为整数(LINGO 程序:max=8x1+9*x2+3*x3+10*x4+4*x5+7*x6+5*x7+14*x8+11*x9+8*x10; x1+x2+x3+x4+x5+x6+x7+x8+x9+x10=5; x1+x8=1; x7+x8=1; x4+x5+x6+x7<=2; x3+x5<=1; x4+x5<=1; @bin(x1); @bin(x2); @bin(x3); @bin(x4); @bin(x5); @bin(x6); @bin(x7); @bin(x8); @bin(x9); @bin(x10);4.3 练习:混合泳接力队的选拔问题某学校准备从5名游泳队员中选拔4人组成接力队,参加学校的4×100m 混合泳接力赛。