0
我正在使用一个Steiner树的变体,用于使用CPLEX的非有向图。处理有向图中的循环的多维决策变量
在我的解决方案,该图表示为一个有向图,以及我的desicion变量(称为Yuijv)中的一个控制所述路径的方向上,所以:
Yuijv = 1,如果边缘(i,j)在从u到v的方向U→i→j→V的一条路径中使用。
Yuijv = 0 else。
这里是Yuijv如何申报(和一些辅助代码):
//structure
tuple edge {
int i; //node
int j; //node
}
tuple path {
int u;
edge e;
int v;
}
setof(path) paths= {<i,<k,l>,j> | i,j in nodes : i!=j, <k,l> in edges: k!=l};
//decicion variable
dvar boolean Yuijv[paths];
但是当我用它来与这个sintax访问值:
Yuijv[u,<j,v>,v] = 0;
我得到这个错误:
Can't use type int for <u:int,a:<i:int,j:int>,v:int>.
在官方文档,并且在这个网站中,我找不到这个问题的帮助,而且我真的赞赏了一些,或者可能是建议重新定义这个变量的实现。
感谢您的建议。
sum( in aristas)yuijv [u,,v]> = xi [u] + xi [v] -1; –
忘掉最后一条评论,我无法抹去它。 我上面给出的例子实际上是发明的,所以我可以在这里发布它,而不用解释所有内容,并且使它更易于阅读。 我的一个实际限制,这有错误,它是: _sum(在边缘)Yuijv [U,,V]> = XI [U] + XI [V] -1; _ 哪里_xi_是另一变量desicion。 CPLEX优化工具包(ide)突出显示_Yuijv [u,,v] ._ 中的第一个_u_并显示提示:“不能对使用int类型, j:int>,v:int>。“ 感谢您的回答! –