Я пытаюсь реализовать разложение Benders как подход к решению проблемы в C++ API. Между тем, я использую функцию «getRay», чтобы получить экстремальные направления двойной подзадачи, чтобы построить выполнимость в расслабленной основной проблеме. Способ, которым я использую функцию getRay, выглядит следующим образом.Получение неограниченного направления в C++ API
IloNumVarArray var(env);
IloNumArray val(env);
cplex.getRay(val, var);
Я заканчиваю экстремальными направлениями в массивах var/val. Моя принципиальная проблема связана с тем, как использовать функцию getRay. Насколько мне известно, «getRay» заполняет этот IloNumVarArray переменными, отличными от нуля в крайнем направлении, и соответствующие значения этих переменных будут в IloNumArray. Порядок элементов в массиве, возвращаемых методом getRay(), не указан. Кроме того, он возвращает только ненулевые значения неограниченного. Я не знаю, как сопоставить каждое экстремальное направление с соответствующим выражением в разрешении выполнимости. В частности, я знаю, как построить мою выполнимость, уменьшенную значениями в массивах val и var! Мне было интересно, понравится ли кто-нибудь мне. С уважением
В вашем сообщении недостаточно информации, чтобы рассказать вам, что происходит. Используйте свой отладчик, чтобы отслеживать его, или опубликовать короткий, автономный фрагмент кода, который воспроизводит вашу проблему. – Mat
На самом деле, мне трудно использовать функцию getRay. Не могли бы вы сообщить мне, какая часть неясна? – user3000538
Несколько строк, объясняющих вашу формулировку, помогут. Что вы пытаетесь оптимизировать? Что представляют собой переменные и индексы? И если возможно, поделитесь точным текстом ошибки, который вы получаете. Тогда кто-то может помочь. –