![]() |
![]() |
|
Факторинг Теория очередей и материальные запасы Расчет зонной стратегии program zone integer i,n real d, hh,gg,ll,tau real eps, qq, qq2, sss,ssl,ss2,ss3 integer, allocatable :: sl(:), s2(:), ss(:) integer, allocatable :: h(:), lam(:), g(:) n=10 allocate (h(iO), g(0:10), lam(lO), sl(lO), s2(10), ss(lO)) data d, eps, tau /500, le-5, 0.2/ open (3, file=zone.dat) rewind (3) read (3,41115)0 g read (3, 41015) 0 h read (3,41015)0 lam do i=l,n gg=g(i); hh=h(i); ll=lam(i) qq2=0; qq=ie0 ! Вычисляем q do while(abs(qq-qq2)>eps) qq=qq2 qq2=ll*gg/hh+(qq+ll*tau)*(le0+ll*tau) qq2=sqrt(2*qq2)-ll*tau end do qq2=floor(qq2+0.5) !! Ближайшее целое !! Вычисляем второй порог gg=g(0)+g(i) ss2=log(d*ll/(hh*(qq2+ll*tau)))/log(l+1.0/(ll*tau))-1.0 ss2=ceiling(ss2) !! Ближайшее большее целое ! Верхний уровень sss=ss2+qq2 ss3=ss2; ssl=0 !! Вычисляем первый порог do while(abs(ssl-ss3)>eps) ssl=ss3 ss3=log(d*ll*tau*((sss-ssl)*log(l+l:0/(ll*tau))-1.0)/ & (hh/(2*ll)*(sss-ssl)**2+gg))/ & log(l+1.0/(ll*tau)) end do ssl=ceiling(ss3) !! Ближайшее большее целое sl(i)=ssl; s2(i)=ss2; ss(i)=sss end do write (*, 47a5)) i,lam,g,si,s2,ss do i=l,n write (*,10) i,lam(i), h(i), g(i), sl(i), s2(i), ss(i) end do 10 format (7i5) deallocate (h, g, lam, si, s2, ss) close (3) end program
|