Lingo的典型应用举例研究
运用lingo解决问题的例子
运用lingo解决问题的例子
以下是一个运用LINGO解决实际问题的例子:
问题描述:
某公司生产A、B两种产品,已知生产1单位A产品需要3单位原料1和2单位原料2,同时产生2单位废料;生产1单位B产品需要4单位原料1和2单位原料2,同时产生3单位废料。
该公司有10单位原料1和8单位原料2,同时最多可以产生10单位废料。
请为公司制定一个生产计划,使得A、B两种产品的产量最大。
模型建立:
1. 设x1为A产品的产量,x2为B产品的产量。
2. 设原料1的消耗为3x1 + 4x2,原料2的消耗为2x1 + 2x2,废料产生为2x1 + 3x2。
3. 原料1的限制条件为3x1 + 4x2 <= 10,原料2的限制条件为2x1 +
2x2 <= 8,废料的限制条件为2x1 + 3x2 <= 10。
4. 目标函数为max x1 + x2,即最大化A、B两种产品的产量之和。
LINGO代码:
SETS:
I / 1 /;
J / 1,2 /;
K / I,J /;
PARAMETERS:
C(K) / 3I + 4J, 2I + 2J, 2I + 3J /; D(I) / 10 /;
E(I) / 8 /;
F(I) / 10 /;
VARIABLES:
X(K) / >=0 /;
MAXIMIZE Z: X(1) + X(2); SUBJECT TO:
3X(1) + 4X(2) <= D(1);
2X(1) + 2X(2) <= E(1);
2X(1) + 3X(2) <= F(1); ENDSETS
END。
Lingo超经典案例大全
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*x20.001;@abs(x2-1)>0.001;end求得x1=2,x2=2.若再次排除这组解,发觉Lingo解不出第三组解了,这时我们可以断定:此优化模型有两组解:x1=3,x2=1和x1=2,x2=2.求解模型时需留意:Lingo中,默认变量均为非负;输出的解可能是最优解中的一组,要推断、检验是否还有其他解〔依据具体问题的解的状况或用排除已知最优解的约束条件法〕。
Lingo的应用实例
Lingo应用——旅游路线最短问题题目:从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:运用lingo软件求解模型建立前问题分析:1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先后到达的关系),有些城市之间就可能没有这种关系,所以给出的两两城市距离中有些在最后的最短路线距离计算中使用到了,有些则没有用。
这是一个0-1规划的问题,也是一个线性规划的问题。
2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就导致了这六个城市其中有的两个城市是直接相连的,另外也有两个城市是不连接的。
这就可以考虑设0-1变量,如果两个城市紧接着去旅游的则为1,否则为0。
就如同下图实线代表两个城市相连为1,虚线代表没有相连为03. 因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。
求解:为了方便解题,给上面六个城市进行编号,如下表(因为北京是起点, 将其标为1)假设:设变量x ij 。
如果x ij =1,则表示城市i 与城市j 直接相连(即先后紧接到达关系),否则若x ij =0,则表示城市i 与城市j 不相连。
特别说明:x ij 和x ji 是同一变量,都表示表示城市i 与城市j 是否有相连的关系。
这里取其中x ij (I<j)的变量。
模型建立:由于这是一个最短路线的问题,且变量已经设好。
目标函数:min z=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56约束条件:1. 上面目标函数中的变量是表示两个城市是否直接相连接的关系,且最短路线是可以形成圈的,如下图实线代表两个城市相连为1,虚线代表没有相连为0如上图城市a和城市b有直接相连接的关系,所以之间变量为1,而城市a 与城市e则没有直接相连接的关系,之间变量为0。
Lingo的基本应用
第十五章Lingo的基本应用1、LINDO和LINGO软件能求解的模型:2、Lingo初级语法:语句分行书写,顺序与数学模型一致;每一条语句都要以“;”结尾;语句不区分大小写,书写方式与代数函数相近;目标函数以“min=”或者“max=”表示;注释语句用“!”开头;“>”和“>=”以及“<”和“<=”没有区别;如果不写明决策变量的取值范围,则默认为非负实数。
3、线性规划案例:生产计划每天:50桶牛奶时间480小时至多加工100公斤A1 要求:制订生产计划,使每天获利最大1)奶制品生产的Lingo模型2)Lingo求解2)Lingo求解报告//结果报告(Solution Report)4)开启灵敏度分析(Range)功能5)查看灵敏度分析(Range)必须先求解才能得到灵敏度分析报告//目标函数系数范围分析当目标函数中x1的系数(产品A1的收益)增加不超过8个单位或者减少不超过2.66667个单位时(x2系数维持不变),不需改变生产计划。
//约束条件右边值灵敏度分析如果牛奶资源的数量增加不超过10桶或者减少不超过6.666667桶(其他模型参数不变),则它将仍然作为紧缺资源;如果A1生产资源减少超过40个单位(其他模型参数不变),则它将转化为紧缺资源。
4、城市垃圾处理问题(最小吨*公里)小区供水问题(最大供水收益)代数式线性规划模型(垃圾运输)代数式线性规划模型(小区供水)5、如何表示具有下标的变量:1)从C语言的类比来理解:2)具有下标的变量可以看作某种数组变量中的元素;3)除去下标后的符号可以看作是数组变量的名称;4)下标可以看作是在数组中的索引值;5)单下标变量对应于一个一维数组,称为“简单集合”;6)多下标变量对应于一个多维数组,而多维数组可以看作是多个一维数组的笛卡尔积,称为“派生集合”。
6、Lingo中如何定义具有下标的变量?1)在Lingo中使用“集合变量”的形式表达规划模型中具有下标的变量2)定义集合变量需要三个基本要素:集合的名称集合的形式(简单集合还是派生集合?集合的元素个数是多少?)集合变量的名称7、定义简单集合的语法:集合名称/下标范围/: 变量列表;(变量之间用“,”分隔)例:brand/1..6/: a, b;(集合的名称是brand,/1..6/表示这种集合包含6个元素,下标的范围是从1到6,并且定义了两个这种集合形式的变量分别用a、b表示,该语句相当于定义了a1~a6以及b1~b6两组变量)例:type/1..4/;(也可以只定义集合形式不定义集合变量)8、定义派生集合的语法:集合名称(分量集合列表): 变量列表;1)分量集合列表分别对应于派生集合的每一个维度,定义了每一个维度分别属于哪一种简单集合2)例:product(brand, type): p, x;(集合的名称是product,该集合的第一个维度与brand集合的类型相同,第二个维度与type 集合的类型相同,并且定义了两个集合变量p和x。
Lingo软件在运筹学中的应用
Lingo软件在运筹学中的应用Lingo软件在运筹学中的应用随着信息技术的不断发展,计算机软件在各个领域中的应用越来越广泛,尤其是在运筹学领域。
运筹学是研究在复杂决策环境下,如何高效地进行决策的学科。
Lingo软件作为一款运筹学建模和求解工具,为运筹学的研究和应用带来了很大的便利和效率。
本文将介绍Lingo软件在运筹学中的应用,并通过实例来说明其实际效果。
首先,Lingo软件在线性规划问题中的应用非常广泛。
线性规划是一种数学优化技术,用于在给定的约束条件下最大化或最小化线性目标函数。
Lingo软件提供了直观的图形用户界面,使得用户可以轻松地建立线性规划模型,并通过内置的求解器进行求解。
用户只需输入决策变量、约束条件和目标函数,Lingo就能自动找到最优解。
这对于一些复杂的决策问题,如生产规划、资源调度和供应链优化等,提供了很大的帮助。
其次,Lingo软件在整数规划和混合整数规划问题中也有着广泛的应用。
整数规划是在线性规划的基础上,将决策变量限制为整数解的优化问题。
混合整数规划在整数规划的基础上,允许部分决策变量取非整数解。
这种类型的决策问题在实际中很常见,如生产工作安排、旅行路线规划和仓储优化等。
Lingo软件提供了强大的分支定界算法和割平面算法,能够有效地求解整数规划和混合整数规划问题。
用户只需调整问题的参数,Lingo就能快速找到最优解,大大减少了优化问题的求解时间。
此外,Lingo软件还可以用于非线性规划问题的建模和求解。
非线性规划是在线性规划的基础上,将决策变量限制为非线性函数的优化问题。
非线性规划在许多实际问题中都有着广泛的应用,如投资组合优化、工程设计和市场定价等。
Lingo软件提供了多种求解算法,如牛顿法、拟牛顿法和遗传算法等,能够有效地求解非线性规划问题。
用户只需选择合适的算法和调整参数,Lingo就能找到最优解或是近似最优解。
最后,Lingo软件还具有灵活的扩展性和集成性。
它可以与其他优化软件和模拟软件进行集成,提供更强大的求解能力和模型分析能力。
lingo软件及其应用(经典)
sets: set1/A,B,C/: X,Y; endsets data: X=1,2,3;!注意属性值的个数必须等于集成员的个数。 Y=4,5,6; enddata
例2 有时只想为一个集的某个属性的部分成员指定值, 而让该属性的其余成员的保持未知,以便让LINGO去 求出它们的最优值。在数据声明中输入两个相连的逗 号表示该位置对应的集成员的属性值未知。两个逗号 间可以有空格 。
SETS: CITIES /A1,A2,A3,B1,B2/; ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETS
SETS: STUDENTS /S1..S8/; PAIRS( STUDENTS, STUDENTS) | &2 #GT# &1: BENEFIT, MATCH; ENDSETS
LINGO软件及其应用
薛申芳 2009.3.15
目录
1 软件平台 2 lingo编程 3 应用举例
1 软件平台
(1)美国芝加哥(Chicago)大学的Linus Schrage (莱纳斯.施拉盖 )教授于1980年前后开发。 (2) LINGO: Linear Interactive General Optimizer (线性交互式通用优化器)。 (3)用来求解的优化模型(连续优化和整数规 划(IP))。 类型:线性规划(LP)、二次规划(QP)、非 线性规划(NLP)。 (4)LINGO的界面如下
2.3 运算符的优先级
优先级 最高
最低
运算符 #NOT# —(负号) ^ * / + - #EQ#相等 #NE#不相等 #GT#大 于 #GE#大于或等于 #LT# #LE# #AND# #OR# <(=) = >(=)
运筹学实例分析及lingo求解
运筹学实例分析及lingo 求解一、线性规划某公司有6个仓库,库存货物总数分别为60、55、51、43、41、52,现有8个客户各要一批货,数量分别为35,37,22,32,41,32,43,38。
各供货仓库到8个客户处的单位货物运输价见表试确定各仓库到各客户处的货物调运数量,使总的运输费用最小。
解:设ijx 表示从第i 个仓库到第j 个客户的货物运量。
ij c表示从第i 个仓库到第j 个客户的单位货物运价,i a 表示第i 个仓库的最大供货量,j d 表示第j 个客户的订货量。
目标函数是使总运输费用最少,约束条件有三个:1、各仓库运出的货物总量不超过其库存数2、各客户收到的货物总量等于其订货数量3、非负约束数学模型为:∑∑===6181)(min i j ijij x c x f⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧≥===≤∑∑==08,,2,1,6,2,1,,..6181ij j i ij i j ij x j d x i a x t s 编程如下:model : Sets :Wh/w1..w6/:ai;Vd/v1..v8/:dj;links(wh,vd):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));@for(wh(i):@sum(vd(j):x(i,j))<=ai(i));@for(vd(j):@sum(wh(i):x(i,j))=dj(j));endGlobal optimal solution found.Objective value: 664.0000Total solver iterations: 0Variable Value Reduced Cost AI( W1) 60.00000 0.000000 AI( W2) 55.00000 0.000000 AI( W3) 51.00000 0.000000 AI( W4) 43.00000 0.000000 AI( W5) 41.00000 0.000000 AI( W6) 52.00000 0.000000 DJ( V1) 35.00000 0.000000 DJ( V2) 37.00000 0.000000 DJ( V3) 22.00000 0.000000 DJ( V4) 32.00000 0.000000 DJ( V5) 41.00000 0.000000 DJ( V6) 32.00000 0.000000 DJ( V7) 43.00000 0.000000 DJ( V8) 38.00000 0.000000 C( W1, V1) 6.000000 0.000000 C( W1, V2) 2.000000 0.000000 C( W1, V3) 6.000000 0.000000 C( W1, V4) 7.000000 0.000000 C( W1, V5) 4.000000 0.000000 C( W1, V6) 2.000000 0.000000C( W1, V8) 9.000000 0.000000 C( W2, V1) 4.000000 0.000000 C( W2, V2) 9.000000 0.000000 C( W2, V3) 5.000000 0.000000 C( W2, V4) 3.000000 0.000000 C( W2, V5) 8.000000 0.000000 C( W2, V6) 5.000000 0.000000 C( W2, V7) 8.000000 0.000000 C( W2, V8) 2.000000 0.000000 C( W3, V1) 5.000000 0.000000 C( W3, V2) 2.000000 0.000000 C( W3, V3) 1.000000 0.000000 C( W3, V4) 9.000000 0.000000 C( W3, V5) 7.000000 0.000000 C( W3, V6) 4.000000 0.000000 C( W3, V7) 3.000000 0.000000 C( W3, V8) 3.000000 0.000000 C( W4, V1) 7.000000 0.000000 C( W4, V2) 6.000000 0.000000 C( W4, V3) 7.000000 0.000000 C( W4, V4) 3.000000 0.000000 C( W4, V5) 9.000000 0.000000 C( W4, V6) 2.000000 0.000000 C( W4, V7) 7.000000 0.000000 C( W4, V8) 1.000000 0.000000 C( W5, V1) 2.000000 0.000000 C( W5, V2) 3.000000 0.000000 C( W5, V3) 9.000000 0.000000 C( W5, V4) 5.000000 0.000000 C( W5, V5) 7.000000 0.000000 C( W5, V6) 2.000000 0.000000 C( W5, V7) 6.000000 0.000000 C( W5, V8) 5.000000 0.000000 C( W6, V1) 5.000000 0.000000 C( W6, V2) 5.000000 0.000000 C( W6, V3) 2.000000 0.000000 C( W6, V4) 2.000000 0.000000 C( W6, V5) 8.000000 0.000000 C( W6, V6) 1.000000 0.000000 C( W6, V7) 4.000000 0.000000 C( W6, V8) 3.000000 0.000000 X( W1, V1) 0.000000 5.000000 X( W1, V2) 19.00000 0.000000X( W1, V4) 0.000000 7.000000 X( W1, V5) 41.00000 0.000000 X( W1, V6) 0.000000 2.000000 X( W1, V7) 0.000000 2.000000 X( W1, V8) 0.000000 10.00000 X( W2, V1) 1.000000 0.000000 X( W2, V2) 0.000000 4.000000 X( W2, V3) 0.000000 1.000000 X( W2, V4) 32.00000 0.000000 X( W2, V5) 0.000000 1.000000 X( W2, V6) 0.000000 2.000000 X( W2, V7) 0.000000 2.000000 X( W2, V8) 0.000000 0.000000 X( W3, V1) 0.000000 4.000000 X( W3, V2) 11.00000 0.000000 X( W3, V3) 0.000000 0.000000 X( W3, V4) 0.000000 9.000000 X( W3, V5) 0.000000 3.000000 X( W3, V6) 0.000000 4.000000 X( W3, V7) 40.00000 0.000000 X( W3, V8) 0.000000 4.000000 X( W4, V1) 0.000000 4.000000 X( W4, V2) 0.000000 2.000000 X( W4, V3) 0.000000 4.000000 X( W4, V4) 0.000000 1.000000 X( W4, V5) 0.000000 3.000000 X( W4, V6) 5.000000 0.000000 X( W4, V7) 0.000000 2.000000 X( W4, V8) 38.00000 0.000000 X( W5, V1) 34.00000 0.000000 X( W5, V2) 7.000000 0.000000 X( W5, V3) 0.000000 7.000000 X( W5, V4) 0.000000 4.000000 X( W5, V5) 0.000000 2.000000 X( W5, V6) 0.000000 1.000000 X( W5, V7) 0.000000 2.000000 X( W5, V8) 0.000000 5.000000 X( W6, V1) 0.000000 3.000000 X( W6, V2) 0.000000 2.000000 X( W6, V3) 22.00000 0.000000 X( W6, V4) 0.000000 1.000000 X( W6, V5) 0.000000 3.000000 X( W6, V6) 27.00000 0.000000X( W6, V8) 0.000000 3.000000 Row Slack or Surplus Dual Price 1 664.0000 -1.000000 2 0.000000 3.000000 3 22.00000 0.000000 4 0.000000 3.000000 5 0.000000 1.000000 6 0.000000 2.000000 7 0.000000 2.000000 8 0.000000 -4.000000 9 0.000000 -5.000000 10 0.000000 -4.000000 11 0.000000 -3.000000 12 0.000000 -7.000000 13 0.000000 -3.000000 14 0.000000 -6.000000 15 0.000000 -2.000000由以上结果可以清楚的看到由各仓库到各客户处的货物调运数量,由此得出的符合条件的最佳运货方案,而使运费最低,最低为664。
lingo用法
lingo用法Lingo是一种俚语,既可以指代一种特定的语言,也可以是特定领域内的术语或俚语。
它的用法相对灵活,可以根据具体情境进行调整。
首先,lingo这个词最初源自英语,其最常见的意思是指一种特定的语言或方言。
在这个意义上,lingo可以代表任何一种特定的语言,不论是国际语言还是地方方言。
例如,可以说某人操流利的英语,或者他会说多种方言和lingo。
此外,lingo还可以指代特定领域内的术语或俚语。
在不同的行业或社群中,有许多专业术语和俚语,这些术语和俚语通常被认为是该领域或社群的lingo。
举几个例子,医学界有一些特定的术语,如"CT scan"(计算机断层扫描)和"gastroenterologist"(胃肠科医生);IT界有一些俚语,如"bug"(故障)和"hack"(黑客)。
此外,在不同的地区,也会有一些特定的领域内的俚语或术语,这些也被称为lingo。
例如,在美国,有一些特定的俚语和术语仅仅在某个地区或某个人群中使用,这些俚语和术语可以被称为该地区或人群的lingo。
比如,美国西海岸特定的俚语使用频繁,如"hella"(非常)和"gnarly"(厉害)。
在交流中,使用lingo可以增进彼此的亲近感和凝聚力,因为使用者之间共享相同的术语和俚语。
此外,了解并正确运用lingo也可以帮助与特定群体或领域的人进行更有效的沟通。
然而,值得注意的是,使用lingo时应该遵守适当的场合和人群。
在正式场合或与不熟悉的人交流时,过度使用lingo可能造成误解或隔阂。
因此,在不同的沟通环境中,应根据具体情况灵活运用lingo。
总而言之,lingo是一种俚语,可以指代特定的语言或领域内的术语和俚语。
它的使用范围广泛,可以根据具体情境进行调整。
通过运用正确的lingo,可以增进与特定群体和领域内的人的沟通,并提升彼此的凝聚力。
lingo软件的使用具体例子
1
4
0
0
3
2
3
1
0
1
3
2
0
1
3
4
1
2
0
3
5
1
1
1
1
6
0
3
0
1
7
0
0
2
3
需求
50
20
15
约束 满足需求
4 x13 x22 x3x4x550 整数约束:
x22x4x53x620
x3x52x715
xi 为整数
钢管下料问题1
当余料没有用处时,通常以总根数最少为目标
目标2(总根数) M Z 2 i x 1 n x 2 x 3 x 4 x 5 x 6 x 7
客户需求
原料钢管:每根19米
4米50根
6米20根
8米15根
问题1. 如何下料最节省 ? 节省的标准是什么?
问题2. 客户增加需求:
5米10根
由于采用不同切割模式太多,会增加生产和管理成本, 规定切割模式不能超过3种。如何下料最节省?
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根 6米1根
切割多少根原料钢管,最为节省?
两种 标准
1. 原料钢管剩余总余量最小 2. 所用原料钢管总根数最少
决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,…7)
目标1(总余量) M Z 1 3 i x 1 n x 2 3 x 3 3 x 4 x 5 x 6 3 x 7
模式 4米根数 6米根数 8米根数 余料
vk(xk,uk)gk(uk)
资源分配问题
Lingo的典型应用举例
假设预先准备的箱子总数为n个,即使每件物品单 独装一个箱子也够用,用决策变量yi=1或0表示第j个箱 子是用还是不用,用变量xij=1或0表示第i件物品是否放 入第j个箱子中,建立0-1规划模型如下:
n
min
z y j,
j1
n
w i x ij Cy
j , j 1,2 ,...,
n,
i1
s
表2.1 当前可供蔬菜养分含量(mg)和价格
养分
蔬菜
铁
A1 青 豆 0.45
A2 胡萝卜 0.45
A3 花 菜 0.65
A4 卷心菜 0.4
A5 芹 菜 0.5
A6 土 豆 0.5
每周最低需求 6
每份蔬菜所含养分数量
每份价格
磷 维生素A 维生素C 烟酸 (元)
20
415
22
0.3
2.1
28
4065
例2.1 某疗养院营养师要为某类病人拟定本周蔬菜类菜单, 当前可供选择的蔬菜品种、价格和营养成分含量,以及病 人所需养分的最低数量见表2.1所示。病人每周需14份蔬 菜,为了口味的原因,规定一周内的卷心菜不多于2份, 胡萝卜不多于3份,其他蔬菜不多于4份且至少一份。在满 足要求的前提下,制订费用最少的一周菜单方案。
.t
.
n
x ij 1 , i 1 , 2 ,...,
n,
j1
yj x ij
0或 0或
1, j 1, i,
j
1,2 ,..., n , 1,2 ,..., n .
例5.1 已知30个物品,其中6个长0.51m,6个长 0.27m,6个长0.26m,余下的12个长0.23m,箱子长为 1m。问最少需要多少个箱子才能把30个物品全部装进箱 子。
Lingo软件应用举例
Lingo 软件应用举例1. 简单的优化问题---- Lingo 软件的体验1.1 线性规划及线性整数规划例1. 在LINGO 中求解如下问题(线性规划):0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x %----------------------------------------------------------其LINGO 代码如下:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;说明:(1) 在这里之所以没有对x1和x2进行非负的限制,是由于在默认情况下,Lingo 规定变量取非负实数(即非负要求,取值连续)(2) 若要求取整数,则函数@gin(x)限定x 取值为整数;(3) 若要求无约束,则函数@free(x)取消x 默认下界为0的限制,使x 可以取任意实数;(4) 若要求取非正数,则函数@bnd(L,x,U)可以限定L ≤x ≤U 。
%----------------------------------------------------------计算结果:Global optimal solution found at iteration: 2Objective value: 800.0000Variable Value Reduced CostX1 250.0000 0.000000X2 100.0000 0.000000Row Slack or Surplus Dual Price1 800.0000 -1.0000002 0.000000 -4.0000003 150.0000 0.0000004 0.000000 1.000000结果的解释:(1) “Global optimal solution found at iteration: 2”表示2次迭代后得到全局最优解。
LINGO在图论中的应用
for(roads(i,j): P(i,j)=if(FL(i) #eq# W(i,j)+FL(j),1,0));
end
部分计算结果: FL(A) 6 FL(B) 4 FL(C) 3 FL(D) 1 FL(E) 3 FL(F) 4 FL(G) 0 最短路线为 A B D G 以上计算程序是通用程序,对其它图,只需在 此程序基础上对数据作一些修改即可。
第 三 阶 段 , 从 D,E,F 到 G 的 最 短 路 分 别 为 1,3,4 , 记 为 f(D)=1,f(E)=3,f(F)=4;
第二阶段,与D,E,F有连线的出发点为B和C,从B出发 分别经过D,E,F,至终点G的里程分别为:
WBD+ f(D)=3+1=4
WBE+ f(E)=3+3=6
WBF+ f(F)=1+4=5 故B到G的最短路是上述三者的最小值(4),可以写成
图是一种直观形象地描述已知信息的方 式,它使事物之间的关系简洁明了,是分 析问题的有用工具,很多实际问题可以用 图来描述。
一、图的基本概念
图论是以图为研究对象的数学分支,在图论 中,图由一些点和点之间的连线所组成.
称图中的点为顶点(节点),称连接顶点的 没有方向的线段为边,称有方向的线段为弧.所 有线段都没有方向的图称为无向图,所有线段都 有方向的图称为有向图,既有边也有弧的图称为 混合图.
计算结果与动态规划法相同.程序中的最后一 个约束方程可以去掉,因为有了前面两个约束条 件(共n-1个约束方程)可以导出最后一个约束方程, 即 终 点 的 约 束 方 程 与 前 面 n-1 个 约 束 方 程 线 性 相 关.保留该约束方程,LINGO求解时也不会产生 任何问题,因为LINGO会自动删除多余的方程.
Lingo的典型应用举例
4
A
2
3
4
5
6
7
8
9
10
料场的位置用(pxj,pyj)表示,日存储量用gj表示, 从料场j向工地i的日运输量为Cij。 则对问题(1), pxj,pyj是已知数,决策变量是Cij。 料场j到工地i的距离为:
( px j xi ) 2 + ( py j yi ) 2
目标函数是总的吨千米数最小,约束条件有两个。 一是满足各工地的日需求,二是各料场的总出货量不超 过日存储量。建立数学模型如下:
当前可供蔬菜养分含量( ) 表2.1 当前可供蔬菜养分含量(mg)和价格
养分 蔬菜 A1 A2 A3 A4 A5 A6 青 豆 胡萝卜 花 菜 卷心菜 芹 菜 土 豆 铁 0.45 0.45 0.65 0.4 0.5 0.5 6 每份蔬菜所含养分数量 磷 20 28 40 25 26 75 125 维生素A 维生素 维生素C 维生素 415 4065 850 75 76 235 12500 22 5 43 27 48 8 345 烟酸 0.3 0.35 0.6 0.2 0.4 0.6 5 每份价格 (元) 2.1 1.0 1.8 1.2 2.0 1.2
用0-1变量xij表示分配情况,xij=1表示指派第i个人 完成第j项任务,xij=0表示不分配。则上述问题可以表示 为如下0-1线性规划:
min
z = ∑∑ cij xij ,
i =1 j =1
n
n
n ∑ xij = 1, j = 1,2,..., n, i =1 s.t. n x = 1, i = 1,2,..., n, x = 0或1. ij ∑ ij j =1
min
z = ∑∑ Cij ( px j xi ) + ( py j yi ) ,
全国数学建模lingo实例讲解
全国数学建模lingo 实例讲解LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如下表。
单位 销地 运 价 产地B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 24953858255A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量35 37 22 32 41 32 43 38使用LINGO软件,编制程序如下:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume;endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));!产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 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;enddataend然后点击工具条上的按钮即可。
lingo在各行业中的应用
案例五
CNC公司的有线电视的定价以及节目时间排表策略问题
所属行业:传媒业 案例时间:2004年 解决方案:随着不同网络电视运营商的竞争不断激烈,有线电视的收费价格逐渐降低。各运营商的利润 水平已经越来越低,制定有效的定价以及节目时间排表策略已经成为了竞争的关键。 CNC公司基于Lingo 使用混合整数规划,目标是最大化内容收入,约束条件是不同人群对价格的敏感程 度,不同人群对节目内容的偏好以及倾向的收视时间等 通过该模型,CNC公司至少增加了4%的内容收入(>1200万美元)
案例十二
Anixter公司电缆的优化切割问题
所属行业:能源行业 案例时间:2000年 解决方案: Anixter公司是全球最大的电缆分销商,以往对于电缆的切割浪费非常严重,比如切割200万 英尺电缆,每英尺价值10美元,如果产生5%的切割浪费的化,就是造成100万美元的浪费,因此, Anixter 公司利用Lingo 软件建立了一个优化切割系统,以期最大程度上降低浪费 Dow 化工公司从Anixter公司购买了200万英尺的电缆,应用于其新建立的化工厂,这个项目需要超过 3500根不同长度的电缆,这些电缆的长度从200到2000英尺,价格每英尺从4美元-40美元。这些电缆需 要从超过100根主电缆线圈上进行切割。 这个基于Lingo 建立的优化切割模型如何能够把不同需求进行绑定,从而最大程度的利用原料,浪费最少 的电缆。 理想情况下,应该基本没有下脚料的剩余。 针对与该项目的问题,Anixter 公司 提供了所有可 利用所有主线缆圈的长度,及其特征,同时提供了所有需要的分段电缆的长度和特征。通过Lingo 的计算, 最终得出最佳的电缆切割方案 。在以往电缆切割中8%以内的浪费都是可以接受的,而通过Lingo 优化计 算后,这个浪费率下降为了3%, 另外很重要的一点是,它提供的切割方案非常清晰,易于操作。 这种切割优化技术可以被广泛的应用与电缆切割,棒料切割,原纸切割以及塑料切割等诸多领域
lingo软件在规划模型中的应用1
例1 货机装 运
三个货舱最大载重(吨),最大容积(米3)
前仓: 10;6800 飞机平衡
中仓: 16;8700
后仓: 8;5300
三个货舱中实际载重必须与其最大载重成比例
重量(吨) 空间( 米3/ 吨) 18 480 货物1 货物2 货物3 货物4 15 23 12 650 580 390 利润(元/ 吨) 3100 3800 3500 2850
x1 x5 x 2 x6 加工能力 50 3 4 附加约束 4( x1 x5 ) 2( x2 x6 )
x1 x5 100
原料 供应
劳动 时间
x3 0.8x5
2 x5 2 x6 480
非负约束
x4 0.75x6 x1 , x6 0
例3 自来水输送
目标 Max Z 290x11 320x12 230x13 280x14 函数 310x21 320x22 260x23 300x24 260x31 250x32 220x33
x11 x12 x13 x14 100 供应 A : x11 x12 x13 x14 50 限制 需求约束可以不变 B, C 类似处理
约束 条件
货舱 重量 x12 x22 x32 x42 16 x13 x23 x33 x43 8
货舱 容积
x11 x21 x31 x41 10
10; 6800
16; 8700
8; 5300
480x11 650x21 580x31 390x41 6800
0.8千克B1
获利44元/千克
至多100公斤A1
制订生产计划,使每天净利润最大
Lingo案例分析
最小费用运输问题i.e:model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume; endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J)); !产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));!这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 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;enddata1 LINGO中的集1.1 The Sets Section of a ModelSets are defined in an optional section of a LINGO model, called the sets section. Before you use sets in a LINGO model, you have to define them in the sets section of the model. The sets section begins with the keyword SETS: (including the colon), and ends with the keyword ENDSETS. A model may have no sets section, a single sets section, or multiple sets sections. A sets section may appear anywhere in a model. The only restriction is you must define a set and its attributes before they are referenced in the model's constraints.1.2 Defining Primitive SetsTo define a primitive set in a sets section, you specify:✓the name of the set,✓optionally, its members (objects contained in the set), and✓optionally, any attributes the members of the set may have.A primitive set definition has the following syntax:setname [/ member_list /] [: attribute_list];When using implicit set member lists, you do not have to list a name for each set member. Use the following syntax when using an implicit set member list:setname / member1..memberN / [: attribute_list];where member1 is the name of the first member in the set and memberN is the name of the last member. LINGO automatically generates all the intermediate member names between member1 and memberN. While this can be a very compact and convenient method for building a primitive set, there is one catch in that only certain formats of names are accepted for the initial and terminal member names. The following table details the available options:!集部分;sets:students:sex,age;endsets!数据部分;data:students,sex,age= John 1 16Jill 0 14Rose 0 17Mike 1 13;enddatai.e2:data:NUMBER_OF_WH = 6;enddatasets:WAREHOUSES / 1..NUMBER_OF_WH/: CAPACITY;endsets1.3 Defining Derived SetsTo define a derived set, you specify:✓the name of the set,✓its parent sets,✓optionally, its members, and✓optionally, any attributes the set members have.A derived set definition has the following syntax:setname( parent_set_list) [ / member_list /] [:attribute_list];i.e3:sets:product/ A ,B/;machine / M, N/;week/ 1..2/;allowed(product,machine,week);endsetsallowed Set Membership:Index Member1 (A,M,1)2 (A,M,2)3 (A,N,1)4 (A,N,2)5 (B,M,1)6 (B,M,2)7 (B,N,1)8 (B,N,2)i.e:sets:!学生集:性别属性sex,1表示男性,0表示女性;年龄属性age. ;students/John,Jill,Rose,Mike/:sex,age;!男学生和女学生的联系集:友好程度属性friend,[0,1]之间的数。
lingo建模应用案例_篮球队员选拔
4 篮球对选队员问题篮球队要选择5名队员上场组成出场阵容参加比赛。
8名篮球队员的身高及擅长位置如下表:出场阵容满足如下条件: (1)只能有一名中锋上场; (2)至少有一名后卫上场;(3)如1号和4号均上场,则6号不出场; (4)2号和8号至少有1个不出场;问应当选择哪5名队员上场,才能使出场队员平均身高最高。
分析与求解:这是一个0-1整数规划问题。
设0-1变量i x 如下:⎩⎨⎧=名队员被选上第名队员未选上第i i x i 1设各队员的身高分别为常数i a )8,,2,1( =i 来表示,则目标函数很容易给出:∑==8151max i ii xa Z 。
问题较为复杂的是如何根据题目给出的条件给出线性约束条件,下面对每一个条件给出约束条件:所选队员为5人,则∑==815i ix。
只能有一名中锋上场,则121=+x x ,这样保证两名中锋恰好有一名上场。
至少有一名后卫,则1876≥++x x x 。
如1号和4号均上场,则6号不出场。
则可用如下一个约束来表达:2641≤++x x x 。
当1,121==x x 时,则06=x ,满足条件;当0,121==x x 或1,021==x x ,6x 可为0或1,也满足条件;当0,021==x x ,6x 可为0或1,满足条件。
因此用该约束条件完全可代表该条件。
2号和8号至少有1个不出场,即2号和8号至多出场1个。
用约束条件来表达就是:182≤+x x 。
因此对该问题建立的数学模型如下:∑==8151max i ii xa Z⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=≤+≤++≥++=+=∑=10,,,12115..821826418762181或x x x x x x x x x x x x x x t s i i 用LINGO 编程如下:MODEL: SETS:team/1..8/:a,x; ENDSETS DATA:a=1.92,1.90,1.88,1.86,1.85,1.83,1.80,1.78;!给出身高数据; ENDDATAmax=@sum(team(i):a(i)*x(i))/5.0; @SUM(team(i):x(i))=5; !所选队员为5人; x(1)+x(2)=1; !只能有一名中锋上场; x(6)+x(7)+x(8)>=1; !至少有一名后卫上场;x(1)+x(4)+x(6)<=2; !如果1号和4号上场,则6号不上场;x(2)+x(8)<=1; !2号和8号至少有一个不出场.即出场人数至多为1个; @FOR(team(i):@bin(x(i))); !所有变量为0-1变量; END所得到的解为:x(1)=0,x(2)=1,x(3)=1,x(4)=1,x(5)=1,x(6)=1,x(7)=0,x(8)=0 即第2,3,4,5,6名队员被选上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
m i n = @s u m ( 1 i n k s : d x ) ; @ f o r ( g o n g r e n ( i ) : @s u m ( r e n w u ( j ) : x ( i ) ) = 1 ) ; @ f o r ( r e n w u ( j ) : @s u m ( g o n g r e n ( i ) : x ( i ; j ) ) = 1 ) ;
1 . 下 料 问 题
人 分 别 完 成 各 个 任 务 所 需 时 间如 表 2 所示 ,请 合 理 安 排 任 务 , 使 得 总时 间最 少 。 表 1 各 人 完 成 各个 任 务 所 需 时 间
\\
质
任 务
\
A B 9 8
b
1 2 6 7 l 0
mo d e l :
s e t s :
余料
3
0
1
1 0
7
设 五种 不 同 截法 的根 数 分别 为x 。 , x : , x , x 4 , X , 建 立 模 型
g o n g r e n / g1 . . g 5 / ;
r e n wu / r 1 . . r 5 / :
m i n z : ∑x ,
I ' x , + X 2 ≥ 1 0 0 0 ,
x l + 2 x 2 + x >2 I 0 0 0 ,
s. t .
l i n k s ( g o n g r e n , r e n w u ) : d , x ;
e n d s e t s
d a t a : d = 9 1 2 7 1 1 9 8 6 l 0 9 l 2
O l 2
五
0 O 4
需 要 量
1 O 0 0 2 0 0 o 4 O 0 o
3 1厘 米 2 1厘 米 1 2厘 米
l x i , = 0  ̄ j = 1 , … , 5
i , j = l , ・ - - , 5 此为O 一 1 规划模型 , l i n g o  ̄序如下 :
e n d d a t a
l + 2 X 3 + 4 > 2 0 0 0 ;
2术 x 2 +x 3 十2半 x 4 十 4术 X 5 >40 00 ;
@g i n ( x 1 ) ; @g i n ( x 2 ) ; @g i n ( x 3 ) ; @ g i n ( x 4 ) ; @ g i n ( x s ) ;
7 4 3 5 8 4 6 7 5 1 1 4。0 0.
L x > t 0 , i = l , 2 , 。 一 , 5 .
ml n =xl +x 2 +x 3 + x 4 +x 5 ;
9 5 8 1 1 8 :
1 + 2 >1 0 00 ;
L i n g o 的
典
型
应
用
举
例
研
究
刘 浪
邹腊 英
3 3 2 0 0 0 )
( 江西财经职业学院 , 江西 九江
摘 要: L i n g o  ̄ 以用 来 求 解很 多规 划 问题 , 也 可 以 用 来 求 解方 程 组 等 , 是 数 学建 模 比赛 常 用 的数 学软 件 。 本 文 通 过 三 个 案例  ̄ a L i n g o 典 型应 用 , 说 明 了在 数 学 实验 课 中  ̄ . L i n g o 内容 的作 用 。 关键词 : L i n g o 典型应用 数 学 实验 L i n g o 可 以 用 来 求 解各 种 规 划 问题 .也 可 以用 来求 解方 程 组等 . 在 经 济管 理方 面有 广泛 应用 , 也 是 全 国大 学 生 数 学 建 模 比赛 中经 常 用 到 的数 学 软 件 。在 数 学 实 验 课 中可 以适 当加 入 L i n g o 软 件 的 内容 。 让 学 生 认 识 到 可 以利 用 L i n g o 解 决 自 己专 业 课 程 中 的一 些 问 题 , 下 面 以三 个 案 例 说 明L i n g o 的典 型 应 用 。
C
D E
7
4 9
4
6 5
3
7 8
5
5 1 1
8
1 1 8
解 : 建 立 数 学 模 型 : m i n = 吝 x
蚶 .
\
材料
截 法
、 \
1 1 结果为 : 共用 料2 2 5 0 根。 其 中解 法 二 1 O 0 0 根 . 截 法 三 1 0 0 0 根. 截法五2 5 0 根。 2 . 指 派 问题 设 有n 项任务需分配给n 个 工人 去做 ,每 个 工 人做 一项 任 务, 由于 各 工 人 的 工 作 效 率 不 相 同 , 所 以 完成 同一 任务 所需 时 间也不同 , 设 工 人i 完成任务i 所需时间为C i i , 问 如何 安 排 任 务 ,
d
l 1 9 9 1 2
下 料 问 题 是L i n g o 应用 中一 类 比较 常 见 的 问 题 ,一 维下 料 问题 : 设需要n 种材料A , A : , …, A , 数量分别为b i , 对 一 件 固定 长 的原 材 料 可 以 得 出 m 种不 同切割方法 , 下 面举 例 说 明用 I J j n . 求解下料问题的方法。 例: 某 新 型原 材 料 每 根 长5 5 厘米. 现 需 要 切 割 成 三 种 长 度 的材 料 ,长度分 别为3 1 厘米 , 2 l 厘米 , 1 2 厘 米 , 数 量 分 别 为 1 0 0 0 , 2 0 0 0, 4 0 0 0 根, 求最 优的下料方式 , 使 所 需 该 新 型 原材 料 的 总根 数 最 少 。 解: 下 料方 式见 表 1 : 表 1 不 同 下 料 方 式