Некоторые экономические задачи целочисленного программирования

Постановка задачи целочисленного программирования. Несостоятельность метода округления. Метод ветвей и границ. Сущность метода отсечений Гомори. Основные этапы итерации алгоритма Гомори. Сущность циклического алгоритма целочисленного программирования.

Рубрика Экономико-математическое моделирование
Вид курсовая работа
Язык русский
Дата добавления 21.12.2010
Размер файла 597,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

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

Максимизировать

при условиях

(1)

Условия (1) могут быть записаны как

(2)

Предположим, что для t = 0 (т. е. для исходной таблицы) все аij - целые и столбцы бj (j = 1,..., n) - лексикографически положительны. Тогда все столбцы на протяжении вычислений остаются лексикографически положительными.

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

(3)

где 0?ry < л (ry - неотрицательный остаток от деления нацело у на л). В частности, 1 = [1/ л ]л + г. Поэтому если л> 1, то [1/л] = 0 и г = 1. Если л = 1, то [1/л,] = 1 и г == 0.

Так же как и ранее, вводимое дополнительное неравенство должно выполняться при любом целом решении задачи (1). Рассмотрим некоторое уравнение в t-таблице (опуская индекс строки) с a0 < 0:

(4)

где х - соответствующая компонента вектора х, a xtj - текущие небазисные переменные. Можно выразить x, a0 и аj, используя введенное выше представление (З):

(5) и (6)

(j=0,1….,n)

Подставив выражения (5) и (6) в (4), и переставив члены, получим

(7)

Поскольку rj ?0, r?0 и на переменные х и xtj наложено требование неотрицательности, левая часть уравнения (7) всегда неотрицательна. Рассмотрим выражение в правой части, заключенное в фигурные скобки. Коэффициенты в этом выражении представляют собой целые числа, а переменные подчинены требованию целочисленности. Поэтому все выражение в скобках должно быть целым. Обозначим его через s, т. е.

(8)

Целочисленная слабая переменная s является неотрицательной. Действительно, если бы s было отрицательным, т. е. принимало значения -1, -2,..., то умножение на л (л > r0) сделало бы всю правую часть уравнения (7) отрицательной, в то время как левая часть неотрицательна.

Рассмотрим два случая л=1 и л>1. Подставляя в уравнение (8) выражение для x из (4), получим:

S=[a0]+?[aj] (-xtj)-{a0+?aj(-xtj)}=-f0-?fj (-xtj). (9)

Полученное уравнение есть не что иное, как отсечение Гомори. Для л>1 имеем [1/л]=0 и уравнение (8) приобретает вид

(10)

Уравнение (10) должно выполняться для любого допустимого целочисленного решения задачи (1). Заметим, что если а0 < О,. то [a0/л] < 0 в уравнении (10). Поэтому уравнение (10) может использоваться в качестве ведущей строки в двойственном симплекс-методе. В частности, всегда можно выбрать л достаточно большим, так чтобы ведущий элемент [aj/л] в строке (10) стал:

равным -1, что позволит сохранить целочисленность таблицы. Выбор соответствующего л будет влиять на скорость сходимости алгоритма. Прежде всего опишем сам алгоритм. В качестве начального необходимо взять двойственно допустимое решение, которое-можно получить добавлением ограничения xn+m+1 = М - x1 -...... -xn, где М - достаточно большая константа, и проведением одной итерации с добавленной строкой и с лексикографически минимальным столбцом, взятыми в качестве ведущих. Алгоритм состоит из следующих шагов.

Ш а г 0. Начать с двойственно допустимой матрицы А° в уравнении (2), элементы которой - целые числа (как будет видно из дальнейшего, матрица А° может содержать и нецелые элементы).

Шаг 1. Среди строк с аi0 < 0 (i = 1,..., n+m) выбрать строку с наименьшим значением i; эта строка станет производящей. (Если аi0? 0 (i= 1,..., n + m), то задача решена.)

Шаг 2. Выбрать л > 0 (правило выбора будет описано дальше) и написать внизу таблицы дополнительную строку

Эта строка выбирается в качестве ведущей.

Шаг 3. Провести шаг двойственного симплекс-метода, вычеркнуть дополнительную строку и вернуться к шагу 1.

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

