我有一个关于分配问题的优化问题。我用加权目标编程算法编写它(我介绍一些偏差等)。我尝试用Lingo解决这个算法。不幸的是,每当我尝试解决它时,Lingo都会返回一些错误代码,例如Improper use of attribute name
。这很奇怪,因为我很难定义算法中使用的所有参数。
我的lingo文件使用电子表格进行管理。该电子表格用作数据库。
Lingo代码:
块引用
SETS:
PLAGESHORAIRES:;
PATIENTS:zp;
AFFECTATION(PATIENTS,PLAGESHORAIRES):Yph,dph,qph,Aph;
DEVIATION_SET / 1 / : G;
ENDSETS
DATA:
PLAGESHORAIRES=@OLE();
PATIENTS=@OLE();
dph=@OLE();
qph=@OLE();
dmax=@OLE();
dmin=@OLE();
nb=@OLE();
wa=@OLE();
wb=@OLE();
@OLE()=Yph;
@OLE()=G;
@OLE()=Aph;
ENDDATA
!OBJECTIF FUNCTION;
[OBJECTIF] MIN = wa*(1/6)*G + wb*(1/12)*@SUM(AFFECTATION(p,h):Aph(p,h));
!SUBJECT TO;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!AFFECTATION;
!HARD CONSTRAINTS;
@FOR(PLAGESHORAIRES(h):
@SUM(PATIENTS(p):Yph(p,h))<=1
);
@FOR(PATIENTS(p):
@SUM(PLAGESHORAIRES(h):Yph(p,h))<=1
);
!SOFT CONSTRAINTS;
@SUM(AFFECTATION(p,h):Yph(p,h))-G = nb;
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!DISTANCES ;
!HARD CONSTRAINTS;
@FOR(PATIENTS(p):
@FOR(PLAGESHORAIRES(h):
dph(p,h)*Yph(p,h)<=dmax
)
);
!SOFT CONSTRAINTS;
@FOR(PATIENTS(p):
@FOR(PLAGESHORAIRES(h):
dph(p,h)*Yph(p,h)-Aph(p,h)=dmin
)
);
@FOR(PATIENTS(p):
@FOR(PLAGESHORAIRES(h):
@BIN(Yph(p,h))
)
);
@FOR(PATIENTS(p):
@FOR(PLAGESHORAIRES(h):
@BIN(qph(p,h))
)
);
@FOR(PATIENTS(p):
@FOR(PLAGESHORAIRES(h):
@GIN(Aph(p,h))
)
);
!RENVOI DANS EXCEL;
DATA :
@OLE()=OBJECTIF;
ENDDATA
感谢您的帮助。 文森特
答案 0 :(得分:1)
变量G
已被声明为集合的属性,即
G
是一个下标变量,但是在
[OBJECTIF] MIN = wa*(1/6)*G + ...
它没有下标,所以你必须做类似的事情:
[OBJECTIF] MIN = wa*(1/6)*G(1) + ...
如需进一步的帮助,请与供应商www.lindo.com