на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Применение симплекс-метода при определении состава смеси при переработке нефти
p align="left"> if ((Mat[tmpX][tmpY]!=0)&&(tmpY!=3))

if (Mat[0][tmpY]/Mat[tmpX][tmpY]<tmp)

{

tmp=Mat[0][tmpY]/Mat[tmpX][tmpY];

tmpP=tmpY;

}

}

//Делим на получившийся главный элемент

tmpY=tmpP;

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

for (int j=0; j <= 4; j++)

Mat1[i][j]=Mat[i][j];

tmp=Mat[tmpX][tmpY];

for (tmpP=0; tmpP<=4; tmpP++)

Mat1[tmpX][tmpP]=Mat1[tmpX][tmpP]/tmp;

for (tmpP=0; tmpP<=4; tmpP++)

Mat1[tmpP][tmpY]=Mat1[tmpP][tmpY]/tmp;

switch (tmpY) {

case 0: {

X5->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X5"; break;

case 2: X2->Caption="X5"; break;

case 3: X3->Caption="X5"; break;

case 4: X4->Caption="X5"; break;

}

}; break;

case 1: {

X6->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X6"; break;

case 2: X2->Caption="X6"; break;

case 3: X3->Caption="X6"; break;

case 4: X4->Caption="X6"; break;

}

}; break;

case 2: {

X7->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X7"; break;

case 2: X2->Caption="X7"; break;

case 3: X3->Caption="X7"; break;

case 4: X4->Caption="X7"; break;

}

}; break;

}

Mat1[tmpX][4]=Mat1[tmpX][4]*(-1);

for (tmpI=0; tmpI<=4; tmpI++)

for (tmpJ=0; tmpJ<=4; tmpJ++)

if ((tmpI!=tmpX)&&(tmpJ!=tmpY) )

{

Mat1[tmpI][tmpJ]=Mat[tmpI][tmpJ]-(Mat[tmpX][tmpJ]*Mat[tmpI][tmpY])/tmp;

}

//*********************************************************

//поиск оптимального решения

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

for (int j=0; j <= 4; j++)

Mat2[i][j]=Mat1[i][j];

sMemo1->Lines->Add("Задача №1.");

sMemo1->Lines->Add("Опорное решение:");

sMemo1->Lines->Add(X5->Caption+"="+FloatToStr(Mat2[0][0])+" "+X6->Caption+"="+FloatToStr(Mat2[0][1])+" "+X7-

>Caption+"="+FloatToStr(Mat2[0][2]));

sMemo1->Lines->Add("f(x)="+FloatToStr(Mat2[0][3]));

tmp=0;

tmpP=0;

for (tmpX=0; tmpX<=4; tmpX++)

if (Mat1[tmpX][3]<0)

if (fabs(tmp)<fabs(Mat1[tmpX][3]))

{

tmp=Mat1[tmpX][3];

tmpP=tmpX;

}

//ShowMessage(FloatToStr(tmp)+" "+IntToStr(tmpP));

//В столбце находим минимальный элемент

tmp=400;

tmpX=tmpP;

tmpJ=tmpY;

for (tmpY=0; tmpY<=2; tmpY++)

{

if ((Mat1[tmpX][tmpY]!=0) && (tmpY!=tmpJ) )

if (Mat1[0][tmpY]/Mat1[tmpX][tmpY]<tmp )

{

tmp=Mat1[0][tmpY]/Mat1[tmpX][tmpY];

tmpP=tmpY;

}

}

//ShowMessage(FloatToStr(tmp)+" "+IntToStr(tmpP));

//Делим на получившийся элемент

tmpY=tmpP;

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

for (int j=0; j <= 4; j++)

Mat2[i][j]=Mat1[i][j];

tmp=Mat1[tmpX][tmpY];

for (tmpP=0; tmpP<4; tmpP++)

Mat2[tmpP][tmpY]=Mat2[tmpP][tmpY]/tmp;

