Простые однопроходные эвристики для решения одномерной задачи покрытия

Автор: Пользователь скрыл имя, 27 Декабря 2011 в 14:59, курсовая работа

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

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

Содержание

Постановка и математическая модель задачи

Метод решения, структограмма или пошаговое описание алгоритма


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


Вычислительный эксперимент


Анализ результатов

Работа содержит 1 файл

риты()Моя курсовая по КА!!!.doc

— 150.00 Кб (Скачать)

                         for (int i=0;i<18;i++)

                         {  b[i]=c[i-(i/3)];

                               b[i+1]=c[i-(i/3)+1];

                         b[i+2]=c[num-((i/3)+1)];

                                     i=i+2;    

                               }

                               b[18]=c[12];

                               b[19]=c[13];

                     break;}

                     case 50:

                                     {

                         for (int i=0;i<48;i++)

                         {  b[i]=c[i-(i/3)];

                               b[i+1]=c[i-(i/3)+1];

                         b[i+2]=c[num-(i/3)-1];

                                          i=i+2;   

                               }

                               b[48]=c[32];

                               b[49]=c[33];

                     break;}

                    case 100:

                                     {

                         for (int i=0;i<99;i++)

                         {  b[i]=c[i-(i/3)];

                         b[i+1]=c[i-(i/3)+1];

                         b[i+2]=c[num-(i/3)-1];

                                          i=i+2;   

                               }

                               b[99]=c[66];

                               break;}

                               }

                               upakovka(b);

                              break;}

                        case 3:{quick1(b,num);

                               c=new kusok[num];

                         for (int i=0;i<num;i++)

                               { c[i]=b[i];

                               }

                               switch(num)

                               {

                               case 20:

                                     {

                         for (int i=0;i<18;i++)

             {  b[i]=c[num-((i/3)+1)];

                   b[i+1]=c[num-((i/3)+2)];

                         b[i+2]=c[i-(i/3)];

                                     i=i+2;}

                               b[18]=c[13];

                               b[19]=c[12];

                     break;}

                     case 50:

                               {

                   for (int i=0;i<48;i++)

                   { b[i]=c[num-((i/3)+1)];

                     b[i+1]=c[num-((i/3)+2)];

                  b[i+2]=c[i-(i/3)];

                              i=i+2;}

                               b[48]=c[33];

                               b[49]=c[32];

                     break;}

                     case 100:

                         {

                   for (int i=0;i<99;i++)

                        { b[i]=c[num-((i/3)+1)];

                         b[i+1]=c[num-((i/3)+2)];

                         b[i+2]=c[i-(i/3)];

                              i=i+2;}

                               b[99]=c[66];

                               break;}

                               }

                               upakovka(b);

                              break;}

                   case 4:{quick1(b,num);

                               c=new kusok[num];

                         for (int i=0;i<num;i++)

                               { c[i]=b[i];

                          }

                               switch(num)

                               {

                               case 20:

                                     {

                       for (int i=0;i<18;i++)

                  {  b[i]=c[num-((i/3)+1)];

                             b[i+1]=c[i-(i/3)];

                         b[i+2]=c[i-(i/3)+1];

                               i=i+2;}

                               b[18]=c[13];

                               b[19]=c[12];

                     break;}

                     case 50:

                   {

                         for (int i=0;i<48;i++)

                   {   b[i]=c[num-((i/3)+1)];

                       b[i+1]=c[i-(i/3)];

                         b[i+2]=c[i-(i/3)+1];

                        i=i+2;}

                               b[48]=c[33];

                               b[49]=c[32];

                     break;}

                     case 100:

                   {

                         for (int i=0;i<99;i++)

                   {   b[i]=c[num-((i/3)+1)];

                         b[i+1]=c[i-(i/3)];

                         b[i+2]=c[i-(i/3)+1];

                        i=i+2;}

                               b[99]=c[66];

                               break;}

                               }

                               upakovka(b);

                               break;}

                     case 5:{quick1(b,num);

                               c=new kusok[num];

                         for (int i=0;i<num;i++)

                               { c[i]=b[i];

                               }

                               switch(num)

                               {

                               case 20:

                         {

                         for (int i=0;i<18;i++)

                        

                       b[i]=c[num-((2*i/3)+1)];

                   b[i+1]=c[num-((2*i/3)+2)];

                      b[i+2]=c[i-(2*i/3)];

                               i=i+2;}

                               b[18]=c[7];

                               b[19]=c[6];

                     break;}

                     case 50:

                         {

                         for (int i=0;i<48;i++)

                        { b[i]=c[num-((2*i/3)+1)];

                        b[i+1]=c[num-((2*i/3)+2)];

                      b[i+2]=c[i-(2*i/3)];

                        i=i+2;}

                               b[48]=c[17];

                               b[49]=c[16];

                     break;}

                     case 100:

                  { for (int i=0;i<99;i++)

                        { b[i]=c[num-((2*i/3)+1)];

                        b[i+1]=c[num-((2*i/3)+2)];

                       b[i+2]=c[i-(2*i/3)];

                        i=i+2;}

                         b[99]=c[23];

                         break;}

                               }

                         upakovka(b);

                         break;}

                     case 6:{quick1(b,num);

                               c=new kusok[num];

                         for (int i=0;i<num;i++)

                               { c[i]=b[i];

                               }

                               switch(num)

Информация о работе Простые однопроходные эвристики для решения одномерной задачи покрытия