Точность вычислений c ++ Cplex

Я реализовал свою математическую модель, используя Ilog Cplex с C ++. Большинство моих переменных решений имеют дробные значения в оптимальных решениях. Некоторые из них очень маленькие, поэтому cplex выводит их как 0. Есть ли способ повысить точность, чтобы я мог видеть значения таких переменных?

Кроме того, когда я использую cplex.getBestObjValue(), он дает мне «-Inf». (Это проблема максимизации.)


person user2147241    schedule 30.09.2016    source источник


Ответы (2)


Иметь значения для целочисленных переменных, близкие (но не совсем) к целочисленным значениям, вполне нормально. CPLEX имеет допуск целочисленности, так что эти значения принимаются как достаточно близкие к правильным целочисленным значениям. Просто используйте стандартные функции вывода C ++ для вывода этих значений с любой желаемой точностью.

В большинстве случаев это не проблема, но при необходимости можно установить меньшее значение допуска целочисленности. Обычно я округляю эти значения до ближайшего целого числа и использую это как свое решение. Вы также можете попробовать повторно решить свою модель с этими переменными решения, фиксированными на их округленных целочисленных значениях, чтобы убедиться, что решение действительно действительно. Если вы не уверены, что этого достаточно, попробуйте также предложение Алекса об акценте числовой точности.

person TimChippingtonDerrick    schedule 30.09.2016

вы можете попробовать использовать настройку IloCplex :: Param :: Emphasis :: Numerical

Подчеркивает точность численно нестабильных или сложных задач. Этот параметр позволяет вам указать CPLEX, что он должен подчеркивать точность численно сложных или нестабильных проблем с последующим снижением производительности во времени и памяти.

По поводу вашего второго вопроса, ваша модель LP?

С уважением

person Alex Fleischer    schedule 30.09.2016
comment
Спасибо за Ваш ответ. Когда я использую настройку IloCplex :: Param :: Emphasis :: Numerical, как я могу указать точность? Вы можете привести мне пример использования этого параметра? И да, моя модель LP. - person user2147241; 04.10.2016
comment
значение по умолчанию - 0: не подчеркивать числовую точность; Но 1 означает, что нужно проявлять особую осторожность при вычислениях. - person Alex Fleischer; 05.10.2016