Метод ветвей и границ решение задач целочисленного программирования

Автор работы: Пользователь скрыл имя, 01 Июля 2013 в 23:07, курсовая работа

Краткое описание

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

Прикрепленные файлы: 1 файл

курсовая.doc

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

 

Министерство образования  и науки Калужской области

 

Государственное бюджетное  образовательное учреждение

среднего профессионального  образования Калужской области

«Сосенский радиотехнический техникум»

(ГБОУ СПО «СРТ»)

 

 

 

 

 

 

 

 

КУРСОВОЙ ПРОЕКТ

 

На тему: метод ветвей и границ решение задач целочисленного программирования

 

 

 

 

 

Разработал:

Группа:

Специальность: 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»

 

 

 

 

Руководитель:    

 

 

 

 

2013

 

Содержание

 

 

Введение

При рассмотрении целого ряда задач финансового менеджмента и бизнеса необходимо учитывать требование целочисленности используемых переменных. Такие задачи называются задачами целочисленного программирования.

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

Целочисленным (иногда его называют также дискретным) программированием называется раздел математического программирования, изучающий экстремальные задачи, в которых на искомые переменные накладывается условие целочисленности, а область допустимых решений конечна. Огромное количество экономических задач носит дискретный, чаще всего целочисленный характер, что связано, как правило с физической неделимостью многих элементов расчета: например, нельзя построить два с половиной завода, купить полтора автомобиля  и т.д. В ряде случаев такие задачи решаются обычными методами, например, симплексным методом, с последующим округлением до целых чисел. Однако такой подход оправдан, когда отдельная единица составляет очень малую часть всего объема (например, товарных запасов); в противном случае он может внести значительные искажения в действительно оптимальное решение. Поэтому разработаны специальные методы решения целочисленных задач.

Рекомендации по формулировке и решению ЦП

  1. Количество целочисленных переменных уменьшать насколько возможно. Например, целочисленные переменные, значения которых должно быть не менее 20, можно рассматривать как непрерывные.
  2. В отличие от общих задач ЛП, добавление новых ограничений особенно включающих целочисленные переменные, обычно уменьшают время решения задач ЦП.
  3. Если нет острой необходимости в нахождении точного оптимального целочисленного решения, отличающегося от непрерывного решения, например, 3%. Тогда реализацию метода ветвей и границ для задачи максимизации можно заканчивать, если отношение разницы между верхней и нижней границ к верхней границы меньше 0,03.

Метод ветвей и границ можно применять для решения  задач нелинейного программирования

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

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

 

 

Основная часть

1.Теоретические основы

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

В некоторых задачах линейного  программирования результат вычислений должен выражаться целым числом. Например, количество изготовленных автомобилей, изданных книг, собранных холодильников и т.д. Целевая функция и условия ограничений в таких задачах также выражаются целыми числами. Попытки решить задачу целочисленного программирования симплексным методом (или другими методами) приводят к тому, что решение получается в виде дробных чисел. Попытка округлить полученный результат до ближайшего целого числа приводит к тому, что найденное решение либо выходит за область допустимых решений, либо находится внутри этой области, и, как следствие, является или недопустимым или неоптимальным.

На рисунке 1 найдено решение  задачи линейного программирования в точке Х(5,6;4,8). При округлении до ближайшего целого числа получим решение

 Х(6;5),которое будет находиться  вне области допустимых решений.  При округлении полученного результата  в другую сторону получим Х(5;4),которое  не будет оптимальным. Очевидно, что оптимальное решение будет  в точке (5;5).

Учитывая то, что все целочисленные значения вектора решений лежат внутри области допустимых решений (ОДР) и, соответственно, имеют большие значения, нежели значения в вершинах ОДР, то и значение целевой функции будет несколько большим.

(0.1)

Математическая модель задач целочисленного программирования, наложенных ограничениях: при - целое, , .(0.2)

Задачу целочисленного программирования решают одним из методов

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

где символом ^ обозначена дробная часть числа, а символом ~ целая часть числа.

Если  - дробное число, а все - целые числа, то задача не имеет целочисленного решения.

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

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

Математическая модель задачи метода «ветвей и границ» представлена выражениями:

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

