У вас вопросы?
У нас ответы:) SamZan.net

Реферат- Задача об упаковке.html

Работа добавлена на сайт samzan.net: 2016-01-17

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

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.2.2025

1

 20

2

 3

 6

 15

 19

3

 2

8

 9

10

11

12

 17

 18

4

4

5

 7

 13

14

16

5

1

Далее программа отсортировала список объектов по очередности макс.вес /

макс.объем.

1

4

3

6

9

7

12

16

11

15

8

10

18

20

2

5

13

14

17

19

Ниже приведена  таблица результатов упаковки (по алгоритму упаковки с отбрасыванием).

   

Кол-во

Σ Польза

14

123

10

83

Результаты можно отразить графически в виде плоскости критериев О1(суммарное количество упакованных предметов), О2(суммарная полезность упакованных элементов).

                                        6.Выводы.

В результате выполнения задания была написана программа, упаковывающая  объекты в контейнеры. Упаковка производится с помощью двух вариантов упорядочивания объектов. По критерию О1(кол-во упакованных) наиболее эффективен второй метод(есть варианты упаковки по 14 предметов). Например, были упакованы следующие 14 предметов:

16

11

15

8

10

18

20

 2

 5

13

14

17

19

 7

О1 =14, О2 =130.

По критерию О2 выигрывает первый метод.

Упакованные объекты:

14

16

 1

20

3

6

15

19

2

8

О1 =10, О2 =83.

Оба метода позволяют ЛПР выбрать оптимальный вариант упаковки на плоскости критериев О12.    

Приложение.

Текст программы.

Программа написана на языке программирования С++ в среде разработки Visual C++ 6.0. Выбор языка обусловлен наличием в его стандарте структуры данных – класс, с помощью которой удобно моделировать объекты задания.

#include <stdlib.h>

#include <fstream.h>

#include "iostream.h"

#include "stdio.h"

class Object{

public:

     int Mass;

  int Cap;

  int vol[5];

  int Val;

  bool Packed;

  int INN;

  bool NDom;

  Object(){

   Mass = 0;

   Cap = 0;

   Packed = false;

   vol[0] = 0;

   vol[1] = 0;

   vol[2] = 0;

   vol[3] = 0;

   vol[4] = 0;

   Val=0;

   INN=0;

   NDom=false;

  };

  void ObjectInit(int m, int c, int v1, int v2, int v3, int v4, int v5,int inn)

  {

       Mass=m;

       Cap=c;

 Packed=false;

       vol[0]=v1;

       vol[1]=v2;

    vol[2]=v3;

 vol[3]=v4;

 vol[4]=v5;

 Val= vol[0]+vol[1]+vol[2]+vol[3]+vol[4];

 INN=inn;

 NDom=false;

  };

};

class Konteiner{

public:

int Mass;

int Cap;

   

Konteiner(){

 Mass = 0;

 Cap = 0;

};

void KonteinerInit(int m, int c){

 Mass = m;

 Cap = c;

};

};

struct Result{

int Value;

int Num;

};

void main(){

Object Ob[21],ObD[400],ObND[400],ObRs,ObMC1[20],ObMC2[20],ObMC[21],ObMCRs[20];

Object ObSlice[10][10];

bool MFLAG[21];

Result Res[20],Res1[20];

Konteiner Kon[5];

Ob[0].ObjectInit(3,2,3,3,3,3,3, 1);

                  Ob[1].ObjectInit(1,1,3,2,2,1,1, 2);

 Ob[2].ObjectInit(3,1,2,1,1,1,2, 3);

 Ob[3].ObjectInit(2,3,2,1,3,2,3, 4);

 Ob[4].ObjectInit(1,1,1,1,1,3,3, 5);

 Ob[5].ObjectInit(3,2,2,2,1,1,1, 6);

 Ob[6].ObjectInit(1,2,3,1,3,3,1, 7);

 Ob[7].ObjectInit(2,1,1,1,1,2,3, 8);

 Ob[8].ObjectInit(3,2,2,2,1,3,2, 9);

 Ob[9].ObjectInit(2,1,1,1,2,2,2,10);

Ob[10].ObjectInit(1,2,3,3,1,1,1,11);

Ob[11].ObjectInit(3,1,2,1,2,3,1,12);

Ob[12].ObjectInit(1,1,2,2,3,3,1,13);

Ob[13].ObjectInit(1,1,3,3,3,2,1,14);

Ob[14].ObjectInit(2,2,1,2,2,1,1,15);

Ob[15].ObjectInit(3,2,3,1,2,1,3,16);

Ob[16].ObjectInit(1,1,2,1,2,1,2,17);

Ob[17].ObjectInit(2,2,3,1,3,2,1,18);

Ob[18].ObjectInit(1,1,1,1,1,2,1,19);

Ob[19].ObjectInit(1,2,1,1,1,1,1,20);

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

       Kon[i].KonteinerInit(5,7);

};

