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

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

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

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

Файлы: 1 файл

Бенько.doc

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

                             printf(PRECISION " |", c[i]);

                 printf("\nпер.|  Ci   |  Bi   |");

                 Rule('-', n*8);

                 printf("    |       |       |");

                 for (i=0; i<cn; i++)

                       printf("  x%i   |", i+1);

                 printf("\n");

                 Rule('='); 
 

                 for (j=0; j<m; j++)

                 {

                       printf(" x%i |" PRECISION " |" PRECISION " |",

                             base[j]+1, c[base[j]], b[j]); 

                       for (i=0; i<n; i++)

                             printf(PRECISION "%c|", a[j][i],

                                   base_column == i && base_row == j ?'*':' ');

                       printf("\n");

                 }

                 Rule('='); 
 

                 printf(" Z  |  ---  |" PRECISION " |", zb);

                 for (i=0; i<n; i++)

                       printf(PRECISION " |", za[i]);

                 printf("\n");

                 Rule('-');

           }

           else 

                 // сжатая таблица

           {

                 Rule('=');

                 printf("БvС>|");

                 for (i=0; i<cn; i++)

                 {

                       if (!InBase(i))

                             printf("  x%i   |", i+1);

                 }

                 printf("  Bi   |\n");

                 Rule('='); 
 

                 for (j=0; j<m; j++)

                 {

                       printf(" x%i |", base[j]+1);

                       for (i=0; i<n; i++)

                       {

                             if (!InBase(i))

                                   printf(PRECISION "%c|", a[j][i],

                                         base_column == i && base_row == j ?'*':' ');

                       }

                       printf(PRECISION" |\n", b[j]);

                 }

                 Rule('='); 
 

                 printf(" Z  |");

                 for (i=0; i<n; i++)

                 {

                       if (!InBase(i))

                             printf(PRECISION " |", za[i]);

                 }

                 printf(PRECISION " |\n", zb);

                 Rule('-');

           } 
 

           if (base_column > -1 && base_row > -1)

                 printf("Разрешающий столбец:%2i\nРазрешающая строка: %2i\n\nX=(",

                       base_column+1, base_row+1);

           else

                 printf("\nX=("); 
 

           for (i=0; i<n; i++)

           {

                 int basen = -1; 

                 for (j=0; j<m; j++)

                       if (base[j] == i) {basen = j; break;} 

                 printf(PRECISION2 "%c ", -1==basen?0:b[basen], i!=n-1?',':')');

           } 
 

           printf("\nZ=" PRECISION2 "\n\n\n", zb);

     } 

     int main (int argc, char *argv[])

     {

           if (argc < 2)

           {

                 printf("Missing argument\n");

                 return -1;

           } 

           if (!ReadInput(argv[1]))

           {

                 printf("Error open file %s.\n", argv[1]);

                 return -1;

           } 
 

           printf("*** ДВОЙСТВЕННЫЙ СИМПЛЕКС-МЕТОД ***\n\n");

           plan_t plan;

           bool dual_done = false; 

           for (int k=0; k<2*m+1; k++)

           {

                 if (k) JGTransformation(base_row, base_column);

                 EvaluationOptimal(); 

                 if (dual_done)

                 {

                       plan = CheckStrongPlan();

                 }

                 else

                 {

                       plan = BuildPsevdoPlan(); // only in dual-simplex

                       if (DUAL_DONE == plan)

                       {

                             dual_done = true;

                             plan = CheckStrongPlan();

                       }

                 } 

                 ShowTable(); 

                 if (NEXT_ITERATION != plan)

                 {

                       char *s;

                       switch (plan)

                       {

                       case PLAN_OPTIMAL: s="Опорный  план оптимальный"; break;

                       case ODR_BREAK: s="Область допустимых решений разомкнутая"; break;

                       case ODR_EMPTY: s="Область допустимых решений пустая"; break;

                       } 

                       printf("\n%s.\n", s);

                       break;

                 }

           } 
 

           FreeMem();

           return 0;

     } 

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

     Результат работы программы      

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

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

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

1. Задачи анализа,  источники информации

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

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

     Задачи анализа обеспеченности и использования материальных ресурсов:

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

б) оценка уровня эффективности использования материальных ресурсов;

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

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

     2. Анализ обеспеченности предприятия материальными ресурсами

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

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

Внутренние  источники - это сокращение отходов сырья, использование

вторичного сырья, собственное изготовление материалов и полуфабрикатов,

экономия материалов в результате внедрения достижений научно-технического прогресса. Реальная потребность в завозе материальных ресурсов со стороны - это разность между общей потребностью в определенном виде материала и суммой собственных внутренних источников ее покрытия.

По  заданной задачи мы видим, что:

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

Вид сырья Нормы затрат сырья (кг) на единицу продукции
А В С
I

II

III

4

0

1

2

1

2

0

1

0

Цена единицы продукции (руб.) 3 7 2

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