lingo完整模型

Dear-linko 40 0 本文共1186个字

lingo模型的构成

完整的专业模型由标题集合段数据段初始段计算段约束段构成。

模型中只有约束段是必须的,其他部分都是可选的。

各个段的位置是任意的,没有先后之分。

标题

模型的标题必须以关键字title:开始,以分号结束。其中间的文字被看作是模型的标题

集合段

集合段以关键字sets:开始,以关键字endsets结束

集合应当先定义后使用;一个模型可以没有集合段,可以有一个集合段,也可以有多个集合段。

数据段

数据段以关键字data:开始,以关键字enddata结束

在数据段中,可以输入集合的元素,还可以给集合的属性赋值;一个模型可以没有数据段,可以有一个或多个数据段。

赋值语句的统一格式

对象列表 = 值列表

给标量赋值

data:
a = 1.00;
b c = 2.32 3.56;
d,e = 1.00,2.00;
enddata

给向量赋值

sets:
item/1..5/:a,b;
endsets
data:
a = 1 2 3 4 5;
b = 6 7 8 9 10;
enddata

给同一个集合上的多个向量赋值

sets:
item/1..5/:a,b;
endsets
data:
a,b = 
1 6
2 7
3 8
4 9
5 10;
enddata

给集合及其属性同时赋值

sets:
item:a,b;
endsets
data:
item,a,b = 
1 1 6
2 2 7
3 3 8
4 4 9
5 5 10;
enddata
在等号左边的对象列表中最多只能有一个是集合,此时对象列表中的其他对象必须是定义在该集合上的属性

给向量的每一个分量赋值为同一个值

sets:
item/1..5/:a;
endsets
data:
a = 1;
enddata

只给向量的部分分量赋值

sets:
item/1..5/:a;
endsets
data:
a = 1, , , , ;
enddata

此时一个逗号都不能省略;未负值的分量将由lingo求解时自行确定。

初始段

数据段以关键字init:开始,以关键字endinit结束

初始段用来在非线性模型中给决策变量赋予一定的初值,使得更快得找到最优解。

在初始段中赋予得初始变量在求解过程中可以被求解器自由得改变。

初始段在线性模型中不起任何作用。

计算段

数据段以关键字calc:开始,以关键字endcalc结束

如果数据需要进行进一步处理才能进行建模,则可以在计算段中进行处理。

在计算段中主要得表达式是赋值表达式,计算段中也可以使用集合遍历函数。

约束段

约束段没有起始标志,也没有数据标志;在lingo中目标函数也被看作是一个约束条件。

当模型没有目标函数时,lingo会求解满足所有约束条件得可行解。(可以求解方程组)

发表评论 取消回复
表情 图片 链接 代码

分享