Я работаю с одним вариантом дерева steiner для неориентированных графов с использованием CPLEX.Многомерная переменная решения для обработки циклов в ориентированных графах
В моем решении, граф представляется в виде ориентированного графа, и один из моих desicion переменных (называемых 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>.
Поиск в официальную документацию, и на этом сайте я не могу найти помощь по этой проблеме, и я действительно рекомендую некоторые или, возможно, предложение переопределить реализацию этой переменной.
Спасибо за консультацию.
sum ( in aristas) yuijv [u, , v]> = xi [u] + xi [v] -1; –
Забудьте про последний комментарий, я не могу его стереть. Пример, который я привел выше, был на самом деле придумал, поэтому я могу опубликовать его здесь, не объясняя все и упрощая чтение. Один из моих реальных ограничений, которые имеют ошибки это: _sum ( в краях) Yuijv [и, , v]> = х [и] + х [v] -1; _ Где _xi_ еще один переменная склонность. Оптимизатор оптимизации CPLEX (ide), выделяет первый _u_ в _Yuijv [u, , v] ._ И показывая, что предлагают: «Нельзя использовать тип int для, v: int>. " Спасибо за ответ! –