Смекни!
smekni.com

Модель распределения ресурсов (стр. 9 из 9)

gotoxy(tx+42,ty+1); cout << "Z3_max(ksi2,eta1+x1)";

gotoxy(tx+63,ty+1); cout << "│";

gotoxy(tx+65,ty+1); cout << "Z2(ksi1,eta1)";

gotoxy(tx+78,ty+1); cout << "│";

gotoxy(tx,ty+2); cout << "├";

for (i=0;i<c_x;i++)

cout << "─";

cout << "┤";

gotoxy(tx+7,ty+2); cout << "┼";

gotoxy(tx+14,ty+2); cout << "┼";

gotoxy(tx+19,ty+2); cout << "┼";

gotoxy(tx+26,ty+2); cout << "┼";

gotoxy(tx+26,ty+2); cout << "┼";

gotoxy(tx+40,ty+2); cout << "┼";

gotoxy(tx+63,ty+2); cout << "┼";

new_y=ty+3;

}

//-------------Определение методов класса таблицы---------------

void Table::NewString(double a1, double a2, double a3,

double a4, double a5, double a6, double a7)

{

gotoxy(tx,new_y);

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

cout << " ";

gotoxy(tx+7,ty+2); cout << "┼";

gotoxy(tx+14,ty+2); cout << "┼";

gotoxy(tx+19,ty+2); cout << "┼";

gotoxy(tx+26,ty+2); cout << "┼";

gotoxy(tx+26,ty+2); cout << "┼";

gotoxy(tx+40,ty+2); cout << "┼";

gotoxy(tx+63,ty+2); cout << "┼";

gotoxy(tx,new_y); cout << "│";

gotoxy(tx+2,new_y) ; cout << a1;

gotoxy(tx+7,new_y); cout << "│";

gotoxy(tx+9,new_y) ; cout << a2;

gotoxy(tx+14,new_y); cout << "│";

gotoxy(tx+16,new_y); cout << a3;

gotoxy(tx+19,new_y); cout << "│";

gotoxy(tx+21,new_y); cout << a4;

gotoxy(tx+26,new_y); cout << "│";

gotoxy(tx+28,new_y); cout << a5;

gotoxy(tx+40,new_y); cout << "│";

gotoxy(tx+42,new_y); cout << a6;

gotoxy(tx+63,new_y); cout << "│";

gotoxy(tx+65,new_y); cout << a7;

gotoxy(tx+78,new_y); cout << "│";

new_y++;

if(new_y>24)

{

gotoxy(tx,new_y); cout << "└";

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

cout << "─";

cout << "┘";

gotoxy(tx+7,ty+2); cout << "┴";

gotoxy(tx+14,ty+2); cout << "┴";

gotoxy(tx+19,ty+2); cout << "┴";

gotoxy(tx+26,ty+2); cout << "┴";

gotoxy(tx+26,ty+2); cout << "┴";

gotoxy(tx+40,ty+2); cout << "┴";

gotoxy(tx+63,ty+2); cout << "┴";

new_y=ty+3;

}

}

void Table::EndOfTable()

{

int i,j;

gotoxy(tx,new_y); cout << "└";

for (i=0;i<c_x;i++)

cout << "─";

cout << "┘";

gotoxy(tx+7,ty+2); cout << "┴";

gotoxy(tx+14,ty+2); cout << "┴";

gotoxy(tx+19,ty+2); cout << "┴";

gotoxy(tx+26,ty+2); cout << "┴";

gotoxy(tx+26,ty+2); cout << "┴";

gotoxy(tx+40,ty+2); cout << "┴";

gotoxy(tx+63,ty+2); cout << "┴";

gotoxy(tx,new_y+1);

for(j=new_y+1;j<26;j++)

{

for(i=tx;i<c_x+4;i++)

{

gotoxy(i,j);

cout << " ";

}

}

gotoxy(1,24);

}

//------------Сообщения-----------------------------------------

void MessageSend(char *MessageForFunc)

{

cout << MessageForFunc << endl;

getch();

}

//----Определения функций, характеризующих выпуск продукции-----

