Lingo的基础语法(一)

Lingo的基础语法(一)

Lingo和Matlab,都是数学建模中经常用到的编程软件,但Lingo相对于Matlab,在解决线性规划非线性规划类问题时相对于Matlab更为简单直观

lingo程序的基本模板

model:

sets:

//相关变量的声明

endsets

data:

//相关变量数据的设置

enddata

//约束条件,目标函数的构建

end

model与end sets与endsets data与enddata 这些关键词都是成对出现的


lingo程序的默认操作

  1. lingo默认所有的变量都大于等于0的数字,因而非负的条件不必多写,如果要将其设为R(实数域),利用@free函数

? 例:@free(a) 将变量a设为实数域

  1. m与M是等价的lingo不区分大小写,所以mmm、mMm、MMM被视为同一变量,
    在lingo的使用过程中,建议全部使用小写;

  2. lingo中只有三种关系运算符 = >=

  3. 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进行处理,非常感谢!

上一篇 2021年6月16日
下一篇 2021年6月16日

相关推荐