Я работаю с одним вариантом дерева Штейнера для неориентированных графов с использованием CPLEX.
В моем решении граф представлен в виде ориентированного графа, и одна из переменных моего решения (называемая Yuijv) управляет направлением пути, поэтому:
Yuijv = 1, если ребро (i,j) используется в одном пути из u в v в направлении U->i->j->V.
Yuijv = 0 иначе.
Вот как объявляется 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];
Но когда я использую его с этим синтаксисом для доступа к значению:
Yuijv[u,<j,v>,v] = 0;
Я получаю эту ошибку:
Can't use type int for <u:int,a:<i:int,j:int>,v:int>.
При поиске в официальной документации и на этом сайте я не могу найти помощь по этой проблеме, и я действительно ценю некоторые или, может быть, предложения по переопределению реализации для этой переменной.
Спасибо в совете.