Lingo超经典编辑案例解析全套汇编
lingo学习例题详细解读

说明本文档一共包含两个个非线性的lingo例题的程序学习其中包含一些数学建模的思想同时对两个例题采取了多种编程方式希望在这种仿真式多角度的编程思想能够给你启发与帮助例题一某公司现有数额为20亿的一笔资金可作为未来5年内的投资资金,市场上有8个投资项目(如股票、债券、房地产、…)可供公司作投资选择。
其中项目1、项目2每年初投资,当年年末回收本利(本金和利润);项目3、项目4每年初投资,要到第二年末才可回收本利;项目5、项目6每年初投资,要到第三年末才可回收本利;项目7只能在第二年年初投资,到第五年末回收本利;项目8只能在第三年年初投资,到第五年末回收本利。
公司财务分析人员给出一组实验数据,见表1(见附录1)。
试根据实验数据确定5年内如何安排投资?使得第五年末所得利润最大?例题一分析针对问题一,这是典型的单目标优化问题,可以利用线性规划模型进行解决。
其目标是在不考虑投资风险的情况下,对20亿投资金进行合理的分配,使得在第五年末的利润达到最大。
将五年中8个项目的投资利润累加起来,得到的就是要求的目标函数,要做的是如何安排五年的投资计划,每年投资哪几个项目,每个项目投资多少,该决策要受到两个方面的约束:(1)各个投资项目的投资上限。
在对任何一个项目的投资周期内,都不能超过该项目的投资上限。
所谓一个投资周期是指从开始投资到第一次获得利润,例如对于项目4,第一年投资30000万元,由于它的运行周期是两年,投资上限是40000万元,所以第二年投资项目4的上限是10000万元。
(2)每年年初用于投资的资金。
由于不同的项目有不同的运行周期,所以在五年内每年都会有利润的产生。
每年年初用于投资的资金都要小于或等于上年末所拥有的资金。
数据5.问题一的解答针对问题一,我们确定模型一5.1 模型一的建立5.1.1 确定目标函数在无风险的情况下对20亿投资资金进行8个项目的投资选择,使得在第五年末的投资利润达到最大,预投资方案如下表五所示:根据上表我们确定出目标函数为:5811max ij j i i W x p ===∑∑5.1.2 确定约束条件 约束一:投资金额的上限⑴ 项目1和项目2每年投资金额的上限ij j x U ≤,其中i =1,2,3,4,5 j =1,2⑵ 项目3和项目4在两年的投资周期内投资金额的上限1,ij i j j x x U -+≤, 其中i =2,3,4 j =3,4⑶ 项目5和项目6在三年的投资周期内投资金额的上限1,2,ij i j i j j x x x U --++≤,其中i =3,4 j =5,6⑷ 项目7只能在第二年年初投资,且投资周期为四年,它的投资上限277x U ≤⑸ 项目8只能在第三年年初投资,且投资周期为三年,它的投资上限388x U ≤约束二:每年年初用于投资的资金 ⑴ 第一年年初用于投资的资金 120R ≤⑵ 第二年年初用于投资的资金21112121314151620R p x p x x x x x ≤++----⑶ 第三年年初用于投资的资金2231122133144151623242526271120x x i i i i R x p x p x p x p x x x x x ==≤++++-------∑∑⑷ 第四年年初用于投资的资金33224112233441551662526273334353638111120i i i i i i i i R x p x p x p x p x p x p x x x x x x x x ====≤++++++--------∑∑∑∑⑸ 第五年年初用于投资的资金443322511223344556627353638434411111120i i i i i i i i i i i i R x p x p x p x p x p x p x x x x x x ======≤++++++------∑∑∑∑∑∑5.1.3 综上所述我们得到问题一的线性规划模型5811max ij j i i W x p ===∑∑这是一个线性规划模型,因此我们利用lingo 软件进行编程求解(求解程序见附录2),解得第五年末的最大利润为23.26亿元,五年内的投资方案如下表五所示:在第一年年初,投资项目1到项目8分别为6亿元、3亿元、4亿元、1.803亿元、0、0.267亿元、0、0;在第二年年初,投资项目1到项目8分别为6亿元、3亿元、0、1.197亿元、0.663亿元、0、4亿元、0;在第三年年初,投资项目1到项目8分别为6亿元、3亿元、1.151亿元、0、2.337亿元、1.733亿元、0、3亿元;在第四年年初,投资项目1到项目8分别为6亿元、0、2.849亿元、3亿元、0、0、0、0;在第五年年初,投资项目1到项目8分别为6亿元、3亿元、0、0、0、0、0、0;5.3 模型一结果分析在模型一中,影响最终利润大小的共有三个因素:预计到期利润率,投资金额的上限,投资资金。
案例lingo分析

