Модераторы: PILOT
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Симплекс-метод и отсечение Гомори на Qt, Реализация алгоритмов на Qt 
:(
    Опции темы
boi4
Дата 4.5.2011, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 4.5.2011

Репутация: нет
Всего: нет



Вот полный и качественный алгоритм: (реализовывался на Delphi7 )

Собственно алгоритм:

1.    Если предложена задача на максимум, то сформулировать эквивалентную задачу на минимум (умножить коэффициенты целевой функции на –1).
2.    Обеспечить условие bi >= 0, при необходимости умножив для этого соответствующие уравнения системы на –1.
3.    Если имеется готовое начальное базисное решение задачи, то перейти к п. 7, иначе перейти к п. 4.
4.    Сформулировать вспомогательную ЗЛП (для нахождения начального базисного решения исходной задачи) следующим образом:
целевая функция: xn+1 + … + xn+m
i-тое уравнение системы: ai1x1 + … + ainxn + xn+i = bi
5.    Решить вспомогательную ЗЛП, используя данный алгоритм, при этом положив начальным базисом (xn+1,…,xn+m).
6.    Если после окончания решения вспомогательной ЗЛП в ее базисе останутся вектора An+i, где i > 0, то:
6.1.    Если среди xn+i есть ненулевые, то исходная ЗЛП не имеет решения.
6.2.    Если в симплекс-таблице, тем не менее, для всех таких i xij = 0, где j=1..n, то все вспомогательные вектора, вошедшие в базис, из него исключаются. Перейти к п. 7.
6.3.    Если существуют ненулевые xij, то принудительно ввести в базис вектор Aj и вывести из базиса вектор Ai. Повторять п. 6.3 до тех пор, пока перестанут выполняться условия п. 6 или будут выполняться условия п. 6.2. После достижения необходимого результата перейти соответственно к п. 7 или к п. 6.2.
7.    Сформировать симплекс-таблицу (если был задан начальный базис) заново или путем корректирования симплекс-таблицы вспомогательной ЗЛП (отсечь ненужные ее части).
8.    Сделать преобразования симплекс-таблицы таким образом, чтобы матрица, составленная последовательно из векторов текущего базиса, была единичной.
9.    Найти оценки j = (CБ, Aj) – Cj. Если среди них нет положительных, то перейти к п. 12, иначе выбрать среди них максимальную положительную k = max j и вывести из базиса соответствующий ей вектор Ak.
10.    Положить I-1 = B (множество индексов векторов, входящих в текущий базис). Cтроить In+1 = { i In| для xik> 0 min xi,n/xik – одинаково для всех i }, пока очередное In+1 не будет состоять из одного элемента. Вектор с данным индексом необходимо вывести из базиса. Другой вариант: I0 пусто. В этом случае решение ЗЛП: целевая функция не ограничена (бесконечно убывает).
11.    Изменить базис (вывести и ввести вектора, которые были определены для этого ранее). Перейти к п. 8.
12.    Окончательное оптимальное решение формируется следующим образом: неизвестные, соответствующие не вошедшим в окончательный базис векторам, полагаются равными 0, а неизвестные, соответствующие векторам, вошедшим в базис, берутся из столбца A0 симплекс-таблицы (в этом столбце они распогалаются в том же порядке, в котором в таблице следуют базисные вектора).

Нужна помощь в реализации его на Qt. При необходимости могу предоставить исходники на Delphi. Моя почта [email protected]
PM MAIL   Вверх
borisbn
Дата 4.5.2011, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



1. 
Цитата(boi4 @  4.5.2011,  11:15 Найти цитируемый пост)
Нужна помощь в реализации его на Qt

Qt - не язык программирования, а набор библиотек, в данном случае - совершенно не нужных.

2. Цена вопроса ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Объявления о найме специалистов"
BearBeer
  • Придерживайтесь правил форума.

  • Если вы предлагаете НЕ удалённую работу, то

    название города и фирмы обязательно указывать уже в названии темы(!)

  • Одна вакансия - одна тема.

    Вам будет удобней следить за ответами, ищущим работу - выбирать.


  • В случае, если у нас возникнут обоснованные подозрения

    о неблагонадежности Вашего электронного адреса, ваш аккаунт будет удалён, а доступ к форуму запрещён!


  • Хотите быстрее найти специалиста? Разместите тогда ваше объявление вверху всех страниц сайта! Тогда его будут ежедневно видеть более 4000 программистов! Обратите внимание на верхний левый угол сайта - там вы найдете дополнительные инструкции при клике на линк.

В случае невыполнения данных правил Ваши сообщения могут быть удалены без предупреждения.


Полный спискок правил. С уважением, BearBeer.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Объявления о найме специалистов | Следующая тема »


 




[ Время генерации скрипта: 0.0555 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.