Если a00 уменьшается, то уменьшается на целое число, поскольку все числа остаются целыми, и, следовательно, через конечное число шагов a00 станет меньше x0. Если алгоритм бесконечен, то a00 должно оставаться Неизменным для всех t > to. Рассмотрим тогда компоненту a10, столбца б0. Если a10 уменьшается, то на целое число. Когда a10 становится отрицательным, первая строка должна быть выбрана в качестве производящей. Если а1j< О для всех j, то задача неразрешима.

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

и дополнительная строка

Для любого аj<0 всегда можно выбрать л достаточно большим, чтобы [aj/л]|==-1. Согласно лексикографическому двойственному симплекс-методу, ведущий столбец бs выбирается по правилу

Поскольку [as/л]=-1 и [aj/л] - отрицательные числа, т.е. -1, -2,…….., -мj, имеем

(11)

Таким образом, бs должен быть лексикографически минимальным столбцом. Последнее означает, что среди всевозможных столбцов (с avj < 0) ведущий столбец должен быть лексикографически минимальным вне зависимости от того, какое значение л выбирается.

Теперь рассмотрим два значения К, при каждом из которых выполняется условие [as1]=-l и [as2]=-l. Столбец б0 изменяется следующим образом:

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

Шаг 0. Пусть строка с номером v является производящей.

Шаг 1. Пусть бs, - лексикографически минимальный столбец среди столбцов с бvj< 0.

Шаг 2. Для каждого с бvj< 0, пусть мi-наибольшее целое, такое,что бsjj

Шаг 3. Пусть [мj=-avjj]. Тогда

Шаг 4. Положить л = max лj для аvj < 0.

Правило выбора л, описанное выше, позволяет сделать ведущий элемент равным -1, при этом будет сохраняться двойственная допустимость таблицы и в то же время нулевой столбец будет максимально лексикографически уменьшаться. Следует заметить, что отсечение Гомори не является самым «сильным» возможным неравенством. Оно также может быть «сильнее» или «слабее» самого производящего неравенства. Например, пусть производящей строкой будет

X= -4-3 (-x1) - 5 (-x2) (12)

Если использовать л=2, то получим отсечение

S= -2-2 (-x1) - 3 (-x2)?0 (13)

Для л=3 имеем

S= -2-1 (-x1) - 2 (-x2)?0 (14)

Для л=4

S=-1-1 (-x1)-2 (-x2)?0 (15)

Как видно, неравенство (14) сильнее, чем (12), (12) сильнее, чем (13), а (13) сильнее, чем (15).

Другое замечание касается того, что если величина л, получаемая указанным выше способом, может быть увеличена так, чтобы [a0/л] и [aj/л] (аj > 0) оставались без изменения, то отсечение Гомори можно усилить, несмотря на то, что нулевой столбец -уменьшится на ту же величину.

Выпишем производящую строку

Чем больше величина л, тем меньше абсолютная величина коэффициентов отсечения. Естественно, что мы хотели бы иметь абсолютную величину [a0/л] большой, а абсолютные величины [aj/л] - малыми. Если значение л (полученное по приведенному выше правилу) может быть увеличено так, чтобы значения [aj/л [] и [a0/л] не изменялись, то используется большее значение для л. Тем самым по возможности уменьшится абсолютная величина [aj/л] для некоторых j, и отсечение станет сильнее.

Например, пусть целевая функция имеет вид X0= - 20 - x1- 2x2 - 3x2 - x4, и производящая строка X= -20+ (-7) (-x1)+ (-8) (-x2)+ (-15) (-x3)+18 (-x4).

Используя описанную выше процедуру выбора л, получим л = 7. Соответствующее отсечение s = -3 + x1 + 2x2 + Зx3 - 2x4? 0.

Если использовать л = 9 вместо л = 7, получим отсечение s* = -3 + x1 + x2 + 2x3 - 2x4 ? О, являющееся более сильным.

Интересная особенность полностью целочисленного алгоритма состоит в том, что для его использования не обязательно требовать целочисленности всех аij. Пусть задача целочисленного программирования имеет вид максимизировать

при условиях

xn+i= ai0 - ?aijxj ?0 (i=1,………,m)

xj?0 (j=1,…….,n)

где a 00 и cj - целые, аi0 о и аij могут быть произвольными действительными числами. Таблица 14.1 содержит в первых n + 1 строках только целые числа (рис. 5).

Рис. 5

Выпишем произвольную производящую строку (опуская обозначение строки)

Вне зависимости от того, являются ли a0 и aj целыми ли действительными, коэффициенты отсечения сегда целые, а ведущий элемент равен -1. В результате итерации с таким ведущим элементом первые n+1 строк таблицы останутся целочисленными. Заметим, что переменная s - неотрицательная целая. В силу приведенных рассуждений доказательство конечности в данном случае мало чем отличается от описанного выше. Когда в нулевом столбце ai0 == 1,..., n)становятся неотрицательными целыми, а остальные элементы нулевого столбца - неотрицательными, то получается оптимальное решение.

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