Righthand Side Ranges Row Current Allowable Allowable RHS Increase Decrease 2 50.00000 10.00000 6.666667 3 480.0000 53.33333 80.00000 4 100.0000 INFINITY 40.00000 “资源”的影子价格的进一步分析: 影子价格的作用(即在最优解下“资源”增加1个单位时“效 益”的增量)是有限制的。每增加1桶牛奶利润增长48元(影子价 格),但上面输出CURRENT RHS的ALLOWABLE INCREASE、ALLOWABLE DECREASE中,给出了影子价格有意义条件下约束右端的限制范围: milk原料最多增加10(桶牛奶),time劳动时间最多增加53(小时 )。 现回答附加问题1)第2问: 虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶 牛奶。同理,可以用低于每小时2元的工资聘用临时工人以增加劳 动时间价格概念回答附加问题: 1)用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,当然 应该作这项投资。 2)聘用临时工人以增加劳动时间,付给的工资低于劳动时间影 子价格才可增加利润,所以工资最多是每小时2元。
Ranges in which the basis is unchanged: Objective Coefficient Ranges Current Allowable Allowable Variable Coefficient Increase Decrease X1 72.00000 24.00000 8.000000 X2 64.00000 8.000000 16.00000
案例
根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每 公斤A2获利16元。现在加工厂每天能得到50桶牛奶的供应,每天正 式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤 A1,乙车间的加工能力没有限制。 试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下 3个附加问题: 1)若用35元可以买到1桶牛奶,应否作这项投资?若投资,每天最 多购买多少桶牛奶? 2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最 多是每小时几元? 3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生 产计划?
运用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模型参考),Lingo 模型由两部分组成:(一) 目标(objective):最优化目标。
(二)限制条件(constraint). (下载网址:)1.我的食谱由四种食品组成:,果仁巧克力,冰淇淋,可乐,奶酪.一块果仁巧克力价格为50 美分,一杯冰淇淋价格为20美分, 一瓶可乐价格为30美分, 一快奶酪价格为80美分.我每天的营养最低需求: 500 卡路里,6 盎司巧克力,10 盎司〔讲评〕师:该问题的目标是什么?生:食谱中饮食的成本最低师:限制条件?生:满足每天卡路里,巧克力,糖,脂肪的最低需求师:选择哪些变量?生:果仁巧克力,冰淇淋,可乐,奶酪的数量( 参考模型:lingo-LP1.lg4)讨论:如果巧克力冰淇淋的价格变为原来的两倍,食谱将如何改动?练习:1.1.你决意生产两种糖果:硬糖和软糖,糖果仅由糖,坚果,和巧克力制成.你现在有100盎司糖,20盎司坚果,30盎司巧克力.软糖须含有至少20%的坚果.硬糖须含有至少10%的坚果和10%的巧克力.一盎司的软糖售价为25美分, 一盎司的硬糖售价为20美分. 试安排生产计划( 参考模型:lingo-LP1-1.lg4)1.2.某公司生产 A, B, C 三种产品,售价分别为: A, $10;B,$56;C,$100.生产一单位A,需1小时的劳力; 生产一单位 B,需2小时的劳力加上2单位的A; 生产一单位 C,需3小时的劳力加上1单位的B.现有40小时的劳力, 试安排生产计划.( 参考模型:lingo-LP1-2.lg4)2.Donovan公司生产一种电子产品.已知明年四季度的需求(须按时交货):季度1,4000件; 季度2,2000件; 季度3,3000件; 季度4,10000件;公司员工每年有一个季度休假,每个员工年薪为$30,000,每季度最多可生产500件产品.每个季度末公司须为每件存货付存储费$30.公司现有600件产品,如何安排明年的生产?〔讲评〕师:该问题的目标是什么?生:员工年薪与存储费总和最低师:限制条件?生:每季度初的库存与该季度生产量的和须满足该季度的需求师:如何表示员工总数?生甲:各季度上班的员工x(1),x(2),x(3),x(4)总和生乙:甲的总和是员工总数的3倍,因为每个员工工作3个季度。
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。
通过验证也可知这两组解均满足。
附1:用LINGO求解线性规划的例子一奶制品加工厂用牛奶生产A1、A2

附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*3x,x2桶牛奶可生产4*x2公1斤A2,获利16*4x2,故z=72x1+64x2约束条件:原料供应:生产A1、A2的原料(牛奶)总量不超过每天的供应50桶,即x1+x2≤50劳动时间:生产A1、A2的总加工时间不超过每天正式工人总的劳动时间480小时,即12x1+8x2≤480设备能力:A1的产量不得超过设备甲每天的加工能力100小时,即3x1≤100≥0非负约束:x1、x2均不能为负值,即x1≥0,x2综上所述可得max z=72x1+64x2s.t.x1+x2≤5012x1+8x2≤4803x1≤100x1≥0,x2≥0显然,目标函数和约束条件都是线性的,这是一个线性规划(LP),求出的最优解将给出使净利润最大的生产计划,要讨论的问题需要考虑参数的变化对最优解和影响,一般称为敏感性(或灵敏度)分析。
LINGO求解线性规划用LINGO求解线性规划时,首先在LINGO软件的模型窗口输入一个LP模型,模型以MAX或MIN 开始,按线性规划问题的自然形式输入(见下面例子所示)。
- 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);end求得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;endsetsdata:c1=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 solveriterations: 26Variable Val ue Reduced CostS( 1) 1.000000 -4.000000S( 2) 1.0000 00 0.000000S( 3) 0.0000 00 2.000000S( 4) 1.0000 00 -2.000000S( 5) 0.0000 00 0.000000S( 6) 1.0000 00 -1.000000S( 7) 1.0000 00 0.000000S( 8) 0.0000 00 0.000000S( 9) 0.0000 00 2.000000S( 10) 0.00000 0 0.000000Objectivevalue: 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 45 6a 1.25 8.75 0.5 5.753 7.25b 1.25 0.75 4.75 56.57.75d 3 5 4 76 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.0000002) 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 ,在其它条件不变下使总吨公里数最小。