Численная устойчивость симплексного алгоритма - PullRequest
0 голосов
/ 15 февраля 2019

Редактировать : Симплексный алгоритм математической оптимизации, не путать с симплексным шумом или триангуляцией.

Я реализую свой собственный решатель линейного программирования и хотел бы сделать это, используя32 битаЯ знаю, что Simplex очень чувствителен к точности чисел, потому что он выполняет много вычислений, и если используется слишком малая точность, могут возникнуть ошибки округления.Но все же я хотел бы реализовать это с использованием 32-битных операций с плавающей запятой, чтобы я мог выполнять инструкции по четырем параметрам, то есть использовать SIMD для выполнения 4 вычислений одновременно.Я знаю, что я мог бы использовать double и сделать инструкции шириной 2, но 4 больше 2:)

У меня были проблемы с моей реализацией с плавающей запятой, когда решение было неоптимальным или проблема была заявленабыть невыполнимымЭто происходит, в частности, со смешанными целочисленными линейными программами, которые я решаю методом ветвей и границ.

Итак, мой вопрос: как можно максимально предотвратить ошибки округления, приводящие к неосуществимым, неограниченным или субоптимальным решениям?

Я знаю одну вещь, которую я могу сделать, это масштабировать входные значения так, чтобы они были близки к единице (http://lpsolve.sourceforge.net/5.5/scaling.htm). Есть ли что-то еще, что я могу сделать?

...