double f3(int arg1, int arg2)

{

if((arg1<0 || arg1>ksi_0) || (arg2<0 || arg2>ksi_0))

return (double)MAXINT;

double Values[ksi_0+1][ksi_0+1]={ 0, 3.4, 3.8, 4.2, 5.0, 5.0, 0,

0, 3.7, 4.1, 4.5, 5.3, 5.3, 0,

0, 3.7, 4.1, 4.5, 5.4, 0, 0,

0, 4.0, 4.5, 4.8, 0, 0, 0,

0, 4.2, 4.8, 0, 0, 0, 0,

0, 4.6, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0 };

return Values[arg2][arg1];

}

double f2(int arg1, int arg2)

{

if((arg1<0 || arg1>ksi_0) || (arg2<0 || arg2>ksi_0))

return (double)MAXINT;

double Values[ksi_0+1][ksi_0+1]={ 0, 2.2, 2.8, 3.1, 4.3, 6, 0,

0, 3.1, 4.2, 5.3, 7.1, 8, 0,

0, 3.3, 4.5, 6.1, 7.3, 0, 0,

0, 3.5, 4.8, 6.7, 0, 0, 0,

0, 5.4, 5.9, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0 };

return Values[arg2][arg1];

}

double f1(int arg1)

{

if(arg1<0 || arg1>ksi_0)

return (double)MAXINT;

double Values[ksi_0+1]={ 0, 2.1, 3.2, 4.3, 5.1, 5.1, 0 };

return Values[arg1];

}

int main(void)

{

clrscr();

Table ob;

int ksi, eta, x, i, j, Indexes[6][5], IndexOfMax = -1, X_opt[3];

double Z_2[6][5], Max=0, MayBeMax=0, Z_max;

for(i=0; i<6; i++)

for(j=0; j<5; j++)

{

Z_2[i][j]=0;

Indexes[i][j]=-1;

}

for(ksi=1; ksi<7; ksi++)

{

for(eta=0; eta<5; eta++)

{

Max = MayBeMax = 0;

for(x=0; x<ksi + 1; x++)

{

if((ksi + eta) > 6)

break;

MayBeMax = f2(x, eta) + f3(ksi - x, x + eta);

if(Max < MayBeMax)

{

Max = MayBeMax;

IndexOfMax = x;

}

ob.NewString(ksi, eta, x, ksi-x, f2(x, eta), f3(ksi - x, x + eta), MayBeMax);

getch();

}

if(Max>0)

{

Z_2[ksi-1][eta] = Max;

Indexes[ksi-1][eta] = IndexOfMax;

}

}

}

ob.EndOfTable();

getch();

Max = MayBeMax = 0;

for(x = 0; x<ksi_0; x++)

{

MayBeMax = f1(x) + Z_2[ksi_0 - 1 - x][x];

if(Max < MayBeMax)

{

Max = MayBeMax;

X_opt[0] = x;

}

}

Z_max = Max;

X_opt[1] = Indexes[ksi_0 - 1 - X_opt[0]][X_opt[0]];

Max = MayBeMax = 0;

for(i=0; i<ksi_0 + 1; i++)

{

MayBeMax = f3(i,X_opt[0]+1);

if(Max < MayBeMax)

{

Max = MayBeMax;

X_opt[2] = i;

}

}

cout << "Максимальный выпуск продукции: " << Z_max << endl;

cout << "достигается при распределении средств: ";

cout << "x1=" << X_opt[0] << ", x2=" << X_opt[1] << ", x3=" << X_opt[2];

getch();

getch();

return 0;

}

Результаты работы программы

┌──┬───┬──┬──┬───────┬────────────┬───────┬

│ksi1│eta1│x1│ksi2│f2(x2,eta1)│Z3_max(ksi2,eta1+x1)│ Z2(ksi1,eta1)│

├───┴───┴──┴──┴───────┴───────────┴───────┴

│ 1 │ 0 │ 0 │ 1 │ 0 │ 3.4 │ 3.4 │

│ 1 │ 0 │ 1 │ 0 │ 2.2 │ 0 │ 2.2 │

