Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Методические основы совершенств. транспортных связей в предприя

.pdf
Скачиваний:
5
Добавлен:
07.01.2021
Размер:
3.26 Mб
Скачать

151

Продолжение прил. Г

Pk = StrToInt(Edit3->Text);

Cki = StrToInt(Edit4->Text); dk = StrToInt(Edit5->Text); Trm = StrToInt(Edit6->Text); x = StrToInt(Edit7->Text); Ln = StrToInt(Edit8->Text); int K=2;

for(int i=0; i<3; i++) // проводим расчеты по периодам i=1,2,3

{

 

q = Trm*Pk*(i+1);

//расчет объема партии поставки

xi[i] = (q+D[i])*x;

//уровень запаса на складе

Cd = Cki/q*dk; // расходы на доставку

Cp = Cki*dk+Ln*(i+1); // затраты на выполнение поставки

Cq = (Cki*q+Cki*dk)/q; // стоимость хранения на складе

Ch = Cq*xi[i]*K/100; // затраты на хранение

ListBox1->Items->Add(q); // выводим полученные данные

ListBox2->Items->Add(xi[i]);

ListBox3->Items->Add(Cd);

ListBox4->Items->Add(Cp);

ListBox5->Items->Add(Cq);

ListBox6->Items->Add(Ch);

}

152

Продолжение прил. Г

Ввод исходных данных для программы «Оптимизация лесотранспортных потоков»

int a = 5, b = 5; // глобальные постоянные коэффициенты, определяемые технико-эксплуатационными параметрами автопоезда

Edit4->Color = clWindow; // настройки отображения Edit5->Color = clWindow;

Edit7->Color = clWindow; Edit4->ShowHint = false; Edit5->ShowHint = false; Edit7->ShowHint = false;

int Gnd, Gnw, Gny; // день, неделя, год int Vck; // средняя скорость

int N; // кол-во ездок

int Lm; // протяженность вывозки int Am; // кол-во лесовозов

int Zpr, K, Ap; // затраты, кол-во ездок, модельный ряд

Gnd = StrToInt(Edit1->Text); // к переменным присваиваем поля для ввода данных

Gnw = StrToInt(Edit2->Text);

Gny = StrToInt(Edit3->Text);

Vck = StrToInt(Edit4->Text); N = StrToInt(Edit5->Text); Lm = StrToInt(Edit6->Text); Am = StrToInt(Edit7->Text);

Zpr = a*Lm*N*Am+b; // расчитываем мин.затраты

Label9->Caption = IntToStr(Zpr) + " руб."; // выводим результат

K = N*365; // расчитываем годовое кол-во ездок Label11->Caption = K; // выводим результат Label13->Caption = Am; // выводим результат

Ap = 300*10;

153

Продолжение прил. Г

Label15->Caption = Ap;

int Gpr; // определяем выполнение рейса

Gpr = Lm/Vck*N/Am;

if(Gpr<=24) {Label16->Caption = "Выполнение рейса";}

if(Gpr>24) // в случае отмены рейса указываем какие параметры необходимо изменить

Label16->Caption = "Отмена рейса"; Edit4->Color = clRed;

Edit5->Color = clRed; Edit7->Color = clRed; Edit4->ShowHint = true; Edit5->ShowHint = true; Edit7->ShowHint = true;

int Gncp; // определяем средний грузооборот

Gncp = (Gnd+(Gnw/7)+(Gny/365))/3; Label18->Caption = Gncp;

Ввод исходных данных для программы «Многоцелевая оптимизация»

Создаем переменные и функции:

float f1, f2, g, x, x1, x2, P, Fr, a, pi, m, sigma, Fs, Tr; //входные и выходные параметры float link, link2, d;

randomaze(); // ф-я случайной величины /* Для целевой функции ZDT3*/

double f1x(double x)

{

if(d-x < 1){return (d+x);} //устанавливаем условия if(d-x > 1){return (d-x);}

if(d-x == 1){return (x);}

}

double f2x(double x)

{

return (g*(1-sqrt(f1x(x)/g)-(f1x(x)/g)*sin(10*3.14*f1x(x))));

}

double RANG(double x)

