Тел.факс: +7(831)437-66-01
Факторинг  Теория очередей и материальные запасы 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123

!! Правые границы интервала постоянства группировок do i=l,n

if (k(i)==l) then right(i)=le20

else

right(i)=sqrt(2*gs(i)/(ls(i)*hs(i)*(k(i)*(k(i)~l)))) end if end do

!! Левые границы интервала постоянства группировок do i=l,n

left(i)=sqrt(2*gs(i)/(ls(i)*hs(i)*(k(i)*(k(i)+l)))) end do

print *, Начальное состояние

write (*,4a,el2.5)0 Минимальные затраты = *, 11 write (*,4a,el2.5)) Базисный период = \ tt print *, inew iold g/(h*lam) к left right do i=l,n

j=y(i);

writeC*,(2i6,el2.3,i6,2el2.3)О &

i,j,glh(i),k(i),left(i),right(i)

end do

!! Выбираем направление движения key=0

if (any(right<tt)) then key=l

else

if (any(left>tt)) key=-l end if

if (key==l) then

print *, Пошли вправо do while (key==l) key=0 do i=l,n

if (right(i)<=tt) then key=l



gg=gg+2*gs(i)/(k(i)*(k(i)-l))

lhk=lhk-ls(i)*hs(i)

k(i)=k(i)~l

right(i)=sqrt(2*gs(i)/ &

(ls(i)*hs(i)*k(i)*(k(i)-l)))

end if end do

tt=sqrt(gg/lhk); ll=sqrt(gg*lhk) print *, tt = ,tt, 11 = ,11 end do else

print *, Пошли влево do while (key==-l) key=0 do i=l,n

if (left(i)>=tt) then key=-l

gg=gg-2*gs(i)/(k(i)*(k(i)+l))

lhk=lhk+ls(i)*hs(i)

k(i)=k(i)+l

left(i)=sqrt(2*gs(i)/ &

(ls(i)*hs(i)*k(i)*(k(i)+l)))

end if end do

tt=sqrt(gg/lhk); ll=sqrt(gg*lhk) print *, tt = ,tt, 11 = ,11 end do end if

write (*,(a,el2.5)) Минимальные затраты = , 11 write (*,(a,el2.5)) Базисный период = , tt kk=0

do i=l,n

if (k(i)/=kk) then kk=k(i)

write (*,( ,a,i3)) Коэффициент кратности = ,k(i) end if

write (*,(i6\)) y(i) end do



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

deallocate (h,hs,g,gs,lam,ls,glh,left,right,к,у)

contains

subroutine chanlin(n,x,y) !! Элементы x будут упорядочены по возрастанию

!! В массиве у - соответствие номеров старым

integer, intent(in) :: n

real, intent(inout) :: x(:)

integer, intent(out) :: y(:) integer i,j,k,l

real p

do i=l,n; y(i)=i; end do do i=l,n

p=x(i); k=i; l=y(i) do j=i+l,n

if (x(j)<p) then

p=x(j); k=j; l=y(k) end if end do

x(k)=x(i); x(i)=p; y(k)=y(i); y(i)=l end do end subroutine chanlin end program



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 [ 122 ] 123