Re: Simplex method

From
Oleg Shatalov ()
To
Sergey Radkevich
Date
2002-06-10T18:46:22Z
Area
RU.ALGORITHMS
From: Oleg Shatalov <oleg@lakes-environmental.com>


Привет, Сергей!

> Есть задача линейного программирования и алгоритм решения - двухфазный
> симплекс метод

Обычный или Revised?
Вообще-то для программирования лучше брать Revised Simplex Method. Он
дает меньшую вычислительную нагрузку и оперирует с матрицами и
векторами, что опять - таки легко реализовать.

> По описанию алгоритма, нужно добавить в каждое уравнение по одной
> дополнительной (artificial) переменной, эти переменных образуют
> начальный базис.
> Затем нужно минимизировать сумму этих переменных, чтобы найти базис
> исходной системы.

Все правильно.

> Введем x2 в базис, во второе уравнение (во второе потому, что правило
> против зацикливания
> гласит, что в случае неоднозначности в выборе уравнения нужно выбирать
> такое уравнение,
> где из базиса выйдет переменная с меньшим индексом)

Странное правило. Обычное правило против зацикливания - выбор самого
первого подходящего элемента.

> Дальше x3 войдет в базис вытесняя x1 и так далее, однако a6 никогда не
> выйдет из базиса.
> Здесь алгоритм зацикливается.

Еще одно правило, которое поможет тебе - как только искусственная
пременная вышла из базиса, она должна быть удалена. Тогда она никогда не
сможет попасть в базис снова. И это тоже предотвращает зацикливание.

> мне нужно реализацию метода отладить, чтобы быть уверенным в его
> работоспособности
> на любых данных.

Еще раз рекомендую использовать Revised Simplex Method.
Его программировать - одно удовольствие :))

Пока,
Олег.
--- ifmail v.2.15dev5
 * Origin: Golden Triangle On Line Inc. (2:5020/400)