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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 20.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. ВВЕДЕНИЕ 11 Значение курса в подготовке бакалавров Учебнометодические разработки адресованные студ
5. воздействие производства или потребления одного блага на производство или потребление другого блага.html
6. е. видов экономической деятельности делает актуальным проблему необходимости решения задачи формирования.html
7. 16 Древняя Русь IXначало XII вв
8. mens of trnsport puff of smoke slice of bred - tost - met ry of sunshine scrp of food n rticle of clothing ror of lughter burst of ppluse - cheering blde of grss
9. . Влияние монголотатарского ига на государственность Руси [3] 1.
10. тематический анализ отдельных вопросов экономики; по периодичности- годовой квартальный месячный дека