Оптимизация расписания методом полного перебора

 

Алгоритм выбора состоит из трех этапов

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;

кц

все

кц

конец