- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lingo及举例
数学规划;Lingo及举例; Lingo模型以“model:”开始,以“end”结束,中间主要包括集合部分、数据部分、初始化部分、计算部分和目标与约束部分。
(1)集合部分:这部分以“sets:”开始,以“endsets”结束。该部分的作用是定义必要的变量。基本格式如下:
sets:
setname/menber1..menbern/:variable1,variable2;
endsets ; 这一类数据类型(集合)为原始集合,可以进一步定义派生集合,比如
sets:
setname1/menber1..menbern/:variable1;
setname2/element1..elementm/:variable2;
setname(setname1,setname2):varibale;
endsets
可以将setname1类型的变量看成一个n维向量,setname2类型的变量看成一个m维向量,而将setname类型的变量看成一个n行m列的矩阵。; (2)数据部分:这部分以“data:”开始,以“enddata”结束,其作用是对集合段定义的部分变量进行赋值。
(3)初始化部分:这部分以“init:”开始,以“endinit”结束,作用是为决策变量赋初始值。
(4)计算部分:以”calc:”开头“endcalc”结束,这部分可以进行简单的计算,为相关的部分做准备。
(5)目标和约束部分:这部分定义目标函数和约束条件。为方便的定义目标函数和约束条件,一般需要用到Lingo的一些内部函数,比如@for和@sum等等。;例1:解下列线性规划问题 ;model: !程序以”model:” 开始
sets: !从”sets:”到“endsets”是集合段
feed/1..5/:x,c; !定义集合的类型和变量
nutr/1..3/: b; !三种营养物质的需求
mat(nutr,feed):a; !使用前面的集合定义派生集合
endsets
data: !从”data:”到“enddata”是数据段
;a=0.30 2.00 1.00 0.60 1.80
0.10 0.05 0.02 0.20 0.05
0.05 0.10 0.02 0.20 0.08; !矩阵按行依次赋值
c=0.02 0.07 0.04 0.03 0.05;
b=7 3 10;
enddata
min=@sum(feed(i):c(i)*x(i)); !定义目标函数并求最小化问题
@for(nutr(j):@sum(feed(i):a(j,i)*x(i))=b(j)); !定义约束条件
end !最后以“end”结束 ;例2 蔬菜运输问题;model: !程序以”model:” 开始
sets: !从”sets:”到“endsets”是集合段
base/1..5/:xb,yb,s; !定义集合的类型和变量
super/1..3/:xs,ys,d;
mat(base,super):c,x; !使用前面的集合定义派生集合
endsets
data: !从”data:”到“enddata”是数据段
xb=2.1 8 5 1.3 7.7;
yb=9 7.5 5.2 1.7 0.9;
s=7 14 5 9 19;
xs=5 2 8;
ys=8 4 2.5;
d=28 15 9;
enddata;calc: !从”calc:”到“endcalc”是计算段
@for(mat(i,j):c(i,j)=((yb(i)-ys(j))^2+(xb(i)-
文档评论(0)