如何用lingo最大流模型编写下列模型

简学lingo(一)——基础篇
简学lingo(一)——基础篇
随着建模培训的进程,越来越发现自己所知有限。这里记录下自己学习LINGO的过程,一点一点来呗!
1 模型的集部分
集部分是LINGO模型的可选部分。在使用LINGO模型中使用集之前,必须在集部分事先定义。集部分以关键字“sets:”开始,以“endsets”结束。一个模型可以没有集部分。
1.1 定义原始集
定义一个原始集。用下面的语法:
setname[/member_list/][:attribute_list];
注意:用"[ ]"表示部分内容可选
setname是你选择标记集的名字,最好具有较强的可读性。member_list是集成员列表。如果集成员放在集定义中,那么可以对他们进行显示罗列和隐式罗列,也可以在随后的数据本分定义它们。当显示罗列成员时,用逗号或者是空格来隔开,如:
students/John Jill,Rose,Mike/:sex,
当隐式显示成员是,则可采用下面的语法:
setname/membew1..memberN/[:attribute_list];
此时LINGO将自动产生member1到memberN中间的所有成员名。
另外,我也可以这样定义数据:
products/A B/;
machine/M N/;
week/1..2/;
allowed(product,machine,week):x;
另外,除了原始集外还有派生集
students/Jhon,Jill,Rose,Mike/:sex,
linkmf(students,students)|sex(&1)#eq#1and#sex(&2)#eq#0:
用竖线(|)表示成员资格过滤器的开始。
2.模型的数据部分和初始部分
2.1模型的数据部分
数据部分以关键字“data:”开始,以关键字“enddata”结束,在这里可以指定集成员,集的属性。其语法如下
object_list=value_
这里给出例子
set1/A,B,C/:X&Y;
!这里也可以这样复制赋值
另外,我们也可以指定参数
interest_rate,inflation_rate=.085
2.2 模型的初始部分
一个初始部分以“init:”开始,以“endinit”结束。初始部分的初始声明规则和数据部分的数据声明的规则相同。也就是说,我们可以再声明的左边同时初始化多个集属性,可以吧集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数据。
Y=@log(X);
X^2+Y^2&=1;
3. LINGO函数
3.1 逻辑运算符
否定该操作数的逻辑值
若两个运算数相等,则为true,否则false;
若两个运算符不相等,则为true,否则为false
若左边的运算符严格大于右边的运算符,则为true,否则为false
若左边的运算符严格大于或等于右边的运算符,则为true,否则为false
若左边的运算符严格小于右边的运算符,则为true,否则为false
若左边的运算符严格大于右边或等于的运算符,则为true,否则为false
优先级由高到低
3.2 数学函数
返回x的余弦值
返回x的正切值
返回常数e的x次方
返回x的自然对数
返回x的gamma函数的自然对数
如果x&0返回-1;否则,返回1
返回x的整数部分。当x&=0时,返回不超过x的最大整数;当x&0时,返回不低于x最大整数。
@smax(x1,x2,…,xn)
返回x1x2…,xn中的最大值
@smin(x1,x2,…,xn)
返回x1,x2,…,xn中的最小值
这里给出一个例子
object/1..3/:f;
f(1)=a*@sin(x);
f(2)=b*@cos(x);
f(3)=a*@cos(x)+b*@sin(x);
min=@smax(f(1),f(2),f(3));
@bnd(0,x,1.57);
3.3变量界定函数
变量界定函数实现对变量取值范围附加限制,共4中:
限制x为0或1
@bnd(L,x,U)
限制L&=x&&U
@free(x)
取消变量x的默认下届为0的限制,即x可以为任意数
限制x为整数
3.4 集操作函数
(1)@in(set_name,primitive_index_1[,primitive_index_2,...])
如果元素在指定集内则返回1,否则返回0;
全集为I,C为B的补集
I/x1..x4/;
C(I)|#not#@in(B&1):;
(2) @index([set_name,]primitive_set_element)
该函数返回在集set_name中原是集成员primitive_set_element的索引。如果set_name被忽略,那么它将返回第一个原是集成员的索引。
如何确定集成员(B,Y)属于派生集S3
S1/A B C/;
S2/X Y Z/;
S3(S1,S2)/A X,A Z,B,Y,C X/;
&a target=_blank href="mailto:X=@in(S3,@index(S1,B),@index(S2,Y));"&X=@in(S3,@index(S1,B),@index(S2,Y));
3.5集循环函数
集循环函数整个集进行操作。其语法是
@function(setname[(set_index_list))[|conditional_qualifier]]:expression_list);&/span&
其中@function是对应的四个集循环之一;setname是要遍历的集;set_index_list是集索引列表;conditional_qualifier是用来限制集循环函数范围,当集循环函数遍历集的每个成员时,LINGO都要对其进行评价,只有当结果为真时,才会执行@function操作,否则跳过,进行到下一次循环。expression_list是被应用到每个及成员函数的表达式列表。当是@for时,它可以包含多个表达式,用逗号隔开;否则其只能含有一个函数。这些表达式将被作为约束加到模型中去。
下面使用例子依次介绍四个集循环函数
该函数用来产生对集成员的约束。@for函数允许只输入一个约束,然后LINGO自动产生每个集成员的约束。
例:产生序列{1,4,9,16,25}
number/1..5/:x;
@for(number(I):x(I)=I^2);
该函数返回遍历指定集成员的一个表达式的和
例:求向量【5,1,3,4,6,10】前五个数的和。
number/1..N/:x;
x=5 1 3 4 6 10;
&a target=_blank href="mailto:s=@sum(number(I)|I#le#5:x);end"&s=@sum(number(I)|I#le#5:x);
(3)@min和@max
该函数返回指定的集成员的一个表达式的最小值或者是最大值
x=5 1 3 4 6 10;
minv=@min(number(I)|I#le#5:x";
&span style="color:#000000;"& &/span&
&a target=_blank href="mailto:maxv=@max(number(I)|I#ge#N-2:x);end"&
maxv=@max(number(I)|I#ge#N-2:x);
下面来看一个稍微复杂一点的例子
例:职员时序安排模型
一项工作一周七天都需要有人,每天(周一至周日)所需的最少职员数位20,16,13,19,14和12,并要求每个职员一周连续工作5天,试求每周所需最少的职员数,并给出安排。注意这里我们考虑稳定后的情况。
days/mon..sun/:required,
!每天所需的最少职员数;
required=20 16 13 16 19 14 12;
!最小化每周所需职员数;
min=@sum(days:start);
@for(days(J):
@sum(days(I)|I#le#5:
start(@wrap(J+I+2,7)))&=required(J));
!@WRAP(INDEX, LIMIT)返回的是 INDEX - K * LIMIT 其中K是一个整数 它使得返回值落到[1,LIMIT]上;
简学lingo(二)——基础篇
lingo入门教程之二
--- 集合运用
lingo入门教程之一 --- 初识lingo
简学lingo(四)——实例篇
没有更多推荐了, 上传我的文档
 上传文档
 下载
 收藏
粉丝量:11
该文档贡献者很忙,什么也没留下。
 下载此文档
用lingo软件求解模型问题__运筹学课程设计_
下载积分:1000
内容提示:用lingo软件求解模型问题__运筹学课程设计_
文档格式:DOCX|
浏览次数:131|
上传日期: 22:08:55|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1000 积分
下载此文档
该用户还上传了这些文档
用lingo软件求解模型问题__运筹学课程设计_
关注微信公众号怎么用lingo软件解决此问题啊,要求有问题的数学模型,求解模型(lingo程序),求解报告,求解报告的解读。_百度知道
怎么用lingo软件解决此问题啊,要求有问题的数学模型,求解模型(lingo程序),求解报告,求解报告的解读。
某百货公司去外地采购A,B,C,D四种规格的服装,数量分别为A——1500套,B——2000套,C——3000套,D——3500套,有3个城市可供应上述规格服装,由于其他条件的限制,各城市供应总数...
某百货公司去外地采购A,B,C,D四种规格的服装,数量分别为A——1500套,B——2000套,C——3000套,D——3500套,有3个城市可供应上述规格服装,由于其他条件的限制,各城市供应总数确定为城市Ⅰ——2500套,城市Ⅱ——2500套,城市Ⅲ——5000套,由于这些城市的服装质量、运价及销售情况不同,预计售出后的利润(元∕套)也不同,详见题5.7表,试利用求解运输问题的方法帮助该公司确定一个预期赢利最大的采购方案。规格城市 A B C DⅠ
8销量 5 15 15 10
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
采纳数:29915
获赞数:66229
模型写起来很简单 中学生就很容易写出来大概说一下 就是求运输费用最小值 所有的运价乘以对应的x求和最小约束有两组 一组是对每个城市 向外供应总数不超过限制的总数 第二组就是对每种规格的服装所用城市的供应加起来等于需求量 另外就是限制变量为非负整数 看结果就更简单了 只需要知道x表示第i个城市供应第j种服装的件数就行了 求解报告自己用lingo解一下model:sets:demand/1..4/:a;supply/1..3/:b;link(supply,demand):c,x;endsetsdata:a=00 3500;b=00;c=10
8;enddatamin=@sum(link:c*x);@for(supply(i):@sum(demand(j):x(i,j))&=b(i));@for(demand(j):@sum(supply(i):x(i,j))=a(j));@for(link:@gin(x));end
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。【图文】Lingo的基本使用方法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Lingo的基本使用方法
&&Lingo的基本使用方法
阅读已结束,下载本文到电脑
定制HR最喜欢的简历
你可能喜欢lingo能直接画出最小生成树模型吗?_百度知道
lingo能直接画出最小生成树模型吗?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
仅有得爱恋
仅有得爱恋
采纳数:19
获赞数:571
model:sets:cities/1..10/:link(cities,cities):distance,x;endsetsdata:distance=0
12 14 12 16 17 22
11 18 14 22
16 18 12 7
17 14 12 15 15 8
22 22 17 15 15 16 11 11 10 0;enddatan=@size(cities);min=@sum(link(i,j)|i#ne#j :distance(i,j)*x(i,j));@sum(cities(i)|i#gt#1:x(1,i))&=1;@for(cities(i)|i#gt#1:@sum(cities(j)|j#ne#i:x(j,i))=1;@for(cities(j)|j#gt#1 #and# j#ne#i:level(j)&=level(i)+x(i,j)-(n-2)*(1-x(i,j))+(n-3)*x(j,i););@bnd(1,level(i),999999);level(i)&=n-1-(n-2)*x(1,i););@for(link:@bin(x));end
这样只有结果,能画出模型吗
Lingo绘图其实不推荐!可以选择matlab好点
lingo感觉简单一点
Lingo对数据优化处理好用,matlab对矩阵的处理好点,各有各的好处,结合用解决数学模型问题
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 lingo优化模型例题 的文章

 

随机推荐