Заключение

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

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

Список используемой литературы

1. Конюховский П.В. Математические методы исследования операций в экономике. - СПб: Питер, 2002. - 208 с.: ил. - (Серия "Краткий курс"). Раздел 4.2 Метод Гомори.

2. А. Схрейвер. Теория линейного и целочисленного программирования: в 2-х томах.; перевод с английского. 1991 г.

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

4. Е.Г.Белоусов. Введение в выпуклый анализ и целочисленное программирование. М.: Издательство МГУ, 1977 г.

5. В.В. Федосеев, А.Н. Гармаш, Д.М. Дайитбегов.: Экономико-математические методы и прикладные модели: Учеб. пособие для вузов/ЮНИТИ, 1999 г.

6. Интернет ресурсы: www.1st.land.ru

Размещено на Allbest.ru


Подобные документы

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

    курсовая работа [728,8 K], добавлен 11.05.2011

  • Формы задачи линейного программирования, каноническая форма. Симплекс-метод: теоретические основы, прямой алгоритм; метод Гомори. Математическая и техническая постановка задачи, программная реализация: запуск, графический интерфейс и созданные функции.

    курсовая работа [578,7 K], добавлен 04.02.2011

  • Оптимальный план прямой задачи. Значения функций целочисленного и нецелочисленного решений. Оптимальное решение двойственной задачи и условия дополняющей нежесткости. Условия канонической задачи линейного программирования. Метод Жордана–Гаусса.

    контрольная работа [323,0 K], добавлен 20.01.2011

  • Математическая формализация оптимизационной проблемы. Геометрическая интерпретация стандартной задачи линейного программирования, планирование товарооборота. Сущность и алгоритм симплекс-метода. Постановка транспортной задачи, последовательность решения.

    учебное пособие [126,0 K], добавлен 07.10.2014

  • Цель работы: изучить и научиться применять на практике симплекс - метод для решения прямой и двойственной задачи линейного программирования. Математическая постановка задачи линейного программирования. Общий вид задачи линейного программирования.

    реферат [193,4 K], добавлен 28.12.2008

  • Теоретические основы экономико-математических методов. Этапы принятия решений. Классификация задач оптимизации. Задачи линейного, нелинейного, выпуклого, квадратичного, целочисленного, параметрического, динамического и стохастического программирования.

    курсовая работа [2,3 M], добавлен 07.05.2013

  • История создания средств цифровой вычислительной техники. Методы и модели линейного программирования. Экономическая постановка задачи. Выбор метода реализации задачи. Особенности выбора языка программирования. Решение задачи сетевым методом планирования.

    курсовая работа [842,1 K], добавлен 19.02.2015

  • Математическая формулировка задачи линейного программирования. Применение симплекс-метода решения задач. Геометрическая интерпретация задачи линейного программирования. Применение методов линейного программирования к экстремальным задачам экономики.

    курсовая работа [106,0 K], добавлен 05.10.2014

  • Виды задач линейного программирования и формулировка задачи. Сущность оптимизации как раздела математики и характеристика основных методов решения задач. Понятие симплекс-метода, реальные прикладные задачи. Алгоритм и этапы решения транспортной задачи.

    курсовая работа [268,0 K], добавлен 17.02.2010

  • Геометрический способ решения стандартных задач линейного программирования с двумя переменными. Универсальный метод решения канонической задачи. Основная идея симплекс-метода, реализация на примере. Табличная реализация простого симплекс-метода.

    реферат [583,3 K], добавлен 15.06.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.