Содержание
Обзор литературы 8
Введение
Переход к рыночной экономике и функционированию рыночного механизма регулирования включает в себя совершенствование этапа планирования, который становится тесно связанным с прогнозированием эффективных направлений экономического развития. Актуальными являются разработка математического описания экономических процессов и развитие методов оптимизации для решения возникающих сложных математических задач. Это особенно существенно для определения вариантов экономического развития на перспективу, когда необходимо учитывать крупные и продолжительные народнохозяйственные мероприятия: создание и развитие территориально-производственных комплексов, обеспечение скоординированных программ исследований и разработок, распределение ресурсов для выполнения отдельных комплексов работ при программно-целевом планировании, осуществление выпуска крупных изделий, производство которых требует значительного времени. Традиционный путь решения линейных динамических целочисленных задач состоит во введении дискретного времени, получении в результате этого линейных алгебраических соотношений и применении описанных в литературе общих или специализированных методов целочисленного линейного программирования (ЦЛП).
Оптимальное решение является наилучшим только в рамках использования данной модели. Не следует считать, что это действительно самое лучшее решение анализируемой задачи.
Целью данной работы является обзор и анализ методов решения специальных задач линейного программирования.
Обзор литературы
При написании курсовой работы мною была использована книга «Математические методы и модели для менеджмента» (Глухов В. В., Медников М. Д., Коробко С. Б.), имеющаяся в библиотеке колледжа. Именно в ней наиболее полно изложен материал о специальных задачах линейного программирования. Так же в издании имеется достаточное количество схем и примеров для структурирования прочитанной информации.
Вторым, но не менее важным источником, служит книга «Методы оптимизации» (Харчистов Б.Ф.). В ней изложены основные понятия и теоретические положения курса "Методы оптимизации". Приведены алгоритмы, реализующие различные методы решения оптимизационных задач.
1. Целочисленное программирование
Первые упоминания о линейных уравнениях возникли еще за несколько веков до нашей эры.
В Древней Греции Диофант (II-III вв.) формулирует уравнения, в которых искомые переменные — целые. Например, для уравнения первой степени, а0 + a1x1 = 0, где a0, a1 — целые, решение x1 = -a0/a1 — целое, если a0 делится на a1 без остатка, т. е. такое уравнение не всегда разрешимо в целых числах. Из двух уравнений 3x1 - 27 = 0 и 5x2 + 21 = 0 только первое имеет целое решение: x1 = 27/3 = 9, а второе — нет, так как x2 = -21/5.
Для уравнения с двумя неизвестными: a1x1 + a2x2 = 0, где a2, a1 — целые, решение будет x1 = -(a2/a1)x2. Например,
10x2 - 5x2 = 0 или x1 = 0,5x2 . (1)
Из этого примера можно сделать следующие выводы: уравнение имеет бесчисленное множество решений, так как n > m; решение — целое, если x2 — четное.
Для того чтобы из множества допустимых решений выбрать одно — оптимальное, необходимо, как нам уже известно, добавить к условию (1) целевую функцию. Задачи оптимизации, в которых решение должно быть в целых числах, называют задачами целочисленного программирования. Если в этой задаче целевая функция и ограничения — линейные зависимости, то ее называют целочисленной задачей линейного программирования; если же хотя бы одна зависимость будет нелинейной, то такая задача формулируется как целочисленная нелинейного программирования.
Большинство практических задач принятия решения сводится к целочисленным задачам линейного программирования.
Если к условию (1) добавить такие, например, граничные условия:
2 ≤ x1 ≤ 8; 1 ≤ x2 ≤ 3
то можно видеть, что такая система решения не имеет. Отсюда следует, что задача целочисленного программирования не всегда имеет решение, т. е. она не совместна.
Под целочисленным или дискретным программированием понимают такие задачи (обычно линейные), в которых искомые переменные по смыслу могут принимать только целые значения: число рабочих, разделяемых по рабочим местам; количество единиц оборудования, устанавливаемых на заданной площади, и т. п.
Аналитическая задача целочисленного программирования формулируется:
max(min) L =
Если n1 = n, то задачу называют полностью целочисленной; если n1 < n, то — частично целочисленной.
Предположим, что задача имеет многогранник решений (рис. 1). Если наложить требование целочисленности, то допустимое множество решений выразится в систему точек и уже не будет выпуклым.
Е сли добавить новые ограничения, связывающие внешние целочисленные точки, а затем в качестве многогранника использовать все выпуклое множество, ограниченное осями координат и новым контуром, то получим новую задачу линейного программирования со следующими свойствами:
новый многогранник решений содержит все целые точки, заключавшиеся в первоначальном многограннике решений; любая его угловая точка целая;
так как целевая функция достигает оптимума в угловой точке, то построением многогранника обеспечивается целочисленность оптимального решения.
Таким образом, решение задач целочисленного программирования трудоемко. Поэтому по возможности лучше не накладывать ограничений целочисленности переменных.
В ряде случаев задачу целочисленного программирования решают следующим образом:
как непрерывную задачу линейного программирования;
округляют переменные;
проверяют допустимость округленного решения;
если решение допустимое, то оно принимается как целочисленное.
При необходимости точного решения применяют специальные методы, где учитывается, что множество решений любой целочисленной задачи — конечно. Например, в задаче с переменными x1, x2: 0 < x1 ≤ 4; 0 < xj ≤ 5. Число возможных решений 4*5 = 20. Следовательно, возможен полный перебор всех возможных сочетаний целочисленных x1, x2 и выбор из них наилучших в смысле целевой функции. Трудоемкость этого метода возрастает с ростом числа переменных и области граничных условий, и для реальных задач он неприменим.
Поэтому в реальных задачах применяют методы, в которых не рассматривают все возможные альтернативы. Распространены методы отсечений и методы возврата, среди которых наиболее известен метод ветвей и границ. Метод отсечений для программной реализации сложен.