Целочисленная модель математического программирования

Автор работы: Пользователь скрыл имя, 22 Декабря 2011 в 07:30, реферат

Описание

Целочисленное программирование возникло в 50-60-е годы нашего века из нужд практики - главным образом в работах американских математиков Дж.Данцига и Р.Гомори. Первоначально целочисленное программирование развивалось независимо от геометрии чисел на основе теории и методов математической оптимизации, прежде всего линейного программирования. Однако в последние время исследования в этом направлении все чаще проводятся средствами математики целых чисел.

Работа состоит из  1 файл

Введение.doc

— 183.50 Кб (Скачать документ)

     Найдем  решение задач линейного программирования (I) и (II). Очевидно, здесь возможен один из следующих четырех случаев:

     1. Одна из задач неразрешима,  а другая имеет целочисленный  оптимальный план. Тогда этот план и значение целевой функции на нем и дают решение исходной задачи.

     2. Одна из задач неразрешима,  а другая имеет оптимальный  план, среди компонент которого  есть дробные числа. Тогда рассматриваем  вторую задачу и в ее оптимальном  плане выбираем одну из компонент, значение которой равно дробному числу, и строим две задачи, аналогичные задачам (I) и (II).

     3. Обе задачи разрешимы. Одна  из задач имеет оптимальный  целочисленный план, а в оптимальном  плане другой задачи есть дробные  числа. Тогда вычисляем значения целевой функции на этих планах и сравниваем их между собой. Если на целочисленном оптимальном плане значение целевой функции больше или равно ее значению на плане, среди компонент которого есть дробные числа, то данный целочисленный план является оптимальным для исходной задачи и он вместе со значением целевой функции на нем дает искомое решение.

     Если  же значение целевой функции больше на плане, среди компонент которого есть дробные числа, то следует взять  одно из таких чисел и для задачи, план которой рассматривается, необходимо построить две задачи, аналогичные (I) и (II).

     4. Обе задачи разрешимы, и среди  оптимальных планов обеих задач  есть дробные числа. Тогда вычисляем  значение целевой функции на  данных оптимальных планах и  рассматриваем ту из задач, для которой значение целевой функции является наибольшим. В оптимальном плане этой задачи выбираем одну из компонент, значение которой является дробным числом, и строим две задачи, аналогичные (I) и (II).

     Таким образом, описанный выше итерационный процесс может быть представлен в виде некоторого дерева, на котором исходная вершина отвечает оптимальному плану Хзадачи (1)-(3), а каждая соединенная с ней ветвью вершина отвечает оптимальным планам задач (I) и (II). Каждая из этих вершин имеет свои ветвления. При этом на каждом шаге выбирается та вершина, для которой значение функции является наибольшим. Если на некотором шаге будет получен план, имеющий целочисленные компоненты, и значение функции на нем окажется больше или равно, чем значение функции в других возможных для ветвления вершинах, то данный план является оптимальным планом исходной задачи целочисленного программирования и значение целевой функции на нем является максимальным.

     Итак, процесс нахождения решения задачи целочисленного программирования (1)-(4) методом ветвей и границ включает следующие основные этапы:

     1. Находят решение задачи линейного  программирования (1)-(3).

     2. Составляют дополнительные ограничения  для одной из переменных, значение  которой в оптимальном плане  задачи (1)-(3) является дробным числом.

     3. Находят решение задач (I) и  (II), которые получаются из задачи (1)-(3) в результате присоединения  дополнительных ограничений.

     4. В случае необходимости составляют  дополнительные ограничения для  переменной, значение которой является дробным, формулируют задачи, аналогичные задачам (I) и (II), и находят их решение. Итерационный процесс продолжают до тех пор, пока не будет найдена вершина, соответствующая целочисленному плану задачи (1)-(3) и такая, что значение функции в этой вершине больше или равно значению функции в других возможных для ветвления вершинах.

     Описанный выше метод ветвей и границ имеет  более простую логическую схему  расчетов, чем метод Гомори. Поэтому  в большинстве случаев для  нахождения решения конкретных задач  целочисленного программирования с использованием ЭВМ применяется именно этот метод.

     Метод Гомори

     C помощью отсечений выделяют целочисленные части полиэдров. Метод отсечений Гомори предназначен для решения целочисленных линейных программ с помощью симплекс-метода. Метод отсечений оказался полезным и с теоретической точки зрения он дает возможность описать целочисленную оболочку полиэдра.

     Данный  метод, который также носит название метода отсекающих плоскостей, предназначен для решения целочисленной задачи линейного программирования в канонической форме.

     Описываемая ниже версия алгоритма предназначена  для решения полностью целочисленных  задач, т.е. таких, у которых все  параметры aij, cj, b- целые.

     Описание  алгоритма.

     Приведем  обобщенную схему алгоритма Гомори. Структурно он делится на так называемые большие итерации. Каждая большая итерация содержит этапы:

     1. Сначала задача решается методами  линейного программирования (малые  итерации), обычно симплекс-методом,  и анализируется результат, если  результатом являются целые числа, то на этом решение заканчивается, а если дробные, то производят следующие операции:

     2. В оптимальном плане (симплекс-таблице)  выбирают строку, в которой целая  часть дробного свободного члена  (Р0) принимает наибольшее значение.

     3. Построение для найденного компонента условия отсечения. Исходя из уравнения, в систему ограничений добавляем неравенство, в котором коэффициенты будут дробными частями коэффициентов данного уравнения.  Переводим к каноническому виду добавляя новую переменную xn+1.И соответственно добавляем в симплекс-таблицу новый базисный вектор по новой переменной xn+1.

     4. Переход на начало следующей  большой итерации.

     Замечание:

     При добавлении в симплекс-таблицу нового базисного вектора по новой переменной xn+1 мы получаем недопустимое (отрицательное) решение. Для того, чтобы избавиться от недопустимого решения выбираем столбец замещения так, чтобы строкой замещения стала новая добавленная строка по переменной xn+1Продолжаем пересчет симплекс-таблицы. Если снова получаем дробное решение, то еще вводим дополнительный базисный вектор, и так до получения целочисленного решения. Но следует заметить, что если область допустимых решений очень мала, то она может и не содержать целых значений, это необходимо проверить графически. Если область допустимых решений не содержит целочисленного решения, то в применении метода Гомори нет необходимости, целого решения не будет. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     3. Пример решения  целочисленных задач.

     Задача.

     В мебельный магазин завезли диваны, кресла, столы и стулья, расходы на содержание продукции показаны в таблице 1.1.

       Диваны Кресла Столы Стулья       
Цены  на изделия, тыс.руб. 1 1 1 1 16
Расход  труда,

чел-час

6 6 4 3 110
З/п  работников 4 6 10 13 150
Прибыль от реализации продукции 60 70 120 130  
 

     Определить  такую производственную программу, при которой прибыль от реализации будет максимальной.

     Решение:

     Построение  экономико-математической модели:

     Пусть Х (х1…х4) – оптимальная производственная программа мебельного магазина, где:

     х1 – количество диванов;

     х2 – количество кресел;

     х3 – количество столов;

     х4 – количество стульев.

     Система ограничений:

      1*x1+1*x2+1*x3+1*x4 ≤ 16

     6*x1+5*x2+4*x3+3*x4 ≤ 110

     4*x1+6*x2+10*x3+13*x4 ≤ 150

     х1…х4≥ 0

     х1…х4 - целые

     Целевая функция:

     F (х1…х4) = 60*x1+70*x2+120*x3+130*x4 → max

     Ответ: Х (1;1;14;0); F = 1810

     MS Excel содержит модуль «Поиск решения»  позволяющий осуществлять поиск  оптимальных решений, в том  числе решение задач линейного, целочисленного, нелинейного и стохастического программирования.

     Рис.1.1. Модуль «Поиск решения» программы MS Excel

     Далее, переходим к решению. Выбираем в  меню «Сервис | Поиск решения». Открывается  диалоговое окно «Поиск решения». Здесь  указывается ячейки целевой функции, переменных и устанавливаются ограничения исходя из системы ограничений. Можно начать решение, или установить «параметры» решения.

     В параметрах поиска решений выбираем «линейная модель» и «неотрицательные значения».

     «Линейная модель» - служит для ускорения поиска решения линейной задачи оптимизации.

     По-умолчанию  выбран метод поиска «Ньютона», есть возможность выбрать «сопряженных градиентов».

     «Метод  Ньютона» - реализация квазиньютоновского метода, в котором запрашивается  больше памяти, но выполняется меньше итераций, чем в методе сопряженных градиентов.

     «Метод  сопряженных градиентов» - реализация метода сопряженных градиентов, в  котором запрашивается меньше памяти, но выполняется больше итераций, чем  в методе Ньютона. Данный метод следует использовать, если задача достаточно велика и необходимо экономить память, а также если итерации дают слишком малое отличие в последовательных приближениях.

     Причем  здесь нет возможности выбрать  ни графический симплекс-метод, ни симплекс-таблиц. Применение метода позволяющего найти целочисленное решение определяется лишь добавление условия на каждую переменную – «целое».

     Такой подход к решению задач хорошо подходит для проведения практических расчетов, когда важен лишь результат  решения, а не сам процесс получения оптимального решения.

     Если  Вам важен сам процесс решения  задачи с применением какого-либо метода решения, модуль «Поиск решения» может быть использован лишь для  сравнения результатов решения  задачи в качестве проверки правильности применения методов. Тут следует отметить, что некоторые задачи могут иметь несколько вариантов оптимального решения. Так, например, транспортная задача (частный случай задачи ЛП, и может быть представлена в виде целевой функции и системы ограничений) может иметь два (и более) оптимальных плана перевозок с одинаковой стоимостью.

     Заключение

     В данной работе была рассмотрена сущность целочисленного программирования. Затронуты  специальные методы решения целочисленных  задач. Такие задачи возникают при  моделировании разнообразных производственно-экономических, технических, военных и других ситуаций. В то же время ряд проблем самой математики может быть сформулирован как целочисленные экстремальные задачи.

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

     Список  используемых источников:

     1. Конюховский П.В. Математические методы исследования операций в экономике. - СПб: Питер, 2007

     2. В.Г.Карманов. Математическое программирование: Учебное пособие, стереотип - М: ФИЗМАТ, 2009

     3. В.В. Федосеев, А.Н. Гармаш, Д.М. Дайитбегов.: Экономико-математические методы и прикладные модели, 2007

     4. http://www.math.mrsu.ru/

Информация о работе Целочисленная модель математического программирования