快速学懂Lingo软件及其编程方法
2023-07-10 15:38 作者:拉布拉多多多-小布丁 | 我要投稿

最下面附带能运行的代码
ctrl鼠标滚轮
放大缩小
05:44
初始代码

英文版福利

Ctrl+u 是快捷键
10:06

2.lingo求解大规模问题,以及集合语言的运用
11:27
问题

定义集合
13:59
sets:
......
endsets
注意:代码严格规定省略号的点只能打两个

【如:s/1..6/: ; 而不能用s/1.......6/:;】
表示定义一个集合;
1先确定已知和未知
集合语言知识:
{
(1)定义范围S/1..6/: ;
(2)定义双下标U(S,T): ;
(3)定义满足范围的变量S/1..6/: a,b;
}

(方便看在放一下)问题

数据站知识
定义:
data:
.......
enddata
数据栈语言知识:
{

是多少写多少 空格 或 逗号隔开数据
}
写模型
20:13

记得最后加括号和前面的@sum函数配对
写约束条件
21:18
用@for来循环

非线性问题:
23:45

需要勾选全局求解器

成功代码:
sets:
S/1..6/:a,b,d ;
T/1..2/:e,x,y ;
U(S,T):c ;
endsets
data:
a=1.25 8.75 0.5 5.75 3 7.25;
b=1.25 0.75 4.75 5 6.5 7.75;
d=3 5 4 7 6 11;
x=5 2;
y=1 7;
e=20 20;
enddata
min =@sum(T(j): @sum(s(i):
c(i,j)*@sqrt((x(j)-a(i))^2+(y(j)-b(i))^2)
));
@for( S(i): @sum(T(j):c(i,j) ) =d(i) );
@for( T(j): @sum(S(i):c(i,j) )<=e(j) );