Lingo软件学习(一)好学爱学
哈哈
一:基本的语法细节
(1)本文章以求解下列方程为例子:
当我们需要利用lingo求解此线性规划方程时,可以直接将方程写进lingo文本框,但是我们在书写代码时要注意:
① Z不用写在代码中
② 乘法要 “ * ”
③ lingo自动不识别空格,可以排版对齐利于分析问题。
③在lingo 中自变量大于(等于0)这些代码不用写(比如x1 >0)
④ 每一个语句后面要有;号。
(2)求解:
可以按ctrl +u直接运行。
解的Z等于26 ,x1=2 ,x2=6
二,常见命令
(1)限定求解目标为整数
例如上题,我们可以在代码后加上:
@gin (x1);
@gin (x2);
三,使用集合解大型线性规划方程
我们以下面例题为解:
根据本题,我们可以列出如下方程组:
接着,我们开始将方程写成代码;
(1) 确定变量下标:其中: a ,b ,d 属于 i 下标
e ,x ,y ;属于 j 下标
c ; 属于 i , j 下标。
故第一步,我们要写定义自变量取值范围:用sets: ... endsets语法
这里的意思是S的集合是1到6,a,b,d满足此集合。
(2)接着,我们将已知数据进行填写,利用data: ... enddata
(3) 最后,我们列方程:
语法结构解读:
(1)两个Σ及其对应下标分别用@sum(T(j): ...)和 @sum(S(i):...)进行表示.
注意:这里@sum的语法结构中最后有括号,而为什么min这一句最后有两个括号也是因为此语法。
这一句的语法结构即为嵌套了两个求和公式,求和项都是 c(i,j)*@sqrt((x(j)-a(i))^2+(y(j)-b(i))^2)
));
(2)对于约束条件
因为比如第一句的定义域取值是i的,而求和是j.
所以我们要用@for语句来限定说对于每个i(i=1...6)都满足约束条件: @sum(T(j): c(i,j)) = d(i)
所以本句的语法结构就是:@for(集合:约束条件;)。其中for的集合条是S(i);约束条件是@sum(T(j): c(i,j)) = d(i);其中c(i,j)求和的集合条件是T(j).
今天就学到这了,谢谢同志们~