Оптимизация расписания методом полного перебора |
||
Алгоритм выбора состоит из трех этапов 1. Оценка времени обслуживания заданного расписания 2. Сравнение варианта с предыдущим по времени обслуживания и отбор лучшего из них 3. Выбор нового варианта и переход на пункт 1. Это делается n! раз. Схема по шагам: 1) задаем очередь 1,Tmin=большое число 2) употребляем алгоритм время обслуживания М=Т 3) если М<Тmin то Тmin=M и запоминаем очередь (О) 4) формируем новую очередь 5) проверяем сколько вариантов перебрали (К) если К<n! идем на пункт 2. иначе печатаем Тmin и оптимальную очередь. алгоритм переход (цел N, целтаб О[0:N], литера р) арг N,O рез П,О начало цел i,l,j,w i=N-1;p="есть варианты"; пока O(i)>=O(i+1) и i>=0 нц если i=0 то P="нет вариантов" все конец i=i-1; кц если P="есть варианты" то l=N пока O(l)<O(i) нц l=l-1 кц j=N;W=O(i);O(i)=O(l);O(l)=W пока N-j+i+1<j нц W=O(j);O(j)=O(N-j+i+1); O(N-j+i+1)=W;j=j-1; кц все конец алгоритм оптимизация полным перебором(цел N,вещтаб А[1:N],B[1:N], целтаб O[1:N],вещ Т) арг N,A,B рез О,Т начало цел i,целтаб О1[0:N],вещ Т,Т1 i=1;O1(0)=N+1; пока i<=N нц O(i)=i;O1(i)=O(i);i=i+1; кц вермя обслуживания(O,A,W,T1);--получаем Т1,О пока Р="есть варианты" нц переход(N,P,O1);--генерация новой очереди время обслуживания(О1,А,В,Т);-получаем T если Т<=Т1 то Т1=Т;i=1; пока i<=N нц О(i)=O1(i);i=i+1; кц все кц конец |
||