│ 1 │ 1 │ 0 │ 1 │ 0 │ 3.7 │ 3.7 │

│ 1 │ 1 │ 1 │ 0 │ 3.1 │ 0 │ 3.1 │

│ 1 │ 2 │ 0 │ 1 │ 0 │ 3.7 │ 3.7 │

│ 1 │ 2 │ 1 │ 0 │ 3.3 │ 0 │ 3.3 │

│ 1 │ 3 │ 0 │ 1 │ 0 │ 4 │ 4 │

│ 1 │ 3 │ 1 │ 0 │ 3.5 │ 0 │ 3.5 │

│ 1 │ 4 │ 0 │ 1 │ 0 │ 4.2 │ 4.2 │

│ 1 │ 4 │ 1 │ 0 │ 5.4 │ 0 │ 5.4 │

│ 2 │ 0 │ 0 │ 2 │ 0 │ 3.8 │ 3.8 │

│ 2 │ 0 │ 1 │ 1 │ 2.2 │ 3.7 │ 5.9 │

│ 2 │ 0 │ 2 │ 0 │ 2.8 │ 0 │ 2.8 │

│ 2 │ 1 │ 0 │ 2 │ 0 │ 4.1 │ 4.1 │

│ 2 │ 1 │ 1 │ 1 │ 3.1 │ 3.7 │ 6.8 │

│ 2 │ 1 │ 2 │ 0 │ 4.2 │ 0 │ 4.2 │

│ 2 │ 2 │ 0 │ 2 │ 0 │ 4.1 │ 4.1 │

│ 2 │ 2 │ 1 │ 1 │ 3.3 │ 4 │ 7.3 │

│ 2 │ 2 │ 2 │ 0 │ 4.5 │ 0 │ 4.5 │

│ 2 │ 3 │ 0 │ 2 │ 0 │ 4.5 │ 4.5 │

│ 2 │ 3 │ 1 │ 1 │ 3.5 │ 4.2 │ 7.7 │

│ 2 │ 3 │ 2 │ 0 │ 4.8 │ 0 │ 4.8 │

│ 2 │ 4 │ 0 │ 2 │ 0 │ 4.8 │ 4.8 │

│ 2 │ 4 │ 1 │ 1 │ 5.4 │ 4.6 │ 10 │

│ 2 │ 4 │ 2 │ 0 │ 5.9 │ 0 │ 5.9 │

│ 3 │ 0 │ 0 │ 3 │ 0 │ 4.2 │ 4.2 │

│ 3 │ 0 │ 1 │ 2 │ 2.2 │ 4.1 │ 6.3 │

│ 3 │ 0 │ 2 │ 1 │ 2.8 │ 3.7 │ 6.5 │

│ 3 │ 0 │ 3 │ 0 │ 3.1 │ 0 │ 3.1 │

│ 3 │ 1 │ 0 │ 3 │ 0 │ 4.5 │ 4.5 │

│ 3 │ 1 │ 1 │ 2 │ 3.1 │ 4.1 │ 7.2 │

│ 3 │ 1 │ 2 │ 1 │ 4.2 │ 4 │ 8.2 │

│ 3 │ 1 │ 3 │ 0 │ 5.3 │ 0 │ 5.3 │

│ 3 │ 2 │ 0 │ 3 │ 0 │ 4.5 │ 4.5 │

│ 3 │ 2 │ 1 │ 2 │ 3.3 │ 4.5 │ 7.8 │

│ 3 │ 2 │ 2 │ 1 │ 4.5 │ 4.2 │ 8.7 │

│ 3 │ 2 │ 3 │ 0 │ 6.1 │ 0 │ 6.1 │

│ 3 │ 3 │ 0 │ 3 │ 0 │ 4.8 │ 4.8 │

│ 3 │ 3 │ 1 │ 2 │ 3.5 │ 4.8 │ 8.3 │

│ 3 │ 3 │ 2 │ 1 │ 4.8 │ 4.6 │ 9.4 │