MFLAG[0]=true;

for(i=1;i<21;i++){

 MFLAG[i]=false;

};

 

bool flag,superflag;

superflag=true;

int counter=0;

int j;

while(counter!=10){

 superflag=false;

 for(i=0;i<200;i++){ObND[i].ObjectInit(0,0,0,0,0,0,0,0);ObD[i].ObjectInit(0,0,0,0,0,0,0,0);};

j=0;

for(int l=0;l<20;l++){

for(i=0;i<20;i++){

 if((MFLAG[Ob[i].INN]==false)&&(MFLAG[Ob[l].INN]==false)&&(i!=l)&&(Ob[l].vol[0]>=Ob[i].vol[0])&&(Ob[l].vol[1]>=Ob[i].vol[1])&&(Ob[l].vol[2]>=Ob[i].vol[2])&&(Ob[l].vol[3]>=Ob[i].vol[3])&&(Ob[l].vol[4]>=Ob[i].vol[4])){

  ObD[j]=Ob[l]; ObND[j]=Ob[i];j++;}else{

   if((MFLAG[Ob[i].INN]==false)&(MFLAG[Ob[l].INN]==false)&&(i!=l)&&(Ob[l].vol[0]<=Ob[i].vol[0])&&(Ob[l].vol[1]<=Ob[i].vol[1])&&(Ob[l].vol[2]<=Ob[i].vol[2])&&(Ob[l].vol[3]<=Ob[i].vol[3])&&(Ob[l].vol[4]<=Ob[i].vol[4])){

    ObD[j]=Ob[i]; ObND[j]=Ob[l];j++;};

    

 };

};

};

j=0;

for(l=0;l<200;l++){

flag=true;

for(i=0;i<200;i++){

 if(ObND[l].INN==ObD[i].INN){flag=false;};

};

if(flag&&(MFLAG[ObND[l].INN]!=true)){ObSlice[counter][j]=ObND[l];MFLAG[ObND[l].INN]=true;j++;};

};

   counter++;

};