{

154

Продолжение прил. Г

return (1+a);

}

/* Для целевой функции TNK*/ double f1t(double x)

{

return (x1);

}

double f2t(double x)

{

return (x2);

}

/* Для целевой функции DTLZ4*/ double f1d(double x)

{

return ((1+g)*cos(3.14*x1/2)*cos(3.14*x2/2));

}

double f2d(double x)

{

return ((1+g)*cos(3.14*x1/2)*sin(3.14*x2/2));

}

double f3d(double x)

{

return ((1+g)*sin(3.14*x1/2));

}

Код реализации алгоритма:

Series1->Clear(); //очищаем поля перед расчетами

ListBox1->Clear();

ListBox2->Clear();

ListBox3->Clear();

float nRANG=0;

 

 

P = StrToInt(Edit1->Text);

 

//вводим данные

sigma = StrToFloat(Edit6->Text);

d = StrToFloat(Edit2->Text);

 

Tr = StrToFloat(Edit3->Text);

 

a = random(P);

 

 

Label8->Caption = random(P);

 

for(int k=1;k<=RANG(x);k++)

//рассчитываем ранг индивидов

{

 

 

nRANG = nRANG+P;

 

 

}

 

 

Fr = 1+nRANG; //выводим критерий качества

Label10->Caption = RANG(x);

//выводим ранг

for(x=0.1;x<=1;x+=Tr)

//рассчитываем популяцию

{

 

 

ListBox3->Items->Add(RoundTo(f1x(x), -4)); //строим ф-ю f1(x) for(int n=2;n<=30;n++)

{

g = 1+9*x/(n-1);

ListBox1->Items->Add(RoundTo(f2x(x), -4)); //строим ф-ю f2(x)

}

for(int zx=1;zx<ListBox3->Count;zx++)

{

link2 = StrToFloat(ListBox3->Items->Strings[zx]); //проводим анализ результатов полученных ф-й f1(x) и f2(x)

for(int z=1;z<ListBox1->Count;z++)

155

Окончание прил. Г

{

link = StrToFloat(ListBox1->Items->Strings[z]); Series1->Add(link,RoundTo(link2, -4)); //выводим на график

}

}

}

for(int z=1;z<ListBox1->Count;z++) // Расстояние между индивидуумами

{

pi = ListBox1->Items->Strings[z] - ListBox1->Items->Strings[z-1]; ListBox2->Items->Add(RoundTo(pi, -4));

}

m = 0;

int kk = 0;

for(int zz=0;zz<ListBox2->Count;zz++) //рассчитываем нишевое число

{

if(ListBox2->Items->Strings[zz] == 0)

{

kk = 1;

}

if(ListBox2->Items->Strings[zz] >= sigma)

{

kk = 0;

}

if(ListBox2->Items->Strings[zz] < sigma)

{

kk = (1-StrToFloat(ListBox2->Items->Strings[zz])/sigma);

}

m = m + kk; //суммируем нишевое число

}

Label13->Caption = m; //выводим нишевое число Fs = Fr*m; //рассчитываем ф-ю качества

Label4->Caption = Fs;

Фрагмент схемы концентрации транспортных потоков лесоматериалов на промежуточные склады

156

Научное издание

Артем Сергеевич Сушков Владимир Александрович Морковин

МЕТОДИЧЕСКИЕ ОСНОВЫ СОВЕРШЕНСТВОВАНИЯ ТРАНСПОРТНЫХ СВЯЗЕЙ В ПРЕДПРИЯТИЯХ ЛЕСНОГО КОМПЛЕКСА

Монография

Редактор Е.А. Богданова

Подписано в печать 01.07.2016. Формат 60×90 /16. Усл. печ. л. 9,75. Уч.-изд. л. 8,42. Тираж 500 экз. Заказ

ФГБОУ ВО «Воронежский государственный лесотехнический университет имени Г.Ф. Морозова»

РИО ФГБОУ ВО «ВГЛТУ». 394087, г. Воронеж, ул. Тимирязева, 8 Отпечатано в УОП ФГБОУ ВО «ВГЛТУ»

394087, г. Воронеж, ул. Докучаева, 10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]