Оптимизация реконструкции заводов отрасли

Автор работы: Пользователь скрыл имя, 30 Мая 2013 в 17:20, курсовая работа

Описание

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

Содержание

Введение …………………………………………………………………………………….4
1 Постановка задачи……………………………………………………………………….5
Качественное описание исследуемой операции…………………………………5
Математическая постановка задачи………………………………………………..6
2 Алгоритмизация решения задачи……………………………………………….…….8
Анализ методов решения…………………………………………………………….8
Задача о распределении капиталовложений……………………………………12
Проектирование сценария диалога………………………………………………..14
Метод оптимизации реконструкции заводов отрасли…………………………..16
Численные эксперименты……………………………………………………………21
Ручная реализация метода динамического программирования для задачи реконструкции отрасли……………………………………………………………….21
Машинные эксперименты……………………………………………………………24
Заключение………………………………………………………………………………….25
Список литературы…………………………………………………………………………26
Приложение – листинг программы……………………………………………………27

Работа состоит из  1 файл

Курсовой_Киянова_ТПР.docx

— 249.71 Кб (Скачать документ)

{

 BaseTable->Edit();

 BaseTable->Append();

 for(sj=0;sj<StringGrid1->ColCount-1;sj++)

 BaseTable->Fields[sj]->Value=

 StrToInt( StringGrid1->Cells[sj+1][si+1]);

 BaseTable->Post();

}

 

 BaseTable->Close();//Закрытие файла базы

 

 //Уничтожение объекта описывающего структуру базы

 delete BaseTable;

        }

}

//--------------------------------------------------------------void __fastcall TMainForm::FileExit(TObject *Sender)

{

        Close();

}

//--------------------------------------------------------------void __fastcall TMainForm::HelpAbout(TObject *Sender)

{

        //---- Add code to show program's About Box ----

AboutBox->ShowModal();

}

//--------------------------------------------------------------void __fastcall TMainForm::Button1Click(TObject *Sender)

{

AnsiString *masi=NULL;

masi=(AnsiString *)calloc(j*2,sizeof(AnsiString));

ProgressBar1->Position=0;

ProgressBar1->Max=j-1;

ProgressBar1->Step=1;

 

for (i=1;i<j;i++)

StringGrid1->Cells[0][i]=i;

 

for (i=1;i<j;i++){//j1

masi[i]=StringGrid1->Cells[i][0];

StringGrid1->Cells[i][0]=0;

                    }

 

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

for (k=1;k<j1;k++){

StringGrid1->Cells[i][k]=StrToInt(StringGrid1->Cells[i][k-1])

+rand()%StrToInt(Edit3->Text)+1;

                   }

ProgressBar1->StepIt();

                   }

for (i=1;i<j;i++){StringGrid1->Cells[i][0]=masi[i];}

free(masi);

}

//--------------------------------------------------------------void __fastcall TMainForm::Button2Click(TObject *Sender)

{

dl1=1;

dl=1;

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

if (Edit1->Text[i]!='\x0') {dl++;} else {break;}

if ((Edit1->Text[i]>='0')&(Edit1->Text[i]<='9')) {}

else {return;}

                 }

for (i=1;i<5;i++)

if ((Edit2->Text[i]!='\x0')&((Edit2->Text[i]>='0')&(Edit2->Text[i]<='9')))

{dl1++;} else {break;}

 

j=StrToInt(Edit1->Text);

j1=StrToInt(Edit2->Text);

 

j1++;

j++;

if (dl!=1) {StringGrid1->RowCount=j1;//j1

            StringGrid1->ColCount=j;//j

 

for (i=1;i<j+1;i++) StringGrid1->Cells[i][0]=AnsiString("Пр."+IntToStr(i));

for (i=1;i<j1+1;i++) StringGrid1->Cells[0][i]=i;

            }

 

for (k=1;k<j1+1;k++)

for (i=1;i<j+1;i++)

StringGrid1->Cells[i][k]=0;

 

}

//--------------------------------------------------------------void __fastcall TMainForm::Button3Click(TObject *Sender)

{

int smax,mmax,ii,et,ch,ii1,res;//,per[10][10];

int *ok=NULL;

int etap=0;

int *per=NULL;

int *w=NULL;

AnsiString *masi=NULL;

 

masi=(AnsiString *)calloc(j*20,sizeof(AnsiString));//+2

per=(int *)calloc(j*j1*4,sizeof(int));//+j+2

w=(int *)calloc(j*j1*4,sizeof(int));//+j+2

ok=(int *)calloc(j*2+j1*2,sizeof(int));//+2

 

for (i=1;i<j;i++){//<

masi[i]=StringGrid1->Cells[i][0];

StringGrid1->Cells[i][0]=0;

                    }

stepp=0;

for (i=1;i<j1;i++)//j1

w[1*j+i]=StrToInt(StringGrid1->Cells[1][i]);//inte

mmax=w[1*j+1];

for(ii=2;ii<j;ii++)//j1

if ((w[1*j+ii]!=0) & (w[1*j+ii]>mmax)) {mmax=w[1*j+ii];}

for(i=0;i<j;i++) per[stepp*j+i]=i;//j1

stepp++;

//stepp++;

 

smax=0;

ii1=0; //mmax=0;

for(et=2;et<j;et++){//Этап//j

for(i=1;i<j1;i++){//Колич. распред. ресурсов//j1//i=1

for(ii=i;ii>=0;ii--){// -//- в предприятие

ch=StrToInt(StringGrid1->Cells[et][ii]);

w[et*j+i]=ch+w[(et-1)*j+ii1];

if (w[et*j+i]>smax) {smax=w[et*j+i]; per[stepp*j+i]=ii;}

if (w[et*j+i]>mmax) {mmax=w[et*j+i]; etap=et;}

ii1++;

                    }

ii1=0; w[et*j+i]=smax; smax=0;

                     }

stepp++;

                        }

for(i=0;i<j;i++) ok[i]=0;

res=j1-1;

//mmax=0;

//for(i=1;i<j1;i++)

//if (w[etap*j+i]>mmax) {mmax=w[etap*j+i];}

ok[etap]=per[(etap-1)*j+res];//-1

res-=ok[etap];

if (res>0) {

for(i=etap-1;i>=1;i--){//-1//i>=1

if (res>0) {ok[i]=per[(i-1)*j+res]; res-=ok[i];} else {ok[i]=0;}}

           }

 

StringGrid2->ColCount=j;

StringGrid2->Cells[0][0]="Пред/Влож";

StringGrid2->Cells[0][1]="Количество";

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

StringGrid2->Cells[i][0]=AnsiString("Пр."+IntToStr(i));

//StringGrid1->Cells[i][0]=AnsiString("Пр."+IntToStr(i));

StringGrid2->Cells[i][1]=IntToStr(ok[i]);

                 }

Memo1->Text=AnsiString("Макс. доход: "+IntToStr(mmax));

for (i=1;i<j;i++){StringGrid1->Cells[i][0]=masi[i];}

free(ok);

free(w);

free(per);

free(masi);

}


Информация о работе Оптимизация реконструкции заводов отрасли