Lingo的基础语法(一)
Lingo和Matlab,都是数学建模中经常用到的编程软件,但Lingo相对于Matlab,在解决线性规划、非线性规划类问题时相对于Matlab更为简单直观
lingo程序的基本模板
model:
sets:
//相关变量的声明
endsets
data:
//相关变量数据的设置
enddata
//约束条件,目标函数的构建
end
model与end sets与endsets data与enddata 这些关键词都是成对出现的
lingo程序的默认操作
- lingo默认所有的变量都大于等于0的数字,因而非负的条件不必多写,如果要将其设为R(实数域),利用@free函数
? 例:@free(a) 将变量a设为实数域
-
m与M是等价的lingo不区分大小写,所以mmm、mMm、MMM被视为同一变量,
在lingo的使用过程中,建议全部使用小写; -
lingo中只有三种关系运算符 = >=
-
lingo中添加注释的操作 ! 注释内容 ;
lingo在解决线性,非线性规划问题时经常使用的语句
1.一维矩阵,二维矩阵的创建
例:
? sets:
? factory /1…6 / : b; 建立1*6的矩阵 b
? plant /1…8 / : c; 建立1*8的矩阵 c
? coo (factory,plant):x,y; 将factory与plant矩阵合并,生成新6*8的二维矩阵 x,y
factory,plant,coo不是lingo里面的关键字,由用户自己设定
2.一维矩阵,二维矩阵数据的设置
例:
? 将 1*6的矩阵a进行数据的设置(即数据的初始化)
? a=60,55,51,43,41,52;
? 将 6*8的 矩阵c进行数据的设置 (即数据的初始化)
c=1,2,3,4,5,6,7,8
4,9,5,3,8,5,8,2
5,2,1,9,7,4,3,3
7,6,7,3,9,2,7,1
2,3,9,5,7,2,6,5
5,5,2,2,8,1,4,3;
注意:在对二维矩阵进行初始化时最后一行有分 ,其它行没有分
数据的设置都在data enddata之间进行
3.@sum(求和函数)与 @for(for循环的运用)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H3nOxUH4-1626597380385)(C:Usershk’s computerDesktopXZ_K6R3F6839JP1P{7ZM8SE.png)]
lingo代码
该题的数据由博主自己设置,求目标函数的最小值也是由博主自己设置
@sum @for函数使用的总结
1.sum函数一般用于出现求和符 的情况,如果有多个求和符 则要使用@sum函数的嵌套
2.for循环一般用于 i=1…n 类似于这样的式子,且for循环一般在最外层,需要优先考虑
3.lingo中默认将所有的变量的范围看成大于等于,在编写约束条件时需要进行考虑
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!