│ 3 │ 3 │ 3 │ 0 │ 6.7 │ 0 │ 6.7 │

│ 4 │ 0 │ 0 │ 4 │ 0 │ 5 │ 5 │

│ 4 │ 0 │ 1 │ 3 │ 2.2 │ 4.5 │ 6.7 │

│ 4 │ 0 │ 2 │ 2 │ 2.8 │ 4.1 │ 6.9 │

│ 4 │ 0 │ 3 │ 1 │ 3.1 │ 4 │ 7.1 │

│ 4 │ 0 │ 4 │ 0 │ 4.3 │ 0 │ 4.3 │

│ 4 │ 1 │ 0 │ 4 │ 0 │ 5.3 │ 5.3 │

│ 4 │ 1 │ 1 │ 3 │ 3.1 │ 4.5 │ 7.6 │

│ 4 │ 1 │ 2 │ 2 │ 4.2 │ 4.5 │ 8.7 │

│ 4 │ 1 │ 3 │ 1 │ 5.3 │ 4.2 │ 9.5 │

│ 4 │ 1 │ 4 │ 0 │ 7.1 │ 0 │ 7.1 │

│ 4 │ 2 │ 0 │ 4 │ 0 │ 5.4 │ 5.4 │

│ 4 │ 2 │ 1 │ 3 │ 3.3 │ 4.8 │ 8.1 │

│ 4 │ 2 │ 2 │ 2 │ 4.5 │ 4.8 │ 9.3 │

│ 4 │ 2 │ 3 │ 1 │ 6.1 │ 4.6 │ 10.7 │

│ 4 │ 2 │ 4 │ 0 │ 7.3 │ 0 │ 7.3 │

│ 5 │ 0 │ 0 │ 5 │ 0 │ 5 │ 5 │

│ 5 │ 0 │ 1 │ 4 │ 2.2 │ 5.3 │ 7.5 │

│ 5 │ 0 │ 2 │ 3 │ 2.8 │ 4.5 │ 7.3 │

│ 5 │ 0 │ 3 │ 2 │ 3.1 │ 4.5 │ 7.6 │

│ 5 │ 0 │ 4 │ 1 │ 4.3 │ 4.2 │ 8.5 │

│ 5 │ 0 │ 5 │ 0 │ 6 │ 0 │ 6 │

│ 5 │ 1 │ 0 │ 5 │ 0 │ 5.3 │ 5.3 │

│ 5 │ 1 │ 1 │ 4 │ 3.1 │ 5.4 │ 8.5 │

│ 5 │ 1 │ 2 │ 3 │ 4.2 │ 4.8 │ 9 │

│ 5 │ 1 │ 3 │ 2 │ 5.3 │ 4.8 │ 10.1 │

│ 5 │ 1 │ 4 │ 1 │ 7.1 │ 4.6 │ 11.7 │

│ 5 │ 1 │ 5 │ 0 │ 8 │ 0 │ 8 │

│ 6 │ 0 │ 0 │ 6 │ 0 │ 0 │ 0 │

│ 6 │ 0 │ 1 │ 5 │ 2.2 │ 5.3 │ 7.5 │

│ 6 │ 0 │ 2 │ 4 │ 2.8 │ 5.4 │ 8.2 │

│ 6 │ 0 │ 3 │ 3 │ 3.1 │ 4.8 │ 7.9 │

│ 6 │ 0 │ 4 │ 2 │ 4.3 │ 4.8 │ 9.1 │

│ 6 │ 0 │ 5 │ 1 │ 6 │ 4.6 │ 10.6 │

│ 6 │ 0 │ 6 │ 0 │ 0 │ 0 │ 0 │

└──────────────────────────────────────────

Максимальный выпуск продукции: 15.1

достигается при распределении средств: x1=4, x2=1, x3=1


* Управление на k-м шаге может характеризоваться качественно

** Термин «эффективность» понимается как некотораяоценка результата процесса. Она может выражать собой пoкaзaтeль, который желательно максимизировать (например, прибыль, фондоотдача, производительность) или показатель, который необходимо минимизировать (например, затраты, себестоимость, потери)