您的位置:首页 > 编程语言

Lingo编程基础

2019-08-06 08:40 190 查看

一.基本语法规则(参考博文:https://blog.csdn.net/qq_37158933/article/details/83002940)

1.语句必须以分号;结束,每行可以有多个语句,语句可以跨行。

2.!开头为注释,注释也需要;结尾。

3.若对变量取值范围没有特殊说明,则默认所有决策变量都是负。

4.Lingo模型以语句“model:”开头,以“end"结尾。对于简单模型,可以省略。

5.Lingo没有单独”<"或”>"关系,若出现”<"等价于"<="。如果需要严格要求大/小关系。可以写成:A+α<=B,α是一个小的正数,它的值依赖于模型小于B多少才算不等。

 

二.集合(参考博文:https://www.geek-share.com/detail/2711424170.html)

直接贴代码(注释很详细)

[code]!模型的开始;
model:
!集合定义的开始;
sets:
quarters/1,2,3,4/:dem, rp, op, inv;
!集合quarters类似于数组,dem等表示该集合包含的元素,这里一共有四个元素。
/1,2,3,4/表示该集合的大小,对应着实际问题的每一个季度,/1,2,3,4/等价于
/1..4/,当集合大小比较大时,建议写后者;
endsets	!集合定义的结束;

min = @sum(quarters:400*rp+450*op+20*inv);
!@sum(),求和函数表示对该集合所有依次进行求和,由于这是是对所有,所以省去了循环变量,这里等价于
@sum(quarters(i):400*rp(i)+450*op(i)+20*inv(i));

@for(quarters(i):rp(i)<40);
!@for类似于c/c++中的for循环,对其中操作循环进行;

@for(quarters(i)|I#GT#1	!|表示对于循环的限制,#GT#表示大于;
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;
enddata
end

 

三.Lingo中的常见函数

参考博文:https://blog.csdn.net/gnoixl/article/details/81145892

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: