一个lingo lingo中约束条件之间是 ‘或’ 的关系,应该如何表示?Lingo中是否允许?
一个lingo lingo中约束条件之间是 ‘或’ 的关系,应该如何表示?Lingo中是否允许?
代码如下,就是最后一个循环出错,去掉后可以执行,最后一句错在哪?
P是火车票价格;
model:
sets:
citys/1..10/:;
city/1..11/:u,tt1,tt2,et;
link(city,city):T1,T2,p,x;
links(city,city,citys):;
endsets
data:
p=@file('price.txt');
T1=@file('T1.txt');
T2=@file('T2.txt');
tt1=@file('tt1.txt');
tt2=@file('tt2.txt');
enddata
[OBJ] min=@SUM(link(i,j):p(i,j)*x(i,j));
@for(city(j):@sum(city(i)|j#ne#i:x(i,j))=1);!j前有一个城市相连;
@for(city(i):@sum(city(j)|j#ne#i:x(i,j))=1);!i前有一个城市相连;
@for(link(i,j)|(i#ne#j)#AND#(i#gt#1):u(i)-u(j)+11*x(i,j)
好多年没用lingo了,书写格式已经记不太清了.
至于你的补充问题,x>=10||y=0
max(x-10,100-y) 是关于(x,y)的凸函数,即为g(x,y)上式就是g(x,y)>=0
明显的这十个anticonvex 约束.是非凸的约束条件.那这样表示是否可以? (x#GE#10)#OR#(y#LE#100)=1还有就是能不能加上循环?我的x,y不是一个变量: 比如说:@for(link(i,j):@MAX(x(i,j)-10,100-y(i,j))>=0;(两个问题)加循环是没问题的, 表示构造了多个约束. 你可以试试看,如果不行可试下加个变量v. 引入等式约束v(某个范围内指标)=x(i,j)-10 和 v(某个范围内指标)=100-y(i,j)最后针对v 用for 给出约束。你第一个表达式可能是不行的。总是lingo用起来感觉就是不太爽。而且计算效率也不够好,所以很久以前就不再用了。