Применение методов линейного программирования

Автор работы: Пользователь скрыл имя, 08 Декабря 2010 в 08:31, Не определен

Описание работы

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

Файлы: 1 файл

Бенько.doc

— 1.27 Мб (Скачать файл)

                                 Z-0 (x1, x2, x3) = 3X1 + 7X2 + 2X3 → max  
 

Введем дополнительные переменные X4, X5 . Введем искусственную переменную R1
Z-0=3X1+7X2+2X3-M·R
à (max) 
 

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

Преобразуем первое ограничение:

4X1 + 2X2 + 0X3 +X4 = 19
0X1 + 1X2 + 1X3 +R1 = 8
1X1 + 2X2 + 0X3 +X5 = 24

Xi≥0 
Получили задачу:

4X1+2X2+X4 = 19

  X2 +  X3 + R1 = 8

  X1+2X2 +X5 = 24

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

Xi≥0 ;    0-Z= -3X1- -7X2- -2X3  

    Приведем  задачу к канонической форме.

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

    Требуется найти вектор , доставляющий максимум линейной форме

                  

при условиях

                  

                   

     где

Решим задачу симплекс-методом

Строим начальную  симплекс-таблицу:

Базисные 
переменные
X1 X2 X3 X4 X5 Свободные 
члены
X4 4 2 0 1 0 19
R1 0 1 1 0 1 8
X5 1 2 0 0 0 24
0-Z -3 -7 -2 0 0 0
M 0 -1 -1 0 0 -8

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

Базисные 
переменные
X1 X2 X3 X4 X5 Свободные 
члены
X4 4 -2 1 0 0 3
X2 0 1 0 1 0 8
X5 1 -2 0 0 1 8
0-Z -3 5 0 0 0 56
M 0 0 0 0 0 0

Так как в столбце свободных членов нет отрицательных элементов, то найдено допустимое решение. Так как в строке 0-Z есть отрицательные элементы, то полученное решение не оптимально. Для определения ведущего столбца найдем максимальный по модулю отрицательный элемент в строке 0-Z (-3). А ведущая строка та, у которой наименьшее положительное отношение свободного члена к соответствующему элементу ведущего столбца. 
 
 

Тогда каноническую форму задачи ЛП можно представить  в следующем матричном виде эквивалентном  первоначальному:

Z=CX →max,

AX=B,

X≥0.

где 0 - нулевая матрица-столбец той же размерности, что и матрица X.

Замечание.

Не ограничивая  общности, можно полагать, что свободные  члены неотрицательны, т.е. b i ≥ 0, где i =¯1,m (иначе ограничительные уравнения можно умножить на (-1)). 
Пересчитаем таблицу

Базисные 
переменные
Свободные 
члены
X4 X3
X1 0.75 0.25 -0.5
X2 8 0 1
X5 7.25 -0.25 -1.5
0-Z 58.25 0.75 3.5
M 0 0 0

 
Эта таблица является последней, по ней читаем ответ задачи.

Найдено оптимальное базисное решение:

При котором Z max = 233/4= 58,25  

План производства:

X1 =3/4= 0,75; X2 = 8; X3 = 0; X4 = 3;   X5 =29/4= 7,25;   R1 = 8;   M = 0

Соответственно по решению, вычисляем:

Z= 3*0,75+7*8+2*0+3+7,25-0*8= 2,25+56+0+10,25-0 = 58,25+10,25-0 = 68,5-0 = 68,5 ≈ 69

Z= 69 ден. ед. 

Ответ поставленной задачи: План выпуска продукции   для получения максимальной прибыли, при том, что сырьё IIвида было израсходовано полностью равен 69 ден. ед.. Из хода решения задачи по условию мы видим, что оценен каждый из видов сырья, используемых для производства продукции. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Блок-схемы основных процедур при решении  и программировании задач

Алгоритм программы  →   Рис. 1.        ↓

 

 

 

 
 
 

  

 

 

 

 

 
 

 
 

 

 

Рисунок 1 –Алгоритм  программы для решения ЗЛП (частный случай) 

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

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

    Программа определяет:

    План выпуска продукции для получения максимальной прибыли.  

        1. Описание работы программы, листинг программы 

1.1 Обоснование выбора  языка

Программа для  решения данной задачи составлена на языке C++.C++ представляет собой систему программирования. Как любая подобная система,C++ предназначена для разработки программ и имеет две характерные особенности: создаваемые с ее помощью программы могут работать не только под управлением Windows,но и в системе MS-DOS.

C++ представляет собой наиболее полный пакет объектно-ориентированного программирования. Язык прост в применении и базируется на C#,что упрощает создание программ, людям, знакомым с данным языком.   

1.2 Описание работы  программы

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

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

Программа выводит  данные в строку F/  

    1. Листинг программы

    //----------------------------------------------------------------------------------------------

     #include <stdio.h>

     #include <string.h>

     #include <math.h> 
 

     #define PRECISION  "%6.2f" // формат вывода дробных чисел

     #define PRECISION2  "%.2f" // он же только целая часть любой длины 

     #define MAXDIGIT 1000000 // должно быть очень большое число (больше всех) 

     typedef enum

     {

           NEXT_ITERATION,  // нужно продолжать итерации

           PLAN_OPTIMAL,  // найден оптимальный опорный план

           ODR_BREAK,   // ОДР разомкнута

           ODR_EMPTY,   // ОДР пустая

           DUAL_DONE   /* первый этап (построение опорного плана) окончен,

                                   переходим к поиску оптим.оп.плана (обычный Симплекс) */

<

Информация о работе Применение методов линейного программирования