如何在lingo中使用集合_第1页
如何在lingo中使用集合_第2页
如何在lingo中使用集合_第3页
如何在lingo中使用集合_第4页
如何在lingo中使用集合_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、例题1. 在lingo中输入下列线性规划模型,并求解s.t. , d=0 8 5 9 12 14 12 16 17 22 8 0 9 15 16 8 11 18 14 22 5 9 0 7 9 11 7 12 12 17 9 15 7 0 3 17 10 7 15 15 12 16 9 3 0 8 10 6 15 15 14 8 11 17 8 0 9 14 8 16 12 11 7 10 10 9 0 8 6 11 16 18 12 7 6 14 8 0 11 11 17 14 12 15 15 8 6 11 0 10 22 22 17 15 15 16 11 11 10 0;分析:这个模型

2、输入的难点,在于变量的数量太多,足足有100个。约束条件也比较多,有没有什么方便的输入方法?下面介绍lingo中集合的建立新建lingo文件输入下面内容model:sets:V/1.10/;!创建集合V;A(V,V):d,x;!创建集合A是V乘V.而d,x是与A同结构的,即d,x分别是10*10矩阵;endsetsmin=sum(A(i,j):d(i,j)*x(i,j);!创建目标函数;sum(V(j):x(1,j)=1; !第一个约束条件;for(V(j)|j#gt#1:!i#gt#1为逻辑判断语句表示i1是返回真值,但这里不能直接写i1,因为是关系运算符不是逻辑运算符;sum(V(i):x

3、(i,j)=1;); !利用循环函数表达:当i1(即i从2到10)时,x(i,j):j=1.10的和等于1;for(V(i):x(i,i)=0;);data:d=0 8 5 9 12 14 12 16 17 22 8 0 9 15 16 8 11 18 14 22 5 9 0 7 9 11 7 12 12 17 9 15 7 0 3 17 10 7 15 15 12 16 9 3 0 8 10 6 15 15 14 8 11 17 8 0 9 14 8 16 12 11 7 10 10 9 0 8 6 11 16 18 12 7 6 14 8 0 11 11 17 14 12 15 15 8

4、6 11 0 10 22 22 17 15 15 16 11 11 10 0; !输入d的数值;enddataend这个模型如果按照常规输入是什么样子呢?Lingo也提供这样的功能点lingo菜单选generate点display model得到下面的界面(部分截图)可见,这个规划如果普通输入的话,工作量是很大的,而且容易出错。运行结果(部分截图)这个报告很不简洁,因为我们只需要显示x中非零部分,其他信息都不是我们关心的。有什么办法可以使得报告更简洁?点lingo菜单,选solution,做如下设置,可以使得报告更加简洁设置完后结果是练习1. 求下列线性规划模型s.t. 为非负实数,(i,j)

5、A这里V=1,2,3,7,.b=49 38 49 44 58 50 47;d=1 2 3 1 2 1 2 2 3 4 1 2 2 3 4 1 1 2 1 5 1 1 2 2 2 3 1 1 2 1 2 3 5 3 1 2 2 2 1 3 2 4 1 1 1 1 2 1 1;参考答案model:sets:V/1.7/:b;!创建集合V,而b是与V同结构的;A(V,V):d,x;!创建集合A是V乘V.而d,x是与A同结构的,即d,x分别是10*10矩阵;endsetsmax=sum(A(i,j):d(i,j)*x(i,j);!创建目标函数;for(V(i): sum(V(j):x(i,j)b(i)

6、;); !第一个约束条件;data:b=49 38 49 44 58 50 47;d=1 2 3 1 2 1 2 2 3 4 1 2 2 3 4 1 1 2 1 5 1 1 2 2 2 3 1 1 2 1 2 3 5 3 1 2 2 2 1 3 2 4 1 1 1 1 2 1 1; !输入d的数值;enddataend例题2.一家公司需要决定四个季度的帆船生产量,下四个季度的需求分别为40,60,75,25条,需要按时满足,每个季度生产能力是40条,每条生产费用400美元。如果加班,每条船的生产费为450美元。每个季度末,每条船的库存费用为20美元。假定生产提前期为0,库存为10条,如何安排生

7、产使得总费用最小?创建lingo文件,输入运行结果注1:如果创建一个集合包含的元素较多,例如月份,只需Sets:Month/1.12/endsets而不需要把1到12都罗列出来.注2:上面的程序由三部分组成(集合段,目标和约束段,数据段),但一般lingo程序可以由五部分组成(新增“初值设定“和”计算”两部分)(1) 集合段 sets开始,endsets结束(2) 目标函数(min=或max=)和约束段(一些等式或不等式,或逻辑判断语句)(3) 数据段data开始,enddata结束(4) 初始段,用于初值设定,init开始,endinit结束,对集合对属性(数组)定义初值(因为求解算法一般是迭代算法,用户如果能给出一个比较好的迭代初值,对提高算法的效果是有益处的)(5) 计算段,以calc开始,endcalc结束,作用在于对一些原始数据进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论