for (tmpP=0; tmpP<3; tmpP++)

Mat2[tmpX][tmpP]=Mat2[tmpX][tmpP]/tmp;

switch (tmpY) {

case 0: {

X5->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X5"; break;

case 2: X2->Caption="X5"; break;

case 3: X3->Caption="X5"; break;

case 4: X4->Caption="X5"; break;

}

}; break;

case 1: {

X6->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X6"; break;

case 2: X2->Caption="X6"; break;

case 3: X3->Caption="X6"; break;

case 4: X4->Caption="X6"; break;

}

}; break;

case 2: {

X7->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X1->Caption="X7"; break;

case 2: X2->Caption="X7"; break;

case 3: X3->Caption="X7"; break;

case 4: X4->Caption="X7"; break;

}

}; break;

}

Mat2[tmpX][3]=Mat2[tmpX][3]*(-1);

//вывод получившегося решения

for (tmpI=0; tmpI<=4; tmpI++)

for (tmpJ=0; tmpJ<=4; tmpJ++)

if ((tmpI!=tmpX)&&(tmpJ!=tmpY) )

{

Mat2[tmpI][tmpJ]=Mat1[tmpI][tmpJ]-(Mat1[tmpX][tmpJ]*Mat1[tmpI][tmpY])/tmp;

}

Mat2[1][3]=Mat2[1][3]*(-1);

sMemo1->Lines->Add("Оптимальное решение:");

sMemo1->Lines->Add(X5->Caption+"="+FloatToStr(Mat2[0][0])+" "+X6->Caption+"="+FloatToStr(Mat2[0][1])+" "+X7->Caption+"="+FloatToStr(Mat2[0][2]));

sMemo1->Lines->Add("f(x)="+FloatToStr(Mat2[0][3]));

Edit00->Text=FloatToStr(Mat2[0][0]);

Edit01->Text=FloatToStr(Mat2[0][1]);

Edit02->Text=FloatToStr(Mat2[0][2]);

Edit03->Text=FloatToStr(Mat2[0][3]);

Edit04->Text=FloatToStr(Mat2[0][4]);

Edit10->Text=FloatToStr(Mat2[1][0]);

Edit11->Text=FloatToStr(Mat2[1][1]);

Edit12->Text=FloatToStr(Mat2[1][2]);

Edit13->Text=FloatToStr(Mat2[1][3]);

Edit14->Text=FloatToStr(Mat2[1][4]);

Edit20->Text=FloatToStr(Mat2[2][0]);

Edit21->Text=FloatToStr(Mat2[2][1]);

Edit22->Text=FloatToStr(Mat2[2][2]);

Edit23->Text=FloatToStr(Mat2[2][3]);

Edit24->Text=FloatToStr(Mat2[2][4]);

Edit30->Text=FloatToStr(Mat2[3][0]);

Edit31->Text=FloatToStr(Mat2[3][1]);

Edit32->Text=FloatToStr(Mat2[3][2]);

Edit33->Text=FloatToStr(Mat2[3][3]);

Edit34->Text=FloatToStr(Mat2[3][4]);

Edit40->Text=FloatToStr(Mat2[4][0]);

Edit41->Text=FloatToStr(Mat2[4][1]);

Edit42->Text=FloatToStr(Mat2[4][2]);

Edit43->Text=FloatToStr(Mat2[4][3]);

Edit44->Text=FloatToStr(Mat2[4][4]);

Price1=Mat2[0][3];

//Расчет для второй задачи

for (tmpX=0; tmpX<=4; tmpX++)

for (tmpY=0; tmpY<=2; tmpY++)

Mat[tmpX][tmpY]=0;

Mat[0][0]=StrToFloat(Edit001->Text);

Mat[0][1]=StrToFloat(Edit011->Text);

Mat[0][2]=StrToFloat(Edit021->Text);

Mat[1][0]=StrToFloat(Edit101->Text);

Mat[1][1]=StrToFloat(Edit111->Text);

Mat[1][2]=StrToFloat(Edit121->Text);

Mat[2][0]=StrToFloat(Edit201->Text);

Mat[2][1]=StrToFloat(Edit211->Text);

Mat[2][2]=StrToFloat(Edit221->Text);

Mat[3][0]=StrToFloat(Edit301->Text);

Mat[3][1]=StrToFloat(Edit311->Text);

Mat[3][2]=StrToFloat(Edit321->Text);

Mat[4][0]=StrToFloat(Edit401->Text);

Mat[4][1]=StrToFloat(Edit411->Text);

Mat[4][2]=StrToFloat(Edit421->Text);

//Находим среди отрицательных максимальное по модулю

tmp=0;

tmpP=0;

for (tmpX=0; tmpX<=4; tmpX++)

if (Mat[tmpX][2]<0)

if (fabs(tmp)<fabs(Mat[tmpX][2])) {

tmp=Mat[tmpX][2];

tmpP=tmpX;

}

//В столбце находим минимальный элемент

tmp=100;

tmpX=tmpP;

for (tmpY=0; tmpY<=1; tmpY++)

{

if (Mat[tmpX][tmpY]!=0)

if (Mat[0][tmpY]/Mat[tmpX][tmpY]<tmp)

{

tmp=Mat[0][tmpY]/Mat[tmpX][tmpY];

tmpP=tmpY;

}

}

//Делим на получившийся главный элемент

tmpY=tmpP;

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

for (int j=0; j <= 4; j++)

Mat1[i][j]=Mat[i][j];

for (tmpP=0; tmpP<= 2; tmpP++)

tmp=Mat[tmpX][tmpY];

Mat1[tmpX][tmpP]=Mat1[tmpX][tmpP]/tmp;

for (tmpP=0; tmpP<= 4; tmpP++)

Mat1[tmpP][tmpY]=Mat1[tmpP][tmpY]/tmp;

switch (tmpY){

case 0: {

X51->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X11->Caption="X5"; break;

case 2: X21->Caption="X5"; break;

case 3: X31->Caption="X5"; break;

case 4: X41->Caption="X5"; break;

}

}; break;

case 1: {

X61->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X11->Caption="X6"; break;

case 2: X21->Caption="X6"; break;

case 3: X31->Caption="X6"; break;

case 4: X41->Caption="X6"; break;

}

} break;

}

Mat1[tmpX][2]=Mat1[tmpX][2]*(-1);

for (tmpI=0; tmpI<=4; tmpI++)

for (tmpJ=0; tmpJ<=2; tmpJ++)

if ((tmpI!=tmpX)&&(tmpJ!=tmpY))

{

Mat1[tmpI][tmpJ]=Mat[tmpI][tmpJ]-(Mat[tmpX][tmpJ]*Mat[tmpI][tmpY])/tmp;

}

//Вывод базового решения.

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

for (int j=0; j <= 4; j++)

Mat2[i][j]=Mat1[i][j];

sMemo1->Lines->Add("Задача №2.");

sMemo1->Lines->Add("Опорное решение:");

sMemo1->Lines->Add(X51->Caption+"="+FloatToStr(Mat2[0][0])+" "+X61->Caption+"="+FloatToStr(Mat2[0][1]));

sMemo1->Lines->Add("f(x)="+FloatToStr(Mat2[0][2]));

//*********************************************************

// поиск оптимального решения

tmp=0;

tmpP=0;

for (tmpX=0; tmpX<=4; tmpX++)

if (Mat1[tmpX][2]<0)

if (fabs(tmp)<fabs(Mat1[tmpX][2]))

{

tmp=Mat1[tmpX][2];

tmpP=tmpX;

}

//В столбце находим минимальный элемент

tmp=1000;

tmpX=tmpP;

tmpJ=tmpY;

for (tmpY=0; tmpY<=1; tmpY++)

{

if ((Mat1[tmpX][tmpY]!=0) && (tmpY!=tmpJ))

if (Mat1[0][tmpY]/Mat1[tmpX][tmpY]<tmp)

{

tmp=Mat1[0][tmpY]/Mat1[tmpX][tmpY];

tmpP=tmpY;

}

}

//Делим на получившийся элемент

tmpY=tmpP;

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

for (int j=0; j <= 4; j++)

Mat2[i][j]=Mat1[i][j];

tmp=Mat1[tmpX][tmpY];

for (tmpP=0; tmpP<=4; tmpP++)

Mat2[tmpP][tmpY]=Mat2[tmpP][tmpY]/tmp;

for (tmpP=0; tmpP<=2; tmpP++)

Mat2[tmpX][tmpP]=Mat2[tmpX][tmpP]/tmp;

switch (tmpY){

case 0: {

X51->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X11->Caption="X5"; break;

case 2: X21->Caption="X5"; break;

case 3: X31->Caption="X5"; break;

case 4: X41->Caption="X5"; break;

}

}; break;

case 1: {

X61->Caption="X"+IntToStr(tmpX);

switch (tmpX) {

case 1: X11->Caption="X6"; break;

case 2: X21->Caption="X6"; break;

case 3: X31->Caption="X6"; break;

case 4: X41->Caption="X6"; break;

}

} break;

}

Mat2[tmpX][2]=Mat2[tmpX][2]*(-1);

//вывод получившегося решения

for (tmpI=0; tmpI<=4; tmpI++)

for (tmpJ=0; tmpJ<=2; tmpJ++)

if ((tmpI!=tmpX)&&(tmpJ!=tmpY))

{

Mat2[tmpI][tmpJ]=Mat1[tmpI][tmpJ]-(Mat1[tmpX][tmpJ]*Mat1[tmpI][tmpY])/tmp;

}

sMemo1->Lines->Add("Оптимальное решение:");

sMemo1->Lines->Add(X51->Caption+"="+FloatToStr(Mat2[0][0])+" "+X61->Caption+"="+FloatToStr(Mat2[0][1]));

sMemo1->Lines->Add("f(x)="+FloatToStr(Mat2[0][2]));

Edit001->Text=FloatToStr(Mat2[0][0]);

Edit011->Text=FloatToStr(Mat2[0][1]);

Edit021->Text=FloatToStr(Mat2[0][2]);

Edit101->Text=FloatToStr(Mat2[1][0]);

Edit111->Text=FloatToStr(Mat2[1][1]);

Edit121->Text=FloatToStr(Mat2[1][2]);

Edit201->Text=FloatToStr(Mat2[2][0]);

Edit211->Text=FloatToStr(Mat2[2][1]);

Edit221->Text=FloatToStr(Mat2[2][2]);

Edit301->Text=FloatToStr(Mat2[3][0]);

Edit311->Text=FloatToStr(Mat2[3][1]);

Edit321->Text=FloatToStr(Mat2[3][2]);

Edit401->Text=FloatToStr(Mat2[4][0]);

Edit411->Text=FloatToStr(Mat2[4][1]);

Edit421->Text=FloatToStr(Mat2[4][2]);

sMemo1->Lines->Add("*********************************");

sMemo1->Lines->Add("Прибыль по первому сорту бензина: "+FloatToStr(Price1));

sMemo1->Lines->Add("Прибыль по второму сорту бензина: "+FloatToStr(Mat2[0][2]));

if (Price1<Mat2[0][2]) {

sMemo1->Lines->Add("Второй сорт бензина выгоднее на "+FloatToStr(Mat2[0][2]-Price1));

}

if (Price1>Mat2[0][2]) {

sMemo1->Lines->Add("Первый сорт бензина выгоднее на "+FloatToStr(Price1-Mat2[0][2]));

}

}

}

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

void __fastcall TForm1::N4Click(TObject *Sender)

{

ShowMessage("Симплекс-метод для решения задачи на смеси!");

}

Страницы: 1, 2, 3, 4



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.