lingo的集合
- 格式:doc
- 大小:27.50 KB
- 文档页数:3
三.Lingo 中的基本集合与派生集合例4:料场选址问题六个建筑工地的位置(用平面坐标a 、b 表示,距离单位:km )及其对水泥的日用量(用d 表示,单位:t )由下表给出:工地的位置(a ,b )及 水泥日用量d-------------------------------------------------------------------------------------------------- 工地编号 1 2 3 4 5 6 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--------------------------------------------------------------------------------------------------现有两个临时料场位于P(5,1), Q(2,7),每日提供水泥的最大能力分别为20t. 假设从料场到各工地均有直线道路连接,运输费用与距离、重量成正比。
(1)请制定运输计划,使总运费尽量低。
(2)进一步调整这两个临时料场的位置,使总运费最低。
解:第i 号工地:位置),(i i b a ,水泥日用量i d , i=1,2,3,4,5,6.第j 号料场:位置),(j j y x ,水泥日供应能力j e , j=1,2.从j 号料场向i 号工地的日运输水泥量记为 ij c .注意:在问题(1)中,),(j j y x 为已知数据,故决策变量为ij c ,共12个; 在问题(2)中,),(j j y x 待定,故决策变量为ij j j c y x ,,,共16个。
从j 号料场到i 号工地,距离为22)()(i j i j b y a x -+-,送去重量为ij c 的水泥,二者乘积即为运输费。
目标函数: ∑∑==-+-216122)()(m i n j i i j i j ij b y a x c约束条件: 满足需求: 6,...,2,1,21==∑=i d ci j ij供应能力: j i ij e c≤∑=61,j=1,2非负性: 0≥ij c这就是本题的优化模型。
LINGO中的集实例:例:使用LINGO软件计算6个发点8个收点的最小费用运输问题。
产销单位不用集合时的程序(表达式又长又复杂,不易修改,不易维护)MODEL:!目标函数;[_1]MIN=6*VOLUME_WH1_V1+2*VOLUME_WH1_V2+6*VOLUME_WH1_V3+7*VOLUME_WH1_ V4+4*VOLUME_WH1_V5+2*VOLUME_WH1_V6+9*VOLUME_WH1_V7+5*VOLUME_WH1_V8+4* VOLUME_WH2_V1+9*VOLUME_WH2_V2+5*VOLUME_WH2_V3+3*VOLUME_WH2_V4+8*VOLUM E_WH2_V5+5*VOLUME_WH2_V6+8*VOLUME_WH2_V7+2*VOLUME_WH2_V8+5*VOLUME_WH3 _V1+2*VOLUME_WH3_V2+VOLUME_WH3_V3+9*VOLUME_WH3_V4+7*VOLUME_WH3_V5+4*V OLUME_WH3_V6+3*VOLUME_WH3_V7+3*VOLUME_WH3_V8+7*VOLUME_WH4_V1+6* VOLUME_WH4_V2+7*VOLUME_WH4_V3+3*VOLUME_WH4_V4+9*VOLUME_WH4_V5+2*VOLUM E_WH4_V6+7*VOLUME_WH4_V7+VOLUME_WH4_V8+2*VOLUME_WH5_V1+3*VOLUME_WH5_V 2+9*VOLUME_WH5_V3+5*VOLUME_WH5_V4+7*VOLUME_WH5_V5+2*VOLUME_WH5_V6+6* VOLUME_WH5_V7+5*VOLUME_WH5_V8+5*VOLUME_WH6_V1+5*VOLUME_WH6_V2+2*VOLUM E_WH6_V3+2*VOLUME_WH6_V4+8*VOLUME_WH6_V5+VOLUME_WH6_V6+4*VOLUME_WH6_V 7+3*VOLUME_WH6_V8;[_2]VOLUME_WH1_V1+VOLUME_WH2_V1+VOLUME_WH3_V1+VOLUME_WH4_V1+VOLUME_WH 5_V1+VOLUME_WH6_V1=35;[_3]VOLUME_WH1_V2+VOLUME_WH2_V2+VOLUME_WH3_V2+VOLUME_WH4_V2+VOLUME_WH 5_V2+VOLUME_WH6_V2=37;[_4]VOLUME_WH1_V3+VOLUME_WH2_V3+VOLUME_WH3_V3+VOLUME_WH4_V3+VOLUME_WH 5_V3+VOLUME_WH6_V3=22;[_5]VOLUME_WH1_V4+VOLUME_WH2_V4+VOLUME_WH3_V4+VOLUME_WH4_V4+VOLUME_WH 5_V4+VOLUME_WH6_V4=32;[_6]VOLUME_WH1_V5+VOLUME_WH2_V5+VOLUME_WH3_V5+VOLUME_WH4_V5+VOLUME_WH 5_V5+VOLUME_WH6_V5=41;[_7]VOLUME_WH1_V6+VOLUME_WH2_V6+VOLUME_WH3_V6+VOLUME_WH4_V6+VOLUME_WH 5_V6+VOLUME_WH6_V6=32;[_8]VOLUME_WH1_V7+VOLUME_WH2_V7+VOLUME_WH3_V7+VOLUME_WH4_V7+VOLUME_WH 5_V7+VOLUME_WH6_V7=43;[_9]VOLUME_WH1_V8+VOLUME_WH2_V8+VOLUME_WH3_V8+VOLUME_WH4_V8+VOLUME_WH 5_V8+VOLUME_WH6_V8=38;[_10]VOLUME_WH1_V1+VOLUME_WH1_V2+VOLUME_WH1_V3+VOLUME_WH1_V4+VOLUME_W H1_V5+VOLUME_WH1_V6+VOLUME_WH1_V7+VOLUME_WH1_V8<=60;[_11]VOLUME_WH2_V1+VOLUME_WH2_V2+VOLUME_WH2_V3+VOLUME_WH2_V4+VOLUME_W H2_V5+VOLUME_WH2_V6+VOLUME_WH2_V7+VOLUME_WH2_V8<=55;[_12]VOLUME_WH3_V1+VOLUME_WH3_V2+VOLUME_WH3_V3+VOLUME_WH3_V4+VOLUME_W H3_V5+VOLUME_WH3_V6+VOLUME_WH3_V7+VOLUME_WH3_V8<=51;[_13]VOLUME_WH4_V1+VOLUME_WH4_V2+VOLUME_WH4_V3+VOLUME_WH4_V4+VOLUME_W H4_V5+VOLUME_WH4_V6+VOLUME_WH4_V7+VOLUME_WH4_V8<=43;[_14]VOLUME_WH5_V1+VOLUME_WH5_V2+VOLUME_WH5_V3+VOLUME_WH5_V4+VOLUME_W H5_V5+VOLUME_WH5_V6+VOLUME_WH5_V7+VOLUME_WH5_V8<=41;[_15]VOLUME_WH6_V1+VOLUME_WH6_V2+VOLUME_WH6_V3+VOLUME_WH6_V4+VOLUME_W H6_V5+VOLUME_WH6_V6+VOLUME_WH6_V7+VOLUME_WH6_V8<=52;END而用集合表示则简单得多。
lingo集合的三种最常用经典用法热度11已有392 次阅读2010-8-10 12:24 |个人分类:lingo小经验|!集合的使用初步,eg供求问题;MODEL:SETS:QUARTERS/1,2,3,4/:DEM,RP,OP,INV;ENDSETSMIN=@SUM(QUARTERS:400*RP+450*OP+20*INV);@FOR(QUARTERS(I):RP(I)<40);@FOR(QUARTERS(I)|I#GT#1:INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););INV(1)=10+RP(1)+OP(1)-DEM(1);DATA:DEM=40,60,75,25;ENDDATAEND!稀疏集合的使用方法, 经典最短路问题,;model:sets:cities/S,A1,A2,A3,B1,B2,C1,C2,T/:L; !cities到城市s的距离,索引使用时自动把S,A1..编成了1,2..;roads(cities,cities)/S,A1 S,A2 S,A3A1,B1 A1,B2 A2,B1 A2,B2, A3,B1 A3,B2B1,C1 B1,C2 B2,C1 B2,C2C1,T C2,T/:D;endsetsdata:D= 6 3 36 5 8 67 46 7 8 95 6; !数据段集合的赋值,必须对应集合所有属性,形成一一照应,否则就不要再数据段赋值,在求解段付部分集合的值也是可以的。
;enddataL(1)=0; !这里的索引不能用L(S)=0,只能用L(1)=0,或者用L(index(s))=0 ;@for(cities(i)|i#gt#1:L(i)=@min(roads(j,i):L(j)+D(j,i)););end!稀疏集合的一种好的方法,元素过滤法,体会对索引的操作,以及相应的复制方式,最有配对eg;model:sets:students/s1..s8/;pairs(students,students)|&2#gt#&1:benefit,match;endsetsdata:benefit=9 3 4 2 1 5 61 7 3 52 14 4 2 9 21 5 5 28 7 62 34;enddatamax=@sum( pairs(i,j):benefit(i,j)*match(i,j) );@for(students(i):@sum(pairs(j,k)|(j#eq#i)#or#(k#eq#i):match(j,k))=1);@for(pairs(i,j):@bin(match(i,j)));end。
lingo集合定义好的,以下是为您生成的关于“lingo 集合定义”的文章:---【lingo 集合定义】嘿,朋友们!不知道你们有没有过这样的经历,在学习或者工作中,突然遇到一些看起来很专业、很复杂的术语,让人摸不着头脑?今天咱们就来聊聊一个这样的术语——lingo 集合。
其实,lingo 集合就是把具有某种共同特征的元素放在一起形成的一个整体。
比如说,咱们班所有戴眼镜的同学就可以组成一个lingo 集合。
关键点解析核心特征或要素:1. 确定性:集合中的元素是明确的,不能模棱两可。
就像咱们刚刚说的戴眼镜的同学,谁戴眼镜谁不戴,是很确定的。
比如学校足球队的队员们,这是一个明确的集合。
2. 互异性:集合中的元素不能重复。
假设咱们说“优秀学生集合”,那一个学生不能被重复计算。
3. 无序性:集合中元素的排列顺序不影响集合本身。
比如“水果集合”里有苹果、香蕉、橙子,不管先写哪个后写哪个,都是这个集合。
容易混淆的概念:lingo 集合和区间:集合是确定的一组元素,而区间是一段连续的数的范围。
比如集合{1, 2, 3},区间(1, 5),集合里的 1、2、3 是确定的数,而区间 (1, 5) 表示大于 1 小于 5 的所有数。
起源与发展lingo 集合的概念起源于数学领域的发展。
早期数学主要处理单个的数和简单的运算,随着研究的深入,需要对大量具有相同特征的对象进行统一处理和分析,于是集合的概念应运而生。
在当今的数学以及很多相关领域,lingo 集合都有着极其重要的地位。
它为我们解决复杂的问题提供了一种有效的工具和思维方式。
未来,随着科学技术的不断进步,lingo 集合的应用可能会更加广泛和深入,也许会在人工智能、大数据等前沿领域发挥出更加关键的作用。
实际意义与应用在日常生活中,lingo 集合也有不少应用呢。
比如,在超市进行商品分类的时候,就可以把相同类型的商品看作一个集合,方便管理和查找。
再比如,组织一场聚会,确定参加人员名单也可以看作是一个集合。
Lingo中的集
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。
Lingo 允许把这些相联系的对象聚合成集(sets)。
一旦把对象聚合成集,就可以利用集来最大限度的发挥Lingo建模语言的优势。
2.1 为什么使用集
是Lingo建模语言的基础,是程序设计最强有力的基本构件。
借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。
例如:对于100个货栈的运输问题,如果一个一个的写出全部约束将是可怕的工作量。
货栈1的运量<=存量
货栈2的运量<=存量
货栈3的运量<=存量………………………………
2.2 什么是集
Lingo可以采用最为简洁的表示方法:每个货栈的运输量<=存量
集是一群相联系的对象,这些对象也称为集的成员。
一个集可能是一系列产品、卡车或雇员。
每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。
属性值可以预先给定,也可以是未知的,有待于
Lingo求解。
例如:
(1)产品集中的每个产品可以有一个价格属性;
(2)卡车集中的每辆卡车可以有一个牵引力属性;
(3)雇员集中的每位雇员可以有一个薪水属性,也可以有一个生日属性等等。