Можно ли получить разные результаты от решения модели с использованием CPLEX в MATLAB и CPLEX в Java?

1

Я решаю линейную модель бинарной оптимизации с использованием CPLEX. Я закодировал модель как в MATLAB, так и в JAVA. Оптимальное значение целевой функции, получаемой как от программирования JAVA, так и от MATLAB, одинаково. Однако значения оптимальной переменной различны. Возможно иметь несколько оптимальных решений для моей модели. Мне было интересно, возможно ли иметь разные оптимальные значения для переменных, возникающих в результате применения CPLEX в MATLAB и JAVA?

  • 0
    Читая ответ @TheBat, вы найдете документацию по детерминированным алгоритмам в разделе справки CPLEX. Msgstr "Чтобы заставить CPLEX использовать детерминированные алгоритмы во всех случаях, установите для параметра параллельного режима значение 1". pic.dhe.ibm.com/infocenter/cosinfoc/v12r2/… . Я не знаю, думал CPLEX ...
Теги:
cplex

1 ответ

0
Лучший ответ

Да, конечно. Под капотом эти языки действуют совершенно иначе, а не только байтовый код и скомпилированный разброс кода. Вы можете написать код в коде C и запустить его через разные компиляторы, и результаты выполнения кода будут разными. Если какая-либо математика с плавающей запятой выполнена, компилятор выполняет различные оптимизации для ускорения кода. В идеале один компилятор всегда будет выполнять математику с плавающей запятой в том же порядке после оптимизации (поэтому, даже если код немного отличается с тем же ожидаемым выходом, это будет одинаково), это предположение не может быть проведено на нескольких компиляторах/языках/hardware, поскольку числа с плавающей запятой невероятно разборчивы.

Я не читал весь этот документ, но он может вас заинтересовать: http://gafferongames.com/networking-for-game-programmers/floating-point-determinism/

  • 0
    Огромное спасибо. Это было так полезно знать!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню