0

Я работаю с одним вариантом дерева 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>. 

Поиск в официальную документацию, и на этом сайте я не могу найти помощь по этой проблеме, и я действительно рекомендую некоторые или, возможно, предложение переопределить реализацию этой переменной.

Спасибо за консультацию.

ответ

0

Похоже, вы пытаетесь присвоить значение int 0 переменной принятия решения типа boolean. Попробуйте добавить ограничение, чтобы исправить это значение.

+0

sum ( in aristas) yuijv [u, , v]> = xi [u] + xi [v] -1; –

+0

Забудьте про последний комментарий, я не могу его стереть. Пример, который я привел выше, был на самом деле придумал, поэтому я могу опубликовать его здесь, не объясняя все и упрощая чтение. Один из моих реальных ограничений, которые имеют ошибки это: _sum ( в краях) Yuijv [и, , v]> = х [и] + х [v] -1; _ Где _xi_ еще один переменная склонность. Оптимизатор оптимизации CPLEX (ide), выделяет первый _u_ в _Yuijv [u, , v] ._ И показывая, что предлагают: «Нельзя использовать тип int для , v: int>. " Спасибо за ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^