Автор: Пользователь скрыл имя, 16 Января 2011 в 14:32, курсовая работа
целью данной работы является не столько решение задач линейного программирования, сколько реализация этого решения с помощью ЭВМ. Конкретно, в этой работе разбирается реализация симплексного метода решения и поиска первоначального допустимого базисного решения.
Содержание 2
Введение 3
Теоретическая часть 4
Задачи линейного программирования 5
Решение задач симплексным методом 8
Двойственные задачи 12
Экономическая интерпретация двойственных задач. 12
Свойства двойственных задач. 14
Решение задач с помощью симплексных таблиц 16
Реализация алгоритма 19
Выводы и заключения 21
Список используемых источников информации 21
Теперь составляется новая таблица. В столбце "Базис" вместо старой переменной - xq пишем новую - xs. Опять на пересечении основных переменных ставим 1, а остальные клетки в столбцах основных переменных заполняем нулями (включая нижнюю строку). Далее, новую строку с номером q получаем путём деления старой строки на разрешающий элемент (aqs), при этом считаем только пустые клетки (те которые в столбцах неосновных переменных).
Остальные клетки считаем по следующим формулам:
новая aij ровна старой aij-ais*aqj/aqs
новая bi ровна старой bi-ais*bq/aqs
новая cj ровна старой cj-cs*aqj/aqs
Клетка c0 заполняется как старая c0-cs*gq.
Затем снова проверяем решение на оптимальность, если оно не оптимально ищем разрешающий элемент и так далее, пока не найдём оптимума.
Но
возможны и другие ситуации - особые
случаи симплексного метода. Например,
задача не имеет решения, если все оценочные
отношения gi равны нулям
и бесконечностям. Кроме того, задача так
же может зациклиться. Эти случаи тоже
следует учитывать.
Программа
реализуется с применением
Сначала программа при выборе открытия файла загружает ссылку на файл.
После этого нажимаем кнопку запуска оптимизации.
Метод Load_From_File() читает содержимое файла и передает его на обработку.
Метод Transponate_Matrix() транспонирует матрицу коэффициентов путем простого переприсваивания элементов с заменой строк на столбцы.
Рассмотрим метод подробнее.
Сначала определяется минимум по строке функции, т.е. определяется разрешающий столбец.
После
этого рассчитывается
если отношение меньше нуля, тогда записать в ячейку оценочного отношения максимальное значение выбранного типа данных (Например, для типа float таковой является MAXFLOAT). При этом вычислении совмещен поиск минимального значения.
По полученным координатам (разрешающий столбец и разрешающая строка)
определяется
разрешающий элемент, на который будет
делиться разрешающая строка.
Новый
массив заполняется точно
сначала разрешающая строка
потом согласно правилу
остальных ячеек, причем даже ячейки заполняемые для неосновных
переменных тоже заполняются правильно;
меняем номера элементов в массиве базисов.
Копируем в старый массив новую матрицу.
Записываем в файл представление матрицы.
Проверяем, является ли решение конечным
да, является, тогда выводим решение и прерываем рекурсию;
нет, вызываем снова этот метод.
После
возврата из основного метода
загружаем в браузер
Помимо этого в программе реализован метод создания нового исходного файла путем набора обычного текстового файла в окне редактирования.
В программе представлены также методы вызова информации о программе, а также загрузки материалов.
При
написании программы и
Среда C++Builder 6, создание собственно программы.
Была выбрана потому, что является самой удобной, на мой взгляд, для написания подобного приложения с минимальными накладными затратами времени.
Изначально код был написан на языке С++, который является идеальным для создания программ подобного рода. Среда же имеется очень удобный отладчик, благодаря которому отыскивать ошибки стало намного легче, чем в среде Borland C++ 3.1.
Тем более что можно создать подобное приложение быстро, используя стандартные компоненты.
Image Editor, Microsoft Paint, создание графики, ярлыка, значков и кнопок.
Far Menedger, операции с файлами, написание материалов.
Internet
Explorer, просмотр результатов работы.
Для решения задачи реализации симплекс-метода в случае всех отрицательных свободных членов мы должны прибегнуть к решению двойственной задачи. Это позволяет получить решение по оптимальному решению двойственной задачи, имеющей допустимое начальное решение.
Задание выполнено, программа работает.
RAR(SFX) архив программы и материалов.
Информация о работе Реализация симплекс-метода в случае отрицательных свободных членов