for(counter=0;counter<10;counter++){

 if(ObSlice[counter][0].INN==0){ObSlice[counter][0]=Ob[0];break;};

 

for( i=0;i<20;i++){ ObMC1[i] = Ob[i];};

   for( j=0;j<20;j++){

 for(i=19;i>j;i--){

  if((ObMC1[i-1].Mass<ObMC1[i].Mass)){

  ObRs=ObMC1[i]; ObMC1[i]=ObMC1[i-1]; ObMC1[i-1]=ObRs;

  };

 };

};

for(i=0;i<20;i++){

 

 ObMCRs[i]=ObMC1[i];

};

 

for(i=0;i<20;i++){

 cout<<ObMCRs[i].INN<<" ";

};

   for( i=0;i<20;i++){ ObMC2[i] = Ob[i];};

   for( j=0;j<20;j++){

for(i=19;i>j;i--){

 if((ObMC2[i-1].Cap<ObMC2[i].Cap)){

  ObRs=ObMC2[i]; ObMC2[i]=ObMC2[i-1]; ObMC2[i-1]=ObRs;

  };

 };

};

cout<<"\n";

for(i=0;i<20;i++){

 cout<<ObMC2[i].INN<<" ";

};

flag=true;

bool flag1=true;

int n;

int m=0;

for(n=0;n<20;n++){

 flag1=true; flag=true;

 for(j=0;j<20;j++){

  if((ObMCRs[n].INN==ObMC2[n].INN)||(ObMCRs[n].INN==ObMC[j].INN)){flag1=false;};

 };

 for(j=0;j<20;j++){

  if(ObMC2[n].INN==ObMC[j].INN){flag=false;};

 };

 if((flag1)&&(flag)){

  ObMC[m]=ObMCRs[n];

  ObMC[m+1]=ObMC2[n];

  m=m+2;

 };

 if((flag1)&&(!flag)){

  ObMC[m]=ObMCRs[n];

  m++;

 };

 if((!flag1)&&(flag)){

  ObMC[m]=ObMC2[n];

  m++;

 };

 if((!flag1)&&(!flag)){

 };

};

 

 cout<<"\n";

 for(i=0;i<20;i++){

 cout<<ObMC[i].INN<<" ";

};

 

int l=0;

m=0;

flag=true;

int countj=0;

int counti=0;

int lasti=0;

int Value=0;

int Num=0;

int count=0;

int countp=0;

 

for(j=0;j<10,ObSlice[j][0].INN!=0;j++){

 for(i=0;i<10,ObSlice[j][i].INN!=0;i++){

  Ob[count]=ObSlice[j][i];count++;};

};

 

count=0;

while ((count!=20)){

for(j=0;j<20;j++){

  flag=true;

  for(m=0;m<5;m++){

   if(flag&&(Ob[j].Cap<Kon[m].Cap)&&(Ob[j].Mass<Kon[m].Mass)){

    Kon[m].Cap=Kon[m].Cap-Ob[j].Cap;

    Kon[m].Mass=Kon[m].Mass-Ob[j].Mass;

    Value=Value+Ob[j].Val;

    Num=Num++;

    Ob[j].Packed=true;

    flag=false;

 };

};

};

Ob[20]=Ob[0];

for(i=1;i<21;i++){Ob[i-1]=Ob[i];};

Res[count].Value=Value;

Res[count].Num=Num;

if(count==0){

 cout<<"\n";

 for(i=0;i<20;i++){

  if(Ob[i].Packed){cout<<Ob[i].INN<<" ";};

 };

};

count++;

for(j=0;j<10;j++){

  Ob[j].Packed=false;

 };

 

Value=0;

Num=0;

for(m=0;m<5;m++){

 Kon[m].KonteinerInit(5,7);

};

};

cout<<"\n";

flag=true;

countj=0;

counti=0;

lasti=0;

Value=0;

Num=0;

count=1;

countp=0;

while ((countj!=20)){

for(j=0;j<20;j++){

  flag=true;

  for(m=0;m<5;m++){

   if(flag&&(ObMC[j].Cap<Kon[m].Cap)&&(ObMC[j].Mass<Kon[m].Mass)){

    Kon[m].Cap=Kon[m].Cap-ObMC[j].Cap;

    Kon[m].Mass=Kon[m].Mass-ObMC[j].Mass;

    Value=Value+ObMC[j].Val;

    Num++;

    ObMC[j].Packed=true;

    flag=false;

    };

  };

};

ObMC[20]=ObMC[0];

for(j=1;j<21;j++){ObMC[j-1]=ObMC[j];};

 

if(countj==8){

 cout<<"\n";

 for(i=0;i<20;i++){

  if(ObMC[i].Packed){cout<<ObMC[i].INN<<" ";};

 };

};

for(j=0;j<20;j++){

 ObMC[j].Packed=false;

  

};

Res1[countj].Value=Value;

Res1[countj].Num=Num;

countj++;

Value=0;

Num=0;

for(m=0;m<5;m++){

 Kon[m].KonteinerInit(5,7);

};

};

ofstream out("out.txt",ios::out|ios::trunc);

 out<<"         Итоговые данные после упаковки:  \n";

out<<"Сортировка по Пар. сл.:  Сортировка вес.объем:\n";

out<<"Ценность  Кол-во   Ценность Кол-во \n";

 for(i=0;i<20;i++){

 cout<<Res[i].Value<<" "<<Res[i].Num<<"  ";

 cout<<Res1[i].Value<<" "<<Res1[i].Num<<"  \n";

 out<<Res[i].Value<<"   "<<Res[i].Num<<"  ";

 out<<Res1[i].Value<<"  "<<Res1[i].Num<<"  \n";

};

char ch;

cout<<"Press a key\n";

 cin>>ch;

}




1. Проблема метода в бихевиоризме
2. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата технічних наук Харків
3.  Лосев АФ Эстетика Возрождения
4. пятых публичное право включает в себя основные вопросы формирования правовой системы и обеспечения ее усто
5. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата юридичних наук Київ2005 Дисертацією
6. Причины неэффективного руководства спортивной командой
7. рних робіт збільшення обсягів штучного лісовідновлення та лісорозведення створення лісових культур в зел
8. г. именуем в дальнейшем
9. Виды экстерналий Чрезвычайно важным понятием в экономике природопользования являются экстерналии внешн
10. Краткий рассказ о пульсарах