我建了一个最高为6维的模型用Lingo求解,可是运行时说Model is ill defined
check for the indices and/or conditions in expression:14
麻烦各位高手帮我看下,谢谢
model:
!5种零件,2条路径,2个操作,4种机器,2个单元,3个时期地单元构建问题;
sets:
Parts/p1..p5/:B,HC;
Machines/m1..m4/:capacity,MPC,MIC,MOC;
c/c1,c2/:UB,LB;
r/r1,r2/;
t/t1..t3/;
process/pr1,pr2/;
allowed1(Parts,r,process,Machines):time;
allowed2(Parts,r,process,Machines,c,t):X;
allowed3(Machines,c,t):N,M,G,S;
allowed4(Parts,r,process,c,t):U;
Links1(Parts,t):demand;
Links2(Machines,c);
Links3(Parts,r,Process);
endsets
! 目标函数;
min=f1+f2+f3+f4/2+f5;
f1=@sum(allowed3:M*MPC(k));
f2=@sum(allowed3:G*MOC(k));
f3=@sum(allowed3:(N*capacity(k)-G)*MIC(k));
f4=@sum(allowed4|j #LE# 3: @floor(demand(i,q)/HC(i))*@abs(U(i,h,j+1,l,q)-U(i,h,j,l,q)));
f5=@sum(Links2:N(k,l,1)*MPC(k));
!约束条件;
@for(t(q):
@for (c(l):
@sum(Machines(k):N(k,l,q))<=UB)); !满足单元容量的上限;
@for(t(q):
@for (c(l):
@sum(Machines(k):N(k,l,q))>=LB)); !满足单元容量的下限;
@for (Machines(k):
@for(c(l):
@for(t(q)|q # GE # 2:
N(k,l,q-1)+M(k,l,q)=N(k,l,q)))); !满足单元内各机器在不同时期之间数量关系;
@for (Machines(k):
@for(c(l):
@for(t(q):
@sum(Links3(i,h,j):time(i,h,j,k)*X(i,h,j,k,l,q)*S(k,l,q))=G(k,l,q)))); !计算各时期各单元每种类机器的总工作时间;
@for (Machines(k):
@for(c(l):
@for(t(q):
@sum(Links3(i,h,j):demand(i,q)*time(i,h,j,k)*X(i,h,j,k,l,q)*S(k,l,q))<=capacity(k)*N(k,l,q)))); !机器能力约束;
@for (Parts(i):
@for (r(h):
@for (process(j):
@for (c(l):
@for (t(q):
@sum(Machines(k):X(i,h,j,k,l,q))<=10000*U(i,h,j,l,q)))))); !变量U和X之间的约束关系;
@for (Machines(k):
@for(c(l):
@for(t(q):
N(k,l,q)<=10000*S(k,l,q)))); !变量N和S之间的约束关系;
@for (allowed2:@bin(X));
@for (allowed4:@bin(U));
@for (allowed3:@bin(S));
@for (allowed3:@gin(N));
@for (allowed3:@gin(M)); !变量取值范围约束;
!这里是数据;
data:
capacity=300 300 300 300;
HC=50 50 50 50 50;
B=25 25 20 35 30;
MPC=1200 1400 1500 1400;
MOC=6 3 7 4;
MIC=30 45 20 30;
demand=200 500 600
0 450 550
0 0 600
650 600 750
600 850 300;
UB=8 8;
LB=1 1;
time=0 0.61 0 0 0 0 0.63 0 0 0 0.88 0 0 0 0 0.63
0 0.23 0 0 0 0 0 0.48 0 0 0.24 0 0 0 0 0.57
0.36 0 0 0 0 0 0 0.13 0 0.19 0 0 0 0 0.58 0
0 0.55 0 0 0 0 0.82 0 0.26 0 0 0 0 0 0.58 0
0 0.17 0 0 0 0 0 0.86 0.54 0 0 0 0 0 0.15 0;
enddata
end
运行时的错误代码是63,请好心人帮忙看看,谢谢!
lingo程序运行不出来出现错误,请高手帮忙!谢谢
1. 由于缺乏数据段,可能导致程序难以运行。错误可能源于数据段的处理。2. 在最后一句中,"n"似乎是一个无关的变量,并未在其他约束条件中出现。这可能是需要修改的另一处错误。3. 楼主需要注意的一个问题是,目标函数是非线性的,而且处理的数据是一个1000*100的矩阵。使用Lingo软件解这个问题可能会...
lingo代码运行有问题,错误代码为69,但我自认为程序没有问题啊?(只要把...
1、把h=8;h=0;改为@bnd(0,h,8);你试试,因为lingo里表示变量的范围用两行语句很容易出错,避免这样的错误最好用@bnd,明白了吗?不明白就找我,想我学lingo时都没人可以问的。2、把代码贴出来看看,才知道怎么改错误代码:29的意思是:数据段或初始段的数据个数不符要修改的看具体的。
初学者向Lingo高手请教关于Lingo程序的小问题,非常感谢!
第三个问题不太理解啥意思,我只见过4维问题,你可以看《优化模型与lindo\/lingo软件》一书,比较好~~~上面有3,4维问题的模型。
一个简单的lingo程序问题
你的程序里边第三行good这个集合的定义方式是错误的,lingo里边没有这样的集合定义方法,要实现“让13岁以上的性别代码为0的称为good”的目的,你可以改为以下方法:sets:students\/1..5\/:age,sex;hao(students,students)|&1#gt#13 #and# &2#eq#0:good;endsets data:age=12,14,16,18,24;sex...
完全初学者请教关于lingo程序的问题
init:n=100;endinit sets:run\/1..100\/:s;endsets max=@sum(run:s);for(run(i)|i#le#50:@sum(run(j)|((j #ge# i) #and# (j #le# (j+49))):s(j))<=500;);end 这样子就可以啦。还有啊,你的变量里面没有n啊,写下面那句没什么意义啊。init:n=100;endinit 嗯,你说...
新手第一次用lingo做数模,不知道错在哪里,求大神改错
1.变量间相乘一定要以"*"连接。比如程序开头的“r(”,这之间应当加上一个“*”字符;2.LINGO自带函数的使用。比如你程序中用到的指数函数@EXP(),余弦函数@COS(),正切函数@TAN();3.LINGO集合的运用。这个你的程序按这么写可能没什么错,但是当问题规模比较大时,比如我的X有10万个,就不太...
请教Lingo程序的一个问题
集操作函数写的不对 另外感觉你定义的问题用的维数和集都太多了 需要看一下你原来的题目 错误代码没用 f1=@sum(allowed3:M*MPC(k));f2=@sum(allowed3:G*MOC(k));f3=@sum(allowed3:(N*capacity(k)-G)*MIC(k));f4=@sum(allowed4|j #LE# 3: @floor(demand(i,q)\/HC(i))*@abs...
lingo程序小问题
lz你的全角半角要打对,“:”不要忘了打.这题是求最短路程的吧,要用递归算法,你的算法完全错误。看不懂看图论和ligo的书 model:sets:nodes\/1..6\/:time;arcs(nodes,nodes)\/1,2 1,3 2,3 3,4 3,5 4,5 5,6\/:dur,p;endsets data:dur=9,6,0,7,8,10,12;enddata time(N)=0...
lingo程序问题 求助
错误有下:1,max后面要跟=,正确的为max=2,乘号*不能省略,如目标函数应写为:max=10*x1+9*x2+30*x3+20*x4-15*x5-4*x6-3*x7;3,每行结束时一定要用分号;来结束,如上行,4,约束的标号不能写,如2)15x5+12x6+10x7=0.2*(x1+x2+x3+x4);(x1+x6)\/2+(x2+x7)\/3=x5;x6=...
lingo如何求解?
1、首先在电脑中,打开lingo输入程序开始model,如下图所示。2、然后输入目标函数内容,注释使用!进行表示,用分号结束,如下图所示。3、接着输入限制条件,限制条件中的乘号不可省略,如下图所示。4、然后点击功能区的靶向标志,点击solve求解,如下图所示。5、这时会弹出求解的结果及求解的相关说明,...