Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Analitich_modelirovanie_v_logistike_Andronov_S...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.85 Mб
Скачать

1. Выбор лучшей альтернативы месторасположения производства.

Программа на языке системы Maple

Рис.П.1 Программа расчета рейтинга альтернатив (начало)

135

Рис.П.1 Программа расчета рейтинга альтернатив (продолжение)

136

Рис.П.1 Программа расчета рейтинга альтернатив (окончание)

137

ПРИЛОЖЕНИЕ 2

1.Фрагменты кода программы – определения координат склада.

Реализация в на языке СИ.

Ниже приведены фрагменты кода программы для трех заданий работы.

Задание 1

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

Фрагмент кода программы для данной задачи:

CFont font; font.CreateFontIndirect(&logfon); CFont* oldfo=pDC->SelectObject(&font);

pDC->TextOut(140,20,"Невозможно выполнить поставленную

задачу .");

pDC->SelectObject(oldfo);

pDC->MoveTo(10,60); pDC->LineTo(1100,60);

pDC->SelectObject(oldpen); pDC->SelectObject(&oldc);

char str[10];

int d=0,f=0,g=0,i,j;

float f1=0.0,g1=0.0,m1=10000,m2=10000,r1=0,r2=0; for(i=0;i<3;i++)

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

a[i][j]=0;

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

{

d+=v[i]*x[i];

g+=v[i]*y[i];

f+=v[i];

}

a[0][0]=d/f;

138

a[0][1]=g/f;

a[1][0]=x[0];

Задание 2

Определить узел транспортной сети прямоугольной конфигурации, в котором размещение распределительного склада обеспечит минимум грузооборота транспорта по доставке грузов в обслуживаемую сеть.

Фрагмент кода программы для данной задачи:

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

{

f1=g1=0.0;

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

{

f1+=v[j];

}

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

{

g1+=v[j];

}

if(m1<fabs(f1-g1)) {a[1][0]=x[i-1]; i=72;} m1=fabs(f1-g1);

}

int i1,u[30]; for(i1=0;i1<magazin;i1++)

u[i1]=y[i1]; int ymin,ym;

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

{

ymin=u[i];

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

if(u[j]<ymin)

{

ymin=u[j];

ym=u[j];

u[j]=u[i];

u[i]=ym;

v1[i]=v[j];

v1[j]=v[i];

}

139

}

a[1][1]=u[0];

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

{

f1=g1=0.0;

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

{

f1+=v1[j];

}

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

{

g1+=v1[j];

}

if(m2<fabs(f1-g1)) {a[1][1]=u[i-1]; i=72;} m2=fabs(f1-g1);

}

Задание 3

Методом частичного перебора найти узел транспортной сети, рекомендуемый для размещения склада, снабжающего магазины.

Фрагмент кода программы для данной задачи:

int grmin=30000,l1=0,l2=0,l3=0,l4=0;

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

{

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

{

char stre[10]; l2=0; l1=a[j][0]-1;

if(j==0) l1=a[j][0]+1;

{

itoa(l2=pow((x[i]-l1)*(x[i]-l1)+(y[i]-a[j][1])*(y[i]-

a[j][1]),0.5),stre,10);

pDC->TextOut(364+j*220,po+160+i*30,stre); itoa(l4=v[i]*l2,stre,10);

pDC->TextOut(474+j*220,po+160+i*30,stre); l3+=l4;

}

}

140

char stre[10]; pDC->TextOut(334+j*220,po+160+magazin*30,"x,y=[");

itoa(l1,stre,10); pDC->TextOut(369+j*220,po+160+magazin*30,stre);

pDC->TextOut(387+j*220,po+160+magazin*30,","); itoa(a[j][1],stre,10);

pDC->TextOut(394+j*220,po+160+magazin*30,stre);

pDC->TextOut(414+j*220,po+160+magazin*30,"]"); if(l3<=grmin)

{

grmin=l3;

a[2][0]=l1;

a[2][1]=a[j][1];

}

itoa(l3,stre,10); pDC->TextOut(474+j*220,po+160+magazin*30,stre);

l3=0;

}

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

{

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

{

char stre[10]; l2=0; l1=a[j][1]-1;

if(j==0) l1=a[j][1]+1;

{

itoa(l2=pow((x[i]-l1)*(x[i]-l1)+(y[i]-a[j][1])*(y[i]-

a[j][1]),0.5),stre,10);

pDC->TextOut(804+j*220,po+160+i*30,stre); itoa(l4=v[i]*l2,stre,10);

pDC->TextOut(914+j*220,po+160+i*30,stre); l3+=l4;

}

}

char stre[10]; pDC->TextOut(774+j*220,po+160+magazin*30,"x,y=[");

itoa(a[j][0],stre,10); pDC->TextOut(809+j*220,po+160+magazin*30,stre);

pDC->TextOut(829+j*220,po+160+magazin*30,",");

141

itoa(l1,stre,10); pDC->TextOut(836+j*220,po+160+magazin*30,stre);

pDC->TextOut(854+j*220,po+160+magazin*30,"]");

if(l3<=grmin)

{

grmin=l3;

a[2][0]=a[0][j];

a[2][1]=l1;

}

itoa(l3,stre,10); pDC->TextOut(914+j*220,po+160+magazin*30,stre);

l3=0;

}

for(i=0;i<magazin+2;i++)

{

pDC->MoveTo(20,po+150+i*30); pDC->LineTo(1205,po+150+i*30);

}

pDC->MoveTo(20,po+60); pDC->LineTo(20,po+150+(magazin+1)*30); pDC->MoveTo(257,po+60); pDC->LineTo(257,po+150+magazin*30); for(i=0;i<9;i++)

{

pDC->MoveTo(324+i*110,po+60); pDC->LineTo(324+i*110,po+150+(magazin+1)*30);

}

pDC->TextOut(55,po+160+magazin*30,"Итого");

po=po+270+magazin*30;

CBrush* br;

br=new CBrush(RGB(190,190,190)); CBrush* oldbr=pDC->SelectObject(br); pDC->Rectangle(100,po+20,980,po+500);

pDC->SelectObject(oldbr); delete br; pDC->MoveTo(100,po+500); pDC->LineTo(100,po-10); pDC->LineTo(105,po);

pDC->MoveTo(100,po-10); pDC->LineTo(95,po);

142

pDC->MoveTo(100,po+500); pDC->LineTo(1080,po+500);

pDC->LineTo(1070,po+505); pDC->MoveTo(1080,po+500); pDC->LineTo(1070,po+495); for(i=0;i<10;i++)

{

pDC->MoveTo(180+i*80,po+500); pDC->LineTo(180+i*80,po+20);

}

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