Линейное программирование

Содержание


Содержание

1.Пояснительная записка

1.1.Введение

2.Теоретическая часть

2.1 Элементы теории матричных игр

2.2 Решение матричных игр в чистых стратегиях

2.3 Решение матричных игр в смешанных стратегиях путём сведения к задаче линейного программирования

3. Практическая часть

3.1 Построение математической модели задачи

3.2 Выбор метода решения и привидения задачи к каноническому виду

3.3 Решение задачи путем сведения к задаче линейного программирования

- Блок схема к поставленной задачи

- Программа к поставленной задачи (программный код)

3.4 Анализ результата решения поставленной задачи

4. Вывод курсового проектирования

Заключение

Список основных источников

Пояснительная записка курсового проектирования

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

1. КРАТКИЙ ОБЗОР АЛГОРИТМОВ РЕШЕНИЯ ЗАДАЧ ДАННОГО ТИПА 1.1 Математическое программирование.

Математическое программирование занимается изучение экстремальных задач и поиском методов их решения. Задачи математического программирования формулируются следующим образом : найти экстремум некоторой функции многих переменных f ( x1, x2, ... , xn ) при ограничениях gi ( x1, x2, ... , xn ) ( bi , где gi - функция, описывающая ограничения, ( - один из следующих знаков ( , ( , ( , а bi - действительное число, i = 1, ... , m. f называется функцией цели ( целевая функция ). Линейное программирование - это раздел математического программирования, в котором рассматриваются методы решения экстремальных задач с линейным функционалом и линейными ограничениями, которым должны удовлетворять искомые переменные. Задачу линейного программирования можно сформулировать так . Найти max [pic] при условии : a11 x1 + a12 x2 + . . . + a1n xn ( b1 ; a21 x1 + a22 x2 + . . . + a2n xn ( b2 ; . . . . . . . . . . . . . . . . . . . . . . . . . . . . am1 x1 + am2 x2 + . . . + amn xn ( bm ; x1 ( 0, x2 ( 0, . . . , xn ( 0 . Эти ограничения называются условиями не отрицательности. Если все ограничения заданы в виде строгих равенств, то данная форма называется канонической. В матричной форме задачу линейного программирования, записывают следующим образом. Найти max cT x при условии A x ( b ; x ( 0 , где А - матрица ограничений размером (m(n), b(m(1) - вектор-столбец свободных членов, x(n ( 1) - вектор переменных, сТ = [c1, c2, ... , cn ] - вектор-строка коэффициентов целевой функции. Решение х0 называется оптимальным, если для него выполняется условие сТ х0 ( сТ х , для всех х ( R(x). Поскольку min f(x) эквивалентен max [ - f(x) ] , то задачу линейного программирования всегда можно свести к эквивалентной задаче максимизации. Для решения задач данного типа применяются методы:

1) графический;

2) табличный ( прямой, простой ) симплекс - метод;

3) метод искусственного базиса;

4) модифицированный симплекс - метод;

5) двойственный симплекс - метод.

1.2 Табличный симплекс - метод Для его применения необходимо, чтобы знаки в ограничениях были вида “ меньше либо равно ”, а компоненты вектора b - положительны. Алгоритм решения сводится к следующему :

1. Приведение системы ограничений к каноническому виду путём введения дополнительных переменных для приведения неравенств к равенствам.

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

3. Формируется симплекс-таблица.

4. Рассчитываются симплекс- разности.

5. Принимается решение об окончании либо продолжении счёта.

6. При необходимости выполняются итерации.

7. На каждой итерации определяется вектор, вводимый в базис, и вектор, выводимый из базиса. Таблица пересчитывается по методу Жордана Гаусса или каким-нибудь другим способом.

1.3 Метод искусственного базиса. Данный метод решения применяется при наличии в ограничении знаков “ равно ”, “ больше либо равно ”, “ меньше либо равно ” и является модификацией табличного метода. Решение системы производится путём ввода искусственных переменных со знаком, зависящим от типа оптимума, т.е. для исключения из базиса этих переменных последние вводятся в целевую функцию с большими отрицательными коэффициентами, а в задачи минимизации с положительными. Таким образом, из исходной получается новая задача. Если в оптимальном решении задачи нет искусственных переменных, это решение есть оптимальное решение исходной задачи. Если же в оптимальном решении задачи хоть одна из искусственных переменных будет отлична от нуля, то система ограничений исходной задачи несовместна и исходная задача неразрешима.

1.4 Модифицированный симплекс-метод. В основу данной разновидности симплекс-метода положены такие особенности линейной алгебры, которые позволяют в ходе решения задачи работать с частью матрицы ограничений. Иногда метод называют методом обратной матрицы. В процессе работы алгоритма происходит спонтанное обращение матрицы ограничений по частям, соответствующим текущим базисным векторам. Указанная способность делает весьма привлекательной машинную реализацию вычислений вследствие экономии памяти под промежуточные переменные и значительного сокращения времени счёта. Хорош для ситуаций, когда число переменных n значительно превышает число ограничений m. В целом, метод отражает традиционные черты общего подхода к решению задач линейного программирования, включающего в себя канонизацию условий задачи, расчёт симплекс -разностей, проверку условий оптимальности, принятие решений о коррекции базиса и исключение Жордана Гаусса. Особенности заключаются в наличии двух таблиц - основной и вспомогательной, порядке их заполнения и некоторой специфичности расчётных формул.

ПОСТАНОВКА ЗАДАЧИ:

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

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

Соответственно:

1. Первое с чего начинаем, это строим математическую модель задачи;

2. Выбираем метод решения задачи и приводим задачу к каноническому виду;

3. Решаем задачу путём сведения к задаче линейного программирования;

4. Затем строим блок схему к задачи с написанием программы на языке С++Builder 6.;

5. Дальнейшим этапом моей работы будет анализ результата решения выполненной мною задачи.


1.1 Введение


1 Математические методы

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

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

Общее в моделях то, что во всех случаях модель в определённом смысле заменяла сам исследуемый объект. Вместо исходного объекта (оригинала) использовалась его модель, модель являлась представлением объекта в некоторой форме, отличной от формы его реального существования.

Модель – это материальный или идеальный объект, который строится для изучения исходного объекта (оригинала) и который отражает наиболее важные качества и параметры оригинала.

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

В любом случае модель строится для с целью узнать про объект что – либо новое или сохранить об объекте информацию, которая может стать недоступной в будущем.

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

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

Практически во всех науках построение и использование моделей является мощным орудием познания.

В моделировании существует два пути:

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

Модель может отражать реальность более абстрактно – словесным описанием формализованным по каким – то правилам, соотношениям.

Существует следующая классификация абстрактных моделей:

Вербальные

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

Математические

Это очень широкий класс знаковых моделей, основанных на формальных языках над конечными алфавитами, широко использующих те или иные математические методы.

Информационные

Это класс знаковых моделей описывающих информационные процессы в системах самой разнообразной природы.

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

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

Понятие «аналитическое» решение и «компьютерное» решение не противостоят друг другу, так как:

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

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

2 Симплекс метод решения задач линейного программирования

Симплекс метод - универсальный метод для решения линейной системы уравнений или неравенств и линейного функционала.

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

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

Ограничения вида «=». Часто бывает, что несмотря на то что ограничения имеют вид равенства, единичный базис не выделяется или трудно выделяется. В этом случае вводятся искусственные переменные для создания единичного базиса - Yi. В систему ограничений они входят с коэффициентом «1» , а в целевую функцию с коэффициентом «M», стремящимся к бесконечности (при Fmin - «+M», при Fmax - «-M»).

Ограничения вида «» - Плановые ограничения. Дополнительные переменные (X), несущие определенный экономический смысл - перерасход ресурсов или перевыполнение плана, перепроизводство, добавляются с коэффициентом «-1», в целевую функцию - с коэффициентом «0». А искусственные переменные (Y) как в предыдущем случае.

Алгоритм симплекс метода.

(первая симплекс таблица)

Линейное программированиеПусть система приведена к каноническому виду.


X1+ q1,m+1 Xm+1 + …. + q1,m+n Xm+n = h1

X2+ q1,m+1 Xm+1 + …. + q1,m+n Xm+n = h1

X3+ q1,m+1 Xm+1 + …. + q1,m+n Xm+n = h1

……………………………………………………………….

Xm+ qm,m+1 Xm+1 + …. + qm,m+n Xm+n =hm


В ней m базисных переменных, k свободных переменных. m+k=n - всего переменных.


Fmin= C1X1+ C2X2+ C3X3+....+ CnXn


Все hi должны быть больше либо равны нулю, где i=1,2...m. На первом шаге в качестве допустимого решения принимаем все Xj=0 (j=m+1,m+2,...,m+k). При этом все базисные переменные Xi=Hi.

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


Таблица 1.

C

Б

H C1 C2 Cm

Cm+1

Cm+k



X1 X2 Xm Xm+1 Xm+k

C1

C2

C3

:

:

Cm

X1

X2

X3

:

:

Xm

h1

h2

h3

:

:

hm

1

0

0

:

:

0

0

1

0

:

:

0

:

:

:

:

:

:

0

0

0

:

:

0

q1,m+1

q2,m+1

q3,m+1

:

:

qm,m+1

:

:

:

:

:

:

q1,m+k

q2,m+k

q3,m+k

:

:

qm,m+k


F= F0   m m+1 m+k

Первый столбец- коэффициенты в целевой функции при базисных переменных.

Второй столбец - базисные переменные.

Третий столбец - свободные члены (hi0).

Самая верхняя строка - коэффициенты при целевой функции.

Вторая верхняя строка - сами переменные, входящие в целевую функцию и в систему ограничений.

Основное поле симплекс метода - система коэффициентов из уравнения.

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


Для первой итерации F0= ci*hi.


m - оценки они рассчитываются по формуле:

j =  ciqij-cj.

Индексная строка позволяет нам судить об оптимальности плана:

При отыскании Fmin в индексной строке должны быть отрицательные и нулевые оценки.

При отыскании Fmax в индексной строке должны быть нулевые и положительные оценки.

Переход ко второй итерации:

Для этого отыскиваем ключевой (главный) столбец и ключевую (главную) строку.

Ключевым столбцом является тот в котором находится наибольший положительный элемент индексной строки при отыскании Fmin или наименьший отрицательный элемент при отыскании Fmax.

Ключевой строкой называется та, в которой содержится наименьшее положительное частное от деления элементов столбца H на соответствующие элементы ключевого столбца.

На пересечении строки и столбца находится разрешающий элемент.

На этом этапе осуществляется к переходу к последующим итерациям.

Переход к итерациям:

Выводится базис ключевой строки, уступая место переменной из ключевого столбца со своим коэффициентом.

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

Если в главной строке содержится нулевой элемент, то столбец, в котором находиться этот элемент переноситься в последующую итерацию без изменения.

Если в главном столбце имеется нулевой элемент, то строка, в которой он находиться переноситься без изменения в последующую итерацию.

Остальные элементы переносятся по формуле:


Линейное программирование


Метод искусственного базиса.(Вторая симплекс таблица)

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

Построение искусственного базиса и оптимизация функции суммы искусственных переменных, т.е. F0=Y1+Y2+…+Yn = 0 (Fmin). Если при этом F0=0, то искусственный базис мы вывели из состава переменных, переходим ко второй фазе – решаем задачу по первой симплекс таблице с действительными переменными. Если же F00, т.е. искусственный базис не выведен из состава переменных – ОЗЛП решений не имеет.

Решение преобразованной системы ограничений с заданной целевой функцией и действительными переменными. При этом столбцами искусственных переменных в симплекс методе пренебрегаем.

Замечания:

При решении задач на max с искусственным базисом следует переходить к решению на min, меняя лишь только целевую функцию:

Fmax = - Fmin.

При решении ЗЛП с искусственным базисом особое внимание следует обратить на вычисление элементов индексных строк.

a) Для столбцов X вычисление элементов идет по формулам:


j =  qij.

 yi = y1+y2+…+yR.

Hi=F0.


Примечание: только для строк Y.

б) Для столбцов Y работает старая формула:


j =  ciqij-cj.

2. Теоретическая часть


Математические модели

Математическая модель — приближенное описание объекта моделирования, выраженное с помощью математической символики.

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

Этапы компьютерного математического моделирования изображены на рисунке (1). Первый этап —определение целей моделирования. Эти цели могут быть различными:

модель нужна для того, чтобы понять, как устроен конкретный объект, какова его структура, основные свойства, законы развития и взаимодействия с окружающим миром (понимание);

модель нужна для того, чтобы научиться управлять объектом (или процессом) и определить наилучшие способы управления при заданных целях и критериях (управление);

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

Построение математической модели. На этом этапе происходит переход от абстрактной формулировки модели к формулировке, имеющей конкретное математическое представление. Математическая модель — это уравнения, системы уравнений, системы неравенств, дифференциальные уравнения или системы таких уравнений .

Классификация математических моделей

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

Наконец, если исходить из общих задач моделирования в разных науках безотносительно к математическому аппарату, наиболее естественна такая классификация:

● дескриптивные (описательные) модели;

● оптимизационные модели;

● многокритериальные модели;

● игровые модели.

Линейное программирование

Рис. (1).Блок схема математического моделирования.


2.1 Элементы теории матричных игр


СВЕДЕНИЕ МАТРИЧНОЙ ИГРЫ К ЗАДАЧЕ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ

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

Итак, пусть дана матричная игра с матрицей А порядка m х n. Согласно свойству 7 оптимальные смешанные стратегии х = (х1, ..., хm), y = (y1, ..., yn) соответственно игроков 1 и 2 и цена игры u должны удовлетворять соотношениям.

Линейное программирование Линейное программирование

Линейное программирование Линейное программирование


Разделим все уравнения и неравенства в (1) и (2) на u (это можно сделать, т.к. по предположению u > 0) и введём обозначения :


Линейное программирование Линейное программирование, Линейное программирование Линейное программирование,


Тогда (1) и (2) перепишется в виде :


Линейное программирование, Линейное программирование, Линейное программирование, Линейное программирование,

Линейное программирование, Линейное программирование, Линейное программирование, Линейное программирование.


Поскольку первый игрок стремится найти такие значения хi и, следовательно, pi , чтобы цена игры uбыла максимальной, то решение первой задачи сводится к нахождению таких неотрицательных значений pi Линейное программирование, при которых


Линейное программирование, Линейное программирование. Линейное программирование

Поскольку второй игрок стремится найти такие значения yj и, следовательно, qj, чтобы цена игры uбыла наименьшей, то решение второй задачи сводится к нахождению таких неотрицательных значений qj, Линейное программирование, при которых


Линейное программирование, Линейное программирование. Линейное программирование


Формулы (3) и (4) выражают двойственные друг другу задачи линейного программирования (ЛП).

Решив эти задачи, получим значения pi Линейное программирование, qj Линейное программирование и u.Тогда смешанные стратегии, т.е. xi и yj получаются по формулам :


Линейное программирование Линейное программирование


Пример. Найти решение игры, определяемой матрицей.


Линейное программирование


Решение. При решении этой игры к каждому элементу матрицы А прибавим 1 и получим следующую матрицу


Линейное программирование


Составим теперь пару взаимно-двойственных задач :

Линейное программирование Линейное программирование


Решим вторую из них


Б.п. q1 q2 q3 q4 q5 q6 Решение a Отношение

-1 -1 -1 0 0 0 0 -3
q4 1 2 0 1 0 0 1 5
q5 1 0 1 0 1 0 1 4

Линейное программирование

q6 2 1 0 0 0 1 1 5

Б.п. q1 q2 q3 q4 q5 q6 Решение a Отношение

0 -1 0 0 1 0 1 1
q4 1 2 0 1 0 0 1 5

Линейное программирование

q3 1 0 1 0 1 0 1 4
q6 2 1 0 0 0 1 1 5

Линейное программирование


Б.п. q1 q2 q3 q4 q5 q6 Решение a Отношение

Линейное программирование

0 0

Линейное программирование

1 0

Линейное программирование

Линейное программирование


q2

Линейное программирование

1 0

Линейное программирование

0 0

Линейное программирование

Линейное программирование


q3 1 0 1 0 1 0 1 4
q6

Линейное программирование

0 0

Линейное программирование

0 1

Линейное программирование

Линейное программирование



Из оптимальной симплекс-таблицы следует, чтоЛинейное программирование


(q1, q2, q3) = (0;Линейное программирование; 1),


а из соотношений двойственности следует, что


( p1, p2, p3) = (Линейное программирование; 1; 0).

Следовательно, цена игры с платёжной матрицей А1 равна


Линейное программирование. Линейное программирование,


а игры с платёжной матрицей А :


Линейное программирование.


При этом оптимальные стратегии игроков имеют вид:


Х = (х1, х2, х3) = (uр1; uр2; uр3) = Линейное программирование= Линейное программирование

Y = (y1, y2, y3) = (uq1; uq2; uq3) = Линейное программирование= Линейное программирование.


2.2 Решение матричных игр в чистых стратегиях


Матричная игра двух игроков с нулевой суммой может рассматриваться как следующая абстрактная игра двух игроков.

Первый игрок имеет m стратегий i = 1,2,...,m, второй имеет n стратегий j = 1,2,...,n. Каждой паре стратегий (i,j) поставлено в соответствие число аij, выражающее выигрыш игрока 1 за счёт игрока 2, если первый игрок примет свою i-ю стратегию, а 2 –

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: