线性规划相关算法 - ZYL-Harry/Mathematical_Modeling_Algorithms GitHub Wiki

工具

完整程序示例

MODEL:
SETS:
person/1..14/:y,s;
item/1..5/;
assign(item,person):x,a;
ENDSETS
DATA:
a=10,1,4,10,5,5,4,6,2,4,8,6,10,9,
	9,5,6,4,4,7,4,7,8,6,7,8,1,4,
	7,5,5,6,7,7,8,8,7,10,2,6,4,5,
	3,5,9,5,8,6,9,10,6,6,5,4,2,4,
	3,10,8,2,8,7,7,5,8,6,9,8,3,7;
ENDDATA
max=z;
z=z1+z2;
z1=0.8*@sum(person(j):s(j)*y(j));
z2=@sum(assign(i,j):a(i,j)*x(i,j));
@sum(person(j):y(j))=3;	
@for(assign(i,j):x(i,j)<=1-y(j));
@for(person(j):@sum(item(i):x(i,j))>=1-y(j));
@for(person(j):@sum(item(i):x(i,j))<=3);
@for(item(i):@sum(person(j):x(i,j))<=6);
@for(person(j):s(j)=@sum(item(i):a(i,j)));
@for(assign(i,j):@BIN(x(i,j)));
@for(person(j):@BIN(y(j)));
END
  • MODEL:…​END:Lingo程序的开头…​结尾

  • SETS:…​ENDSETS:变量的设置

  • DATA:…​ENDDATA:相关变量数据的导入

  • max=z;:目标函数

  • 其他均为约束项

语法

变量集的设置

person/1..14/:y,s;setname[/member_list/][:attribute_list];

集 ←→ 结构体

集成员 ←→ 结构体的成员:可 显示罗列 或者 隐式罗列

集属性 ←→ 结构体的实例

目标函数

min=…​`或者`max=…​

普通约束

特殊约束——变量界定函数

  • Lingo默认变量“≥0”

  • @bin(x):限制x 为0 或1 — 用于0-1规划

  • @bnd(L,x,U):限制L≤x≤U,同时也取消了对变量x的默认下界为0的限制

  • @free(x):取消对变量x的默认下界为0的限制,即x可以取任意实数

  • @gin(x):限制x为整数

逻辑运算符

  • EQ:两个运算对象相等为真,否则假

  • NE:两个运算对象不等为真,否则假

  • GT:左大于右为真,否则假

  • GE:左大于或等于右为真,否则假

  • LT:右小于左为真,否则假

  • LE:右小于等于左为真,否则假

  • NOT:单目运算符,运算对象取反,真→假,假→真

  • AND:两个运算对象都为真时为真,否则为假

  • OR:两个运算对象都为假时为假,否则为真

  • 所有符号运用时前后要加“#”号

⚠️ **GitHub.com Fallback** ⚠️