Автор работы: Пользователь скрыл имя, 17 Февраля 2012 в 23:52, курсовая работа
Разработка алгоритма решения задачи по перевозке грузов, создания и поддержания требуемого уровня запасов товаров и реализовать их в виде программного продукта.
1. Введение 3
2. Постановка задачи исследования 4
2.1. Оперативная постановка задачи 4
2.2. Анализ исходных данных 4
3. Блок-схема алгоритма 10
4. Программа и контрольный вариант решения 15
4.1. Программа решения задачи 15
4.2. Контрольный вариант решения задачи 28
4.3. Схема расположения груза в оптимальном способе доставке 33
4.4. Исследование зависимостей на товары 34
5. Заключение 35
6. Библиографический список 36
program OOP;
Uses crt;
const
Tgod=365; {Dnei v godu}
Trab=365; {Chislo
rabochih dnei v godu}
var
S, {ploshad sklada}
AP :longint; {arendnaya plata}
P, {procent izmeneniya ceni tovara po zakupke}
i, {peremennaya}
l, {rasstoyanie perevozki}
Ln, {rasstoyanie ot sklada do zh/d}
Lk, {rasstoyanie ot sklada postavschika}
NOM :integer; {Vibor nomera goroda}
K, {koefficient ispolzovaniya skladskih ploshadei}
J, {summa intensivnosti sprosa i stoimost' hraneniy}
PR, {summa razmerov i intensivnosti sprosa}
Zzak, {zatrati po zakupke tovarov u postavschika}
Vig, {vigodnii variant dostavki cena}
Vig2, {2 vigodnii variant dostavki cena}
Hran, {Hranenie}
Dost, {Dostavka}
Pop, {Popolnenie za period(10 sutok)}
Post, {Postavka za god}
Log, {Logisticheskie izderjki za 10 dnei}
LogS, {Logisticheskie izderjki za 1 den}
Plos, {Potrebnaya ploschad v skladskom pomeschenii}
Otn: real; {dolya zatrat na podderjanie zapasov}
TipVV,TipV: string; {Tip transportnogo sredstva}
xa,xb,xc,Y,G,Hhr,U:array[1..4] of real; {dlina,shirina,visota yaschikov,
intensivnost sprosa,
vmestimost sklada,
stoimost' hranenia,
kolichestvo yarusov,
cena edinici tovara po zakupke u postavschika}
Tip: array[1..5] of string; {Tip transportnogo sredstva}
f:array[4..5] of integer; {tarif 20' konteynera,
tarif 40' konteynera}
EP,YA: array[1..4] of integer; {edinica postavki,
yarusi}
x1,x2,x3,x4: array[1..19] of integer; {stoimost zh/d konteynernoy perevozki}
a,b,h: array[1..5] of real; {transportnie sredstva}
c: array[1..7] of real; {stoimost avto perevozki konteinerom}
Ks,Topt,Tg,T: array[1..5] of real; {stoimost dostavki gruza avto,
optimal'noe znachenie perioda popolnenia zapasov,
period popolneniya zapasov ishodya iz gruzovmestimosti TS,
Optimalniy period popolneniy zapasov ishodya iz Topt - Tg}
Z,Zdoc,Zhr: array[1..5] of real; {summarnie zatrati,
zatrati po dostavke tovarov na sklad,
zatrati po hraneniy tovara}
ZAP,pos,hr,Sum: array[1..10] of real; {Zapasi(sutochnay vidacha),
Postavka,hranenie,summa}
Ob: array[1..4]
of real; {Obem
postavki 1-4 tipa tovara}
begin ClrScr;
writeln('vvedite ploshad sklada ='); read(S);
writeln('vvedite arendnaya plata ='); read(AP);
writeln('vvedite koefficient ispolzovaniya skladskih ploshadei ='); read(K);
writeln('vvedite procent izmeneniya
ceni tovara po zakupke ='); read(P);
for i:=1 to 4 do
begin
writeln('vvedite dlinu ',i,' yaschika ='); read(xa[i]);
writeln('vvedite shirinu ',i,' yaschika ='); read(xb[i]);
writeln('vvedite visotu ',i,' yaschika ='); read(xc[i]);
writeln('vvedite cena edinici tovara ',i,' yaschika ='); read(U[i]);
writeln('vvedite intensivnost sprosa ',i,' yaschika ='); read(Y[i]);
U[i]:=U[i]*((1)+((P)/(100)));
end;
for i:=1 to 4 do
repeat
writeln('esli ',i,' edinica postavki - yaschik to vvedite 1, esli - palleta to 0');
readln(EP[i]);
until EP[i] in [0..1];
for i:=1 to 4 do
if EP[i]=1 then
begin
writeln(i,' yaschik. Esli cetnoe cislo - 4 yarusa, necetnor - 5 yarusov');
readln(YA[i]);
if odd(YA[i]) then YA[i]:=5 else YA[i]:=4;
end
else YA[i]:=2;
for i:=1 to 4 do
writeln(i,' edinica postavki
= ',YA[i],' yarusov');
begin ClrScr;
writeln('Goroda:');
writeln('0 - Sankt-Petergurg - Murmansk');
writeln('1 - Sankt-Petergurg - Arhangelsk');
writeln('2 - Sankt-Petergurg - Astrahan');
writeln('3 - Sankt-Petergurg - Samara');
writeln('4 - Sankt-Petergurg - Saratov');
writeln('5 - Sankt-Petergurg - Krasnodar');
writeln('6 - Sankt-Petergurg - Ekaterenburg');
writeln('7 - Sankt-Petergurg - Volgograd');
writeln('8 - Sankt-Petergurg - Novorossiysk');
writeln('9 - Sankt-Petergurg - Yaroslavl');
writeln('10 - Svoi gorod');
repeat
writeln;
writeln('Vvedite nomer goroda');readln(NOM);
until NOM in [0..10];
if NOM=0 then begin l:=1000;Ln:=50;Lk:=20;
writeln('Vi vibrali gorod Murmansk. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie
ot sklada do zh/d stancii = ',lk,'km'); readln end
else
if NOM=1 then begin l:=750;Ln:=50;Lk:=40;
writeln('Vi vibrali gorod Arhangelsk. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=2 then begin l:=1900;Ln:=50;Lk:=25;
writeln('Vi vibrali gorod Astrahan. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km');readln end;
if NOM=3 then begin l:=1400;Ln:=50;Lk:=50;
writeln('Vi vibrali gorod Samara. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=4 then begin l:=1300;Ln:=50;Lk:=30;
writeln('Vi vibrali gorod Saratov. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=5 then begin l:=1700;Ln:=50;Lk:=35;
writeln('Vi vibrali gorod Krasnodar. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=6 then begin l:=1800;Ln:=50;Lk:=40;
writeln('Vi vibrali gorod Ekaterenburg. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=7 then begin l:=1500;Ln:=50;Lk:=20;
writeln('Vi vibrali gorod Volgograd. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=8 then begin l:=1800;Ln:=50;Lk:=25;
writeln('Vi vibrali gorod Novorossiysk. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=9 then begin l:=600;Ln:=50;Lk:=50;
writeln('Vi vibrali gorod Yaroslavl. Rasstoyanie do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km'); end;
if NOM=10 then begin writeln('Vvedite rasstoyanie do goroda = ');readln(l);
writeln('VVedite rasstoyanie ot sklada do zh/d stancii = ');read(Ln);
writeln('Vvedite rasstoyanie ot zh/d stancii do sklada = ');read(Lk);
writeln('Rasstoyanie ot goroda do goroda = ',l,'km');
writeln('Rasstoyanie ot sklada do zh/d stancii = ',ln,'km');
writeln('Rasstoyanie ot zh/d stancii do sklada = ',lk,'km');readln end;
readln
end;
x1[1]:=0; x2[1]:=50; x3[1]:=2800; x4[1]:=3750;
x2[2]:=220; x3[2]:=3125; x4[2]:=4250;
x2[3]:=390; x3[3]:=3375; x4[3]:=4750;
x2[4]:=570; x3[4]:=3625; x4[4]:=5000;
x2[5]:=760; x3[5]:=3875; x4[5]:=5250;
x2[6]:=920; x3[6]:=4125; x4[6]:=5500;
x2[7]:=1100; x3[7]:=4375; x4[7]:=6000;
x2[8]:=1300; x3[8]:=4625; x4[8]:=6500;
x2[9]:=1450; x3[9]:=4875; x4[9]:=7000;
x2[10]:=1600; x3[10]:=5125; x4[10]:=7500;
x2[11]:=1800; x3[11]:=5375; x4[11]:=8125;
x2[12]:=2000; x3[12]:=5625; x4[12]:=8750;
x2[13]:=2200; x3[13]:=5875; x4[13]:=9375;
x2[14]:=2400; x3[14]:=6125; x4[14]:=10000;
x2[15]:=2700; x3[15]:=6375; x4[15]:=10750;
x2[16]:=2900; x3[16]:=6625; x4[16]:=11625;
x2[17]:=3100; x3[17]:=6875; x4[17]:=12250;
x2[18]:=3300; x3[18]:=7125; x4[18]:=12750;
x2[19]:=3500; x3[19]:=7375; x4[19]:=13250;
for i:=1 to 18 do
begin
x1[i+1]:=x2[i]+1; end;
for i:=1 to 19 do
if((x1[i]<=l)and(x2[i]>=l))
then begin f[4]:=x3[i];
f[5]:=x4[i] end;
Tip[1]:='Gazel';
Tip[2]:='ZIL';
Tip[3]:='Scania';
Tip[4]:='20" konteiner';
Tip[5]:='40" konteiner';
A[1]:=2.5; B[1]:=2.0; H[1]:=2.0;
A[2]:=4; B[2]:=2; H[2]:=2;
A[3]:=12; B[3]:=2.0; H[3]:=2.5;
A[4]:=6; B[4]:=2.4; H[4]:=2.5;
A[5]:=12; B[5]:=2.4;
H[5]:=2.5;
for i:=1 to 4 do
begin
g[i]:=(s*YA[i]*k)/(xa[i]*xb[i]
Hhr[i]:=(s*AP)/((Trab)*(g[i]))
C[1]:=10*(1+p/100); {stoimost perevozki 1 avto}
C[2]:=16*(1+p/100); {stoimost perevozki 2 avto}
C[3]:=22*(1+p/100); {stoimost perevozki 3 avto}
C[4]:=16*(1+p/100); {stoimost perevozki pustogo 20' konteinera}
Информация о работе Разработка алгоритма и программного продукта по управлению запасами склада