Lingo超经典案例大全
数学建模lingo软件经典例题
客户 1
客户 2
客户 3
客户 4
客户 5
客户 6
员工 1
20
15
16
5
4
7
员工 2
17
15
33
12
8
6
员工 3
9
12
18
16
30
13
员工 4
12
8
11
27
19
14
员工 5
未服务
7
10
21
10
32
员工 6
未服务
未服务
未服务
6
11
13
5、设某企业拥有两个工厂甲和乙、四个销售超市和三个仓库。工厂产量分别为 9,8 个单位。四个顾客需求量分
别为 3,5,4,5 个单位。工厂到仓库、仓库到超市的运费单价如下表。问如何安排总运费最少的运输方案。
工厂 1
工厂 2
超市 1
超市 2
超市 3
超市 4
仓库 1
1
3
5
7
——
——
仓库 2
2
1
9
6
7
——
仓库 3
——
2
——
6
7
4
6、某公司有 6 个建筑工地要开工,每个工地的位置(用平面坐标 ( a, b)表示,距离单位为千米)及水泥的日用
量 d (用量单位为吨)由下表给出。目前有两个临时料场位于 P (5,1) 和 Q( 2, 7),日储量各有 20 吨。
1
2
3
4
5
6
a
1.25
8.75
0.5
5.75
3
运用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示例共32页
❖ 知识就是财富 ❖ 丰富你的人生
71、既然我已经踏上这条道路,那么,任何东西都不应妨碍我沿着这条路走下去。——康德 72、家庭成为快乐的种子在外也不致成为障碍物但在旅行之际却是夜间的伴侣。——西塞罗 73、坚持意志伟大的事业需要始终不渝的精神。——伏尔泰 74、路漫漫其修道远,吾将上下而求索。——屈原 75、内外相应,言行相称。——韩非
数学建模软件lingo示例
11、用道德的示范来造就一个人,显然比用法律来约束他更有价值。—— 希腊
12、法律是无私的,对谁都一视同仁。在每件事上,她都不徇私情。—— 托马斯
13、公正的法律限制不了好的自由,因为好人不会去做法律不允许的事 情。——弗劳德
14、法律是为了保护无辜而制定的。——爱略特 15、像房子一样,法律和法律都是相互依存的。——伯克
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超经典案例大全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。
通过验证也可知这两组解均满足。
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求解线性规划的例子
附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 软件应用举例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经典例题
lingo经典例题今天咱们来一起看看Lingo的经典例题呀。
比如说有这么一个例子,学校要组织一次春游活动。
老师要安排大巴车来接送同学们。
每辆大巴车能坐50个人。
咱们班有230个同学呢。
那我们就可以用Lingo的思路来想想需要多少辆大巴车。
这就像是把同学们分成一组一组的,每组50个人,看看能分成多少组,要是还有剩下的同学,哪怕就几个,也得再安排一辆车。
那230除以50等于4余30,这剩下的30个同学也得坐一辆车呀,所以一共就需要5辆大巴车啦。
这就有点像Lingo解决问题的感觉,把实际的情况变成数字和计算。
再讲讲另一个例子。
学校的小商店卖铅笔和橡皮。
铅笔一支2元,橡皮一块1元。
小明有10元钱,他想买铅笔和橡皮,他想尽可能多的买东西。
那我们可以这样想,如果都买铅笔,10元可以买5支铅笔就没有钱买橡皮了。
要是买4支铅笔就花了8元,还剩下2元就能买2块橡皮。
这就是一种简单的组合问题,Lingo也能帮助我们找到最好的组合方式呢。
还有一个关于分糖果的例子。
老师拿来了100颗糖果,要分给三个小组。
第一组有20个同学,第二组有30个同学,第三组有25个同学。
我们想让每个同学分到的糖果尽量一样多。
那我们先算出总共有多少个同学,20 + 30 + 25 = 75个同学。
100颗糖果分给75个同学,100除以75约等于1.33颗。
但糖果不能分成小数呀,所以我们可以想办法先每个同学分1颗糖果,这样就分出去了75颗,还剩下25颗糖果。
我们可以再把这25颗糖果分给一些同学,这时候就可以根据小组的人数比例来分啦。
这也是一种Lingo可能会涉及到的分配问题的简单版呢。
这些例子虽然很简单,但是就像Lingo经典例题的小缩影。
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求解规划问题实例问题一:某公司打算向它的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循环例子
例2 运输问题解: 设决策变量ij x = 第i 个发点到第j 个售点的运货量,i =1,2,…m; j =1,2,…n; 记为ij c =第i 个发点到第j 个售点的运输单价,i =1,2,…m; j =1,2,…n 记i s =第i 个发点的产量, i =1,2,…m; 记j d =第j 个售点的需求量, j =1,2,…n. 其中,m = 6; n = 8.设目标函数为总成本,约束条件为(1)产量约束;(2)需求约束。
于是形成如下规划问题:nj m i x n j d xm i s x x c ij j n i ij i mj ij m i nj ij ij ,...,2,1,,...,2,1,0 ,...,2,1,,...,2,1, st.z min 1111==>=<==<==∑∑∑∑====把上述程序翻译成LINGO 语言,编制程序如下:!exam_2.lg4 源程序model : !6发点8收点运输问题;sets :rows/1..6/: s; !发点的产量限制;cols/1..8/: d; !售点的需求限制;links(rows,cols): c, x; !运输单价,决策运输量;endsets!-------------------------------------;data:s = 60,55,51,43,41,52;d = 35 37 22 32 41 32 43 38;c = 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;enddata!------------------------------------;min = @sum(links: c*x); !目标函数=运输总成本;@for(rows(i):@sum(cols(j): x(i,j))<=s(i) ); ! 产量约束;@for(cols(j):@sum(rows(i): x(i,j))=d(j) ); !需求约束;end。
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应用实例
解窗口说明例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。
生产数据如下表所示:若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
max=60*desks+30*tables+20*chairs;8*desks+6*tables+chairs<=48;4*desks+2*tables+1.5*chairs<=20;2*desks+1.5*tables+.5*chairs<=8;tables<=5;求解这个模型,并激活灵敏性分析。
这时,查看报告窗口(Reports Window),可以看到如下结果。
“Global optimal solution found at iteration: 3”表示3次迭代后得到全局最优解。
“Objective value:280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:造2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。
所以desks、chairs是基变量(非0),tables是非基变量(0)。
“Slack or Surplus”给出松驰变量的值:第1行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束)第2行松驰变量 =24第3行松驰变量 =0第4行松驰变量 =0第5行松驰变量 =5“Reduced Cost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。
其中基变量的reduced cost值应为0,对于非基变量 X j, 相应的 reduced cost值表示当某个变量X j 增加一个单位时目标函数减少的量( max型问题)。
本例中:变量tables对应的reduced cost值为5,表示当非基变量tables的值从0变为 1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。
附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超经典案例大全
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。
通过验证也可知这两组解均满足。
Lingo的一个缺陷是:每次只能输出最优解中的一个(有时不只一个)。
lingo——精选推荐
1.某厂按合同规定须于当年每个季度末分别提供10,15,25,20台同一规格的柴油机。
已知该厂各季度的生产能力及生产每台柴油机的成本如表所示。
又如果生产出来的柴油机当季不交货的,每台每积压一个季度需储存、维护等费用0.15万元。
要求在完成合同的情况下,作出使该厂全年生产(包括储存、维护)费用最小的决策。
2.某工厂要对一种产品制订今后四个时期的生产计划,据估计在今后四个时期内,市场对于该产品的需求量如表所示。
成本为1千元;每个时期生产能力所允许的最大生产批量为不超过6个单位;每个时期末未售出的产品,每单位需付存储费0。
5千元。
还假定在第一个时期的初始库存量为0,第四个时期之末的库存量也为0。
试问该厂应如何安排各个时期的生产与库存,才能在满足市场需要的条件下,使总成本最小。
3.某车间需要按月在月底供应一定数量的某种部件给总装车间,由于生产条件的变化,该车间在各月份中生产每单位这种部件所需耗费的工时不同,各月份的生产量于当月的月底前,全部要存入仓库以备后用。
已知总装车间的各个月份的需求量以及在加工车间生产该部件每单位数量所需工时数如表所半年的逐月生产计划,既使得满足需要和库容量的限制,又使得生产这种部件的总耗费工时数为最少。
4.有一部货车每天沿着公路的四个零售店卸下6箱货物,如果各零售店因出售该货物所得的利润如下表所示,试求在各零售店各卸下几箱,能使获得总利5.某学校规定,运筹学专业的学生毕业时必须至少学习两门数学课、三门运筹学课和两门计算机课。
这些课程的编号、名称、学分、所属类别和选修课要求如下表。
问:(1)为了选修课程门数最少,应学习哪些课程?(2) 为了选修课程获得的学分最多,应学习哪些课程?(3) 如果某个学生既希望选修课程的数量少,或者希望所获得的学分多,他可以选择哪些课程?6. 一个木材储运公司有很大的仓库用以储运出售木材。
由于木材季度价格的变化,该公司于每季度初购进木材,一部分于本季度内出售,一部分储存起来以后出售。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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);求得x1=3,x2=1,最大值为4.运用matlab求时可以发现有两组解:x1=3,x2=1和x1=2,x2=2。
通过验证也可知这两组解均满足。
Lingo的一个缺陷是:每次只能输出最优解中的一个(有时不只一个)。
那么,怎样求得其他解呢?一个办法是将求得的解作为约束条件,约束x1不等于3,x2不等于1,再求解。
如下:model:max=x1+x2;x1+9/14*x2<=51/14;-2*x1+x2<=1/3;@gin(x1);@gin(x2);@abs(x1-3)>0.001;@abs(x2-1)>0.001;end求得x1=2,x2=2.若再次排除这组解,发现Lingo解不出第三组解了,这时我们可以断定:此优化模型有两组解:x1=3,x2=1和x1=2,x2=2.求解模型时需注意:Lingo中,默认变量均为非负;输出的解可能是最优解中的一组,要判断、检验是否还有其他解(根据具体问题的解的情况或用排除已知最优解的约束条件法)。
2、非线性整数规划:model:sets:row/1..4/:b;col/1..5/:c1,c2,x;link(row,col):a;endsetsc1=1,1,3,4,2;c2=-8,-2,-3,-1,-2;a=1 1 1 1 11 2 2 1 62 1 6 0 00 0 1 1 5;b=400,800,200,200;enddatamax=@sum(col:c1*x^2+c2*x);@for(row(i):@sum(col(j):a(i,j)*x(j))<b(i));@for(col:@gin(x));@for(col:@bnd(0,x,99));End求得:x1=50,x2=99,x3=0,x4=99,x5=20.最大值为51568。
这里,我们看不出是否还有其他解,需要将已知的最优解排除掉。
利用1的方法分别可得到其他解:x1=48,x2=98,x3=1,x4=98,x5=19.最大值为50330。
x1=45,x2=97,x3=2,x4=97,x5=18.最大值为49037。
x1=43,x2=96,x3=3,x4=96,x5=17.最大值为47859。
x1=40,x2=95,x3=4,x4=95,x5=16.最大值为46636。
......发现x1,x2,x4,x5均单调减少,x3单调增加。
最大值越来越小。
可以简单判断第一组为最优的。
当然,能够一一检验最好。
二、最优选择问题某钻井队要从10个可供选择的井位中确定5个钻井探油,使总的钻探费用为最小。
若10个井位的代号为s1,s2,...,s10,相应的钻探费用c1,c2,...,c10为5,8,10,6,9,5,7,6,10,8.并且井位选择上要满足下列限制条件:(1)或选择s1和s7,或选择钻探s9;(2)选择了s3或s4就不能选s5,或反过来也一样;(3)在s5,s6,s7,s8中最多只能选两个.试建立这个问题的整数规划模型,确定选择的井位。
取0-1变量s_i,若s_i=1,则表示选取第i个井,若s_i=0,则表示不选取第i个井。
建立数学模型如下:model:sets:variables/1..10/:s,cost;endsetsdata:cost=5 8 10 6 9 5 7 6 10 8;enddatamin=@sum(variables:cost*s);(s(1)+s(7)-2)*(s(9)-1)=0;s(3)*s(5)+s(4)*s(5)=0;@sum(variables(i)|i#ge#5#and#i#le#8:s(i))<=2;@sum(variables:s)=5;@for(variables:@bin(s));end求得:Total solver iterations: 26Variable Value Reduced Cost S( 1) 1.000000 -4.000000 S( 2) 1.000000 0.000000 S( 3) 0.000000 2.000000S( 4) 1.000000 -2.000000S( 5) 0.000000 0.000000S( 6) 1.000000 -1.000000S( 7) 1.000000 0.000000S( 8) 0.000000 0.000000S( 9) 0.000000 2.000000S( 10) 0.000000 0.000000Objective value: 31.00000即选择井S1,S2,S4,S6,S7以达到最小费用31.三、路径和最短问题:设平面上有N个点,求一点,使得这个点到所有点距离之和最小。
这里,取N=8。
数据点是1~5的随机数。
Lingo:model:sets:position/1..8/:x,y;ab/1/:a,b;endsetsdata:@text('E:\matlab7.0\work\data.txt')=x,y;!读入到matlab的工作空间中;@text('E:\matlab7.0\work\data1.txt')=a,b;enddatax(1)=1+4*@rand(0.12345);y(1)=1+4*@rand(0.25);@for(position(i)|i#ge#2:x(i)=1+4*@rand(x(i-1)));!随机产生1~5中的8个点;@for(position(i)|i#ge#2:y(i)=1+4*@rand(y(i-1)));[obj]min=@sum(position(i):@sqrt((x(i)-a(1))^2+(y(i)-b(1))^2));!目标函数;@bnd(1,a(1),5);@bnd(1,b(1),5);endmatlab:clear;clc;close all;load('data.txt');load('data1.txt');hold on;plot(data1(1),data1(2),'o','MarkerSize',15,'MarkerFaceColor','r');plot(data(:,1),data(:,2),'or','MarkerSize',15,'MarkerFaceColor','b');set(gcf,'Color','w');set(gca,'FontSize',16)grid off;data1=repmat(data1,8,1);P=[data1(:,1)';data(:,1)'];Q=[data1(:,2)';data(:,2)'];plot(P,Q,'g','LineWidth',2);xlabel('x');ylabel('y');title('Solving the problem of the minimun distance of tne sum of all the blue points towards the being known red point.');gtext(['The minimun distance is ',num2str(10.2685),'.'],'FontSize',16,'Color','r');三、运输+选址问题:某公司有6个建筑工地,位置坐标为(ai, bi) (单位:公里),水泥日用量di (单位:吨)i 1 2 3 4 5 6a 1.25 8.75 0.5 5.75 3 7.25b 1.25 0.75 4.75 5 6.5 7.75d 3 5 4 7 6 11(1)现有2料场,位于A (5, 1), B (2, 7),记(x j,y j),j=1,2, 日储量e j各有20吨。
假设料场和工地之间有直线道路,制定每天的供应计划,即从A, B两料场分别向各工地运送多少吨水泥,使总的吨公里数最小。
取决策变量c_ij表示i工地从j料场运来的水泥量。
模型(线性模型)为:model:sets:demand/1..6/:a,b,d;supply/1..2/:x,y,e;link(demand,supply):c;endsetsdata:a=1.25 8.75 0.5 5.75 3 7.25;b=1.25 0.75 4.75 5 6.5 7.75;d=3 5 4 7 6 11;x=5 2;y=1 7;e=20 20;enddata[obj]min=@sum(link(i,j):c(i,j)*@sqrt((a(i)-x(j))^2+(b(i)-y(j))^2));!目标函数; @for(demand(i):@sum(supply(j):c(i,j))=d(i));@for(supply(j):@sum(demand(i):c(i,j))<=e(j));end求得:C( 1, 1) 3.000000C( 1, 2) 0.000000C( 2, 1) 5.000000C( 2, 2) 0.000000C( 3, 1) 0.000000C( 3,2) 4.000000C( 4,1) 7.000000C( 4,2) 0.000000C( 5,1) 0.000000C( 5,2) 6.000000C( 6,1) 1.000000C( 6, 2) 10.00000Objective value: 136.2275(2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下使总吨公里数最小。