при ограничениях: при - целое, , .

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

В первой задаче дополнительное ограничение содержит округление до ближайшего меньшего целого значения:

(0.3)

Во второй задаче дополнительное ограничение содержит округление до ближайшего большего целого значения:

(0.4)

Где символом обозначена дробная часть числа, а символом  ~ целая часть числа.

Суть метода ветвей и  границ – в направленном частичном  переборе допустимых решений. Будем рассматривать задачу линейного программирования.

 Рекомендации по формулировке и решению ЦП

Количество целочисленных  переменных уменьшать насколько  возможно. Например, целочисленные  переменные, значения которых должно быть не менее 20, можно рассматривать как непрерывные.

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

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

 Вначале она решается без ограничений на целочисленность. При этом находится верхняя граница F(x), так как целочисленное решение не может улучшить значение функции цели.

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

Ветвление производится последовательным введением дополнительных ограничений. Пусть xk – целочисленная переменная, значение которой в оптимальном решении получилось дробным. Интервал [βk] ≤ xk ≤ [βk ]+1 не содержит целочисленных компонентов решения. Поэтому допустимое целое значение xk должно удовлетворять одному из неравенств xk≥[βk]+1 или xk≤[βk]. Это и есть дополнительные ограничения. Введение их в методе ветвей и границ на каждом шаге порождает две не связанные между собой подзадачи. Каждая подзадача решается как задача линейного программирования с исходной целевой функцией. После конечного числа шагов будет найдено целочисленное оптимальное решение.

 

Алгоритм метода ветвей и границ

1.Получить опорное решение.

2.Проверить, является ли полученное  решение целочисленным? Если «да», то перейти к шагу 11. Если «нет»,  то присвоить значению целевой  функции большое отрицательное значение и перейти к шагу 3.

3.Из вектора решения выбрать  переменную, имеющую наибольшее  нецелочисленное значение.

4.Определить дополнительное ограничение  для выбранной переменной и  выполнить ветвление алгоритма  на две задачи.

5.Выбрать очередную из двух задач. Проверить, просмотрен ли весь список задач? Если «да», то перейти к шагу 11. Если «нет», то перейти к шагу 6.

6.Найти оптимальное решение  очередной задачи.

7.Проверить полученное оптимальное  решение. Если найденное решение  лучше ранее зафиксированного результата, то перейти к шагу 9. Если найденное решение хуже ранее зафиксированного результата, то перейти к шагу 8.

8.Отказаться от дальнейшего  ветвления и перейти к шагу 5.

9.Проверить, является ли полученное  решение целочисленным. Если «да», то перейти к шагу 10. Если «нет», то перейти к шагу 3.

10.Запомнить вектор решения и  значение целевой функции и  перейти к шагу 5.

11.Проверить, равно ли значение  целевой функции ранее установленному  большому отрицательному значению (на шаге 2)? Если «да», то задача не имеет целочисленного решения. Если «нет», то перейти к шагу 12.

12.Вывести вектор решения и  значение целевой функции.[1]

Применение метода ветвей и границ рассмотрим на конкретном примере.

2.Постановка задачи

2.1Построить экономико-математическую  модель задачи:

Экономико-математическую модель данной задачи мы не строим, так  как она нам дана в условии  данной задачи.

Найти целочисленное  решение методом Ветвей и границ, если целевая функция  и ограничения

2.2 Математическая модель.

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

При ограничениях:

2.3 Входные данные.

Задача целочисленного программирования метода «Ветвей и  границ», предполагает, что входными данными в данной задачи являются: количество уравнений, количество переменных, стремление целевой функции(max или min).

2.4 Выходные данные.

 

На выходе данной задачи мы должны иметь значения переменных X(x1;x2;x3;x4); F(x).

2.5 Функциональные тесты

и ограничения

Решение: 1.Приведем задачу к каноническому виду

2.Найдем опорное решение  с помощью симплексного метода.

1 столбец {9}- 9*2=18

2 столбец {4,6; 6}- 4,5*3=13,5

3 столбец {4,5; 12}- 4,5*4=18

Информация о работе Метод ветвей и границ решение задач целочисленного программирования