
книги из ГПНТБ / Цой, С. Синтез оптимальных сетей в системе управления горными предприятиями
.pdfвремени. Печать промежуточных результатов.
26.Корректировка временных оценок работ критическо го пути.
27.Корректировка всех рабочих массивов и подготовка
кновой итерации. Уход на блок 14. Первые девять блоков
этого вычислительного процесса реализуются с помощью программы «Ввод, контроль, компоновка». Ниже приведены
операторные схемы основных блоков 14 и 15 |
(алгоритмов |
||
В и А). |
Синтез оптимального сетевого |
графа |
(алго |
Б л о к 14. |
|||
ритм В). Метод построения оптимального сетевого |
графа |
||
по критерию |
минимума продолжительности |
критического |
пути рассматривался в третьем параграфе главы III. Блоксхема этого алгоритма представлена на рисунке 6.10.
Назначение операторов:
1.Ввод и подготовка исходных данных.
2.Формирование рабочих массивов.
3.Проверка: все ли вершины контура 1 просмотрены.
4.Блок восстановления.
5.Вычисление Lk*.
6. Анализ: все ли вершины массива К проверены для
£е/.
7. Определение L * для г е /.
8.Подготовка к выполнению алгоритма А.
9.Алгоритм А . Вычисление LP-Hдля i^I.
10.Пересчет ранних начал работ графа для £ = 1, 2 , . . , , N (N — количество вершин на графе).
160
11. Анализ на конец (все ли полные контуры 1 просмот рены).
12.Конец.
Бл о к 15. Выбор оптимальной последовательности вы полнения работ, принадлежащих полному контуру (алго
ритм А). Блок-схема алгоритма А представлена на рисун ке 6.11.
Назначение операторов:
1. Построение таблицы параметров U £*, Lt, L * работ
■полного контура.
2.Выбор минимума L*.
3. |
Определение m in{X j}. Анализ: Lt = 0 для всех i(p— |
= 0)? |
Анализ: для i с min Lt значение L * ■=max (L**}? |
4. |
|
5. |
Ц р = 0} |
Проверка условия (3.2) для всех ik. |
1 1 -9 1 |
161 |
6.Формирование параметров для /'*.
7.Проверка условия (3.3).
8.Проверка условия (3.4).
9.Анализ: все ли ik просмотрены. 10. Присвоение индекса р для г*. 11. Вычисление gi и 02.
12.Преобразование элементов исходной таблицы.
13.Анализ на конец вычислений.
14. |
Присвоение очередного индекса pi всем i ( p = 0). |
15. |
Конец. |
Описание программы синтеза оптимального сетевого графа при ограниченном объеме
складируемых ресурсов
Программа, реализующая рассмотренный алгоритм, за нимает 2000 восьмеричных ячеек (0000— 1777) и использу ет все индексные ячейки.
Распределение оперативной памяти (ОП) следующее:
0020— 0137 |
| константы и рабочие ячейки. |
|
|||||
0417— 0441 |
|
||||||
|
|
|
|
|
|
||
0240— 0277 |
| программа счета. |
|
|
|
|||
0442— 1537 |
|
|
|
||||
1550— 1777 |
— рабочие массивы. |
|
|
|
|||
2101— 17777 |
|
|
|
||||
Стандартные блоки: |
|
|
|
|
|
|
|
Блоки |
(0140— 0162) |
Iосуществляют |
вызов |
(запись) пор- |
|||
|
(0201— 0220) |
1ции с магнитной ленты (МЛ). |
|
||||
Блок |
(0163— 0200) |
печатает число в заданном виде. |
|
||||
Блок |
(0221— 0237) |
СП-16 переводит целое |
число |
из |
|||
|
|
двоичной с/с в десятичную, |
|
||||
Блок |
(0300— 0404) |
сортирует |
произвольный |
массив |
по |
||
|
|
возрастанию |
одного |
или несколь |
|||
|
|
ких реквизитов, |
|
|
|
||
Блок |
(0405— 0416) |
находит сгь 02. |
|
счета на |
|
||
Блок |
(1540— 1542) |
печатает |
программу |
|
|||
|
|
БПМ-20. |
|
|
|
|
|
Блок |
(1543— 1546) |
записывает на МЛ программу счета. |
Распределение памяти под рабочие массивы дано в таб
лице 6.4.
Все программы могут быть записаны на МЛ. В этом слу чае ввода с перфоленты не будет. Расположение программ
имассивов на МЛ представлено в таблице 6.5.
Входе работы выдается следующая информация:
а) номер итерации; б) значение критического пути <72;
в) величина затрат Zi0K
162
Место в МОЗУ
Условное обозна |
|
|
чение массива |
начало |
конец |
|
||
D * * |
2101 |
4050 |
D* |
4051 |
6020 |
2) * * * |
6021 |
7770 |
D k |
6021 |
7770 |
L |
10000 |
14704 |
К |
15670 |
17163 |
М |
17164 |
17777 |
и |
10000 |
16654 |
D ' |
15670 |
17637 |
D " |
15670 |
17637 |
L " |
10000 |
15667 |
Таблица 6.4
Примечание (коды)
i*, |
bi, |
a t, |
где |
i* — номер работы, |
|
вводимой в цепочку |
|||||
г*, |
D i , |
du где i* — вершина кри |
|||
тического пути |
|
||||
|
L i , |
L t* |
|
|
|
|
± |
0000 |
0000 |
If* |
|
|
( i, |
j, |
t i ) |
|
1 |
|
0000 |
0000 i |
|
||
{ L i * , |
U ) |
|
|
||
|
(000000 L i ) |
|
|||
|
(0000 0000 i) |
|
|||
|
(i, |
j, |
ti) |
|
|
0000 0000 *in °
(fliy 0
( i, J> h)
|
При выполнении |
условия 2 (0)< йо |
на печать |
выдается |
||
решение: |
|
|
|
|
||
|
г) |
номер работы (i); |
|
|
|
|
|
д) |
продолжительность работы ti, |
|
Таблица 6.6 |
||
|
|
|
|
|
|
|
|
|
|
|
Макси |
Начальное слово массива |
|
|
|
|
|
на МЛ |
||
|
|
Название программ |
мальное |
|||
|
|
кол-во |
|
|
||
|
|
и массивов |
|
|
после кор |
|
|
|
|
слов в |
исходного |
||
|
|
|
|
|||
|
|
|
|
8 с/с |
ректировки |
|
Программа «Ввод, контроль, ком- |
1330 |
00 0200 |
— |
|||
поновка» |
|
|||||
Программа счета |
|
2100 |
00 2300 |
— |
||
Блок «Упорядочения» |
|
140 |
07 6400 |
— |
||
Массив констант |
|
20 |
00 4760 |
— |
||
D** (0, Ъи а{) |
|
1г50 |
00 5000 |
— |
||
D' (0, Du di) |
|
1750 |
00 6750 |
— |
||
L по увеличению j |
|
4704 |
01 0720 |
047000 |
||
L по увеличению i |
|
4704 |
015624 |
053704 |
||
L по уменьшению j |
|
4704 |
022530 |
060510 |
||
V |
по уменьшению i |
|
1750 |
036310 |
074370 |
|
Dh (0,0, ti или 0,0, |
|
6654 |
027434 |
065514 |
||
|
|
ieK |
|
4704 |
040260 |
100750 |
L по уменьшению i |
|
|||||
К |
по увеличению j |
|
ИЗО |
045164 |
107350 |
|
L" |
|
6400 |
100750 |
— |
||
L" |
по уменьшению j |
|
6400 |
107350 |
— |
16S
е) раннее начало L Р-н;
ж) используемые ресурсы rt на работе г.
Пункты г, д, е, ж повторяются для каждой вершины гра
фа.
При включенном положении ключей 1, 2 и 3 печатаются промежуточные результаты:
1.Номер итерации.
2.Массив D***, где сформированы Lf-H.
3.Массив D**, где хранятся Lt*.
4.Массив М для вершин рассматриваемого контура, рассортированный по уменьшению значений L * и увеличе нию значений ti9 Lt.
5.Результаты, полученные при работе алгоритма А :
а) порядковый номер работы, вводимой в цепочку; б) номер работы г*;
в) раннее начало ik-й работы;
г) продолжительность г*-й работы; д) длина максимального пути от г*. -й вершины до мажо
ранты ;
е) значение oi, 02.
6.Массив М после преобразования, L[k)—Lik—(Lj+^г).
7.Печатаются результаты, что и в пункте 5.
8.Новые значения t?-н после пересчета, когда закончит
работу алгоритм А для очередного полного контура. Пункты 6— 8 повторяются для всех вершин контура. После расположения в цепочку работ первого контура
рассматриваются все остальные контуры и повторяются пункты 4— 8.
9. Значение критического пути 0 2 и величина Z (4
10.Коды массивов L" и D'.
11.После корректировки таблицы 3.1 на каждой итера
ции по ключу 02 печатаются следующие массивы: D*, мас сив L, рассортированный по увеличению j, массив L, рассор тированный по возрастанию i и по уменьшению j, и, нако
нец, массивы L', D k. Затем печатается номер новой итерации и повторяются пункты 2— 11. При печатается окон чательное решение.
Заметим, что пункты 4— 6, т. е. печать промежуточных результатов алгоритма А, выполняются по ключу 03. Далее все массивы выдаются на печать в восьмеричной системе счисления.
Инструкция работы за пультом
1. Поставить МЛ 2— 2 с исходными данными, получен ными после работы программы «Ввод, контроль, компонов ка».
164
2.Ввести программу «Синтез оптимального сетевого графа при ограниченном объеме складируемых ресурсов».
Контрольная сумма — 7777 7777 7777.
3.Включить ключи 1 и 2, если нужны промежуточные результаты.
4.Занести в СчАК 1000.
5.Автомат, пуск!
6.Останов 2042 — конец счета.
При останове 1033 следует увеличить содержимое ячей ки 0023, в которой находится значение Ло в восьмеричной системе счисления.
Если нужно изменить шаг h, то, сделав останов по коман де 1053, необходимо занести в ячейку 0024 новое значение
^ Н О Е •
Далее пуск с адреса 1053.
§ 6. АЛГОРИТМ СИНТЕЗА СЕТЕВОГО ГРАФА ПРИ ПЕРЕМЕННЫХ ВО ВРЕМЕНИ УРОВНЯХ НЕСКЛАДИРУЕМЫХ РЕСУРСОВ
Метод синтеза сетевого графа при переменных уровнях нескладируемых ресурсов рассматривался в главе V. Для реализации этого метода на ЭВМ «Минск-22» разработаны алгоритм и стандартная программа. В основу разработанно го алгоритма положены стандартные процедуры, описанные в первом параграфе данной главы.
Программа состоит из двух частей: «Ввод, контроль, ком поновка» и счет.
Укрупненная блок-схема для программы счета представ лена на рисунке 6.12.
Описание блоков:
Б л о к 1. Ввод исходных данных, формирование рабо чих массивов, подготовка информации для расчетов (про грамма «Ввод, контроль, компоновка»).
Б л о к 2. Определение для каждой вершины макси мального пути до мажоранты на графе с полными контура ми.
Б л о к |
3. |
Вычисление и пересчет L Р-н для работ i. |
Б л о к |
4. |
Нахождение для вершин полных контуров |
путей максимальной длины: Lt— входящих и Lt*— выходя щих.
Бл о к 5. Выбор порядка следования для контурных ра бот, вычисление их ранних начал Lp H.
Бл о к 6. Анализ: все ли контуры просмотрены. Да — работает блок 7, нет — блок 3.
Бл о к 7. Сортировка массива ранних начал по увели чению значений LpH.
165
Б л о к |
8. |
Определение фронта работ F(tk). |
|
|
Б л о к |
9. |
Выбор интенсивности использования ресур |
||
сов для работ фронта. |
|
|
||
Б л о к |
10. |
Анализ: достаточно ли наличного уровня ре |
||
|
|
сурсов R(tk) |
для |
осу |
|
|
ществления всех |
работ |
|
|
|
фронта F(tk) |
с макси |
|
|
|
мальной интенсивностью. |
||
|
|
Да — работает |
блок 11, |
|
|
|
нет — блок 18. |
|
|
|
|
|
|
Б л о к |
11. |
|
Вычисле |
||||
|
|
|
ние |
продолжительности |
|||||||
|
|
|
фронта © при макси |
||||||||
|
|
|
мальной |
интенсивности |
|||||||
|
|
|
тI = |
рI |
выполнения ра |
||||||
|
|
|
бот. |
|
|
12. |
|
Выдача |
|||
|
|
|
|
Б л о к |
|
||||||
|
|
|
на |
печать |
результатов |
||||||
|
|
|
расчета: |
время |
tk |
на |
|||||
|
|
|
чала фронта F(tk) , про |
||||||||
|
|
|
должительность |
|
фронта |
||||||
|
|
|
©й, интенсивность для |
||||||||
|
|
|
всех работ фронта. |
|
|||||||
|
|
|
|
Б л о к |
13. |
Определе |
|||||
|
|
|
ние |
объема оставшейся |
|||||||
|
|
|
части работ. |
|
Вычисле |
||||||
|
|
|
|
Б л о к |
14. |
|
|||||
|
|
|
ние |
продолжительности |
|||||||
|
|
|
tt |
оставшейся части ра |
|||||||
|
|
|
бот |
L Пересчет L Р-н. |
|
||||||
|
|
|
|
Б л о к |
15. |
Анализ: |
|||||
|
|
|
все |
ли работы |
законче |
||||||
|
|
|
ны. |
Да — переходим |
к |
||||||
|
|
|
блоку |
22, |
нет — к блоку |
||||||
|
|
|
16. |
|
|
16. |
Корректи |
||||
|
|
|
|
Б л о к |
|||||||
|
|
|
ровка всех рабочих мас |
||||||||
|
|
|
сивов. |
|
17. |
Анализ: |
|||||
|
|
|
|
Б л о к |
|||||||
|
|
|
все |
ли |
работы |
|
фронта |
||||
|
Рис. 6.12. |
F(tk) |
|
выполнялись |
с |
||||||
|
максимальной |
интенсив- |
|||||||||
ностыо. Да — переходим к блоку 7, нет — к блоку 21. |
|
||||||||||
Б л о к |
18. |
Вычисление резерва |
времени |
работ фронта. |
|||||||
Б л о к |
19. |
Определение |
интенсивности |
г* |
для |
работ |
F(tk).
166
Б л о к 20. Выбор продолжительности фронта © при rt Ф
Ф$ 1 . Уход на блок 12.
Бл о к 21. Подготовка массивов к вычислению парамет ров для очередного фронта ^(^)при г£=7^=Рг на F(tk—i). Пере ход к блоку 7.
Описание программы «Синтез сетевого графа при переменных во времени уровнях нескладируемых
ресурсов»
Программа занимает в общей сложности 2000 восьмерич ных ячеек 0000— 1777 и использует все индексные ячейки 0001— 0017. Укрупненно в состав программы входят четыре блока, условное обозначение которых ABD, У, © и К.
Таблица 6.6
Условное |
Занимаемое |
Началь |
|
обозначение |
кол-во ячеек ный адрес |
Примечание |
|
блока |
в 8 с/с |
в МОЗУ |
|
A B D |
1730 |
0047 |
Основной блок |
Y |
0150 |
0450 |
Блок «Упорядочение вершин» |
0 |
1000 |
0440 |
Блок «Продолжительность фрон |
|
|
|
та» |
к |
440 |
1000 |
Блок «Контур» |
Перед началом вычислений все указанные блоки необхо димо записать на магнитную ленту, поскольку в оператив ной памяти (МОЗУ) они занимают одно и то же место.
Расположение блоков в МОЗУ показано в таблице 6.6.
При счете блоки вызы |
|
Таблица 6 .7 |
||||||
ваются в МОЗУ |
автомати |
|
||||||
чески. Блок ABD состоит в |
Условное |
Максималь |
|
|
|
|||
свою |
очередь из следую |
Начальное |
||||||
щих блоков: |
|
|
обозначение |
ное кол-во |
|
слово на |
||
выбора |
блока |
слов в 8 с/с |
|
|||||
А — алгоритм |
|
|
|
|
МЛ |
|||
оптимальной |
последова |
|
|
|
|
|
||
тельности выполнения |
ра |
AB D |
1730 |
1 |
3 |
014165 |
||
бот, |
принадлежащих |
пол |
Y |
0150 |
1 |
3 |
016116 |
|
ному |
контуру |
(алгоритм |
0 |
1000 |
1 |
3 |
016267 |
|
К |
440 |
1 |
3 |
017267 |
||||
В — алгоритм |
синтеза |
|
|
|
|
|
||
оптимального сетевого графа (алгоритм В) ; |
|
|
|
|||||
D — алгоритм |
синтеза оптимального сетевого графа при |
переменных во времени уровнях нескладируемых ресурсов (блок D).
167
В таблице 6.7 показано расположение блоков на магнит
ной ленте.
В программе используются различные рабочие массивы, которые хранятся на магнитной ленте. Первоначально эти массивы формируются из исходных данных в программе «Ввод, контроль, компоновка». В таблице 6.8 дана краткая характеристика всех этих массивов.
Условное обозна чение массива
D *
D * *
j y * * *
D k
D '
L по увеличению i j
L по увеличе нию j
L по уменыпению i
К
М
во |
в |
|
Максимальное кол- |
занимаемых ячеек |
8 с/с |
2000
2000
2000
2000
2000
5430
5430
5430
2000
2000
Таблица 6.8
Коды в массиве
±* , L f - K, i
±P i . V t
Примечание
Знак |
«минус» — признак фронта |
||
F ( t k ) . |
<х = |
1 — работа закончена, а = |
|
= 0 — |
работа не закончена |
|
|
Знак |
«минус» — для |
случая |
r i > V i
± U . L *
|
|
M |
1+ |
s* |
+ |
*■ |
||
i |
f |
•A t * k e ti |
if Jy i'i
Знак «минус» — для фиксации законченных работ, принадлежа щих полному контуру
Знак «минус» — признак полного контура
Знак «минус» — начало контура
f |
— признак фронта |
k |
— признак полного контура |
A t i |
— резерв времени i-й работы |
i, j |
— номера вершин |
iy Jf |
i'i |
|
Z, — временная |
оценка z-й |
ра |
|
|
|
|
боты |
|
|
|
i* Jt |
|
|
|
|
|
|
7 , ik |
|
|
Y — признак конца фронта |
|
||
|
|
|
ih — контурная вершина |
|
||
L i* n |
} |
машинные |
документы |
для |
||
tP - H |
L i |
l |
||||
алгоритма А |
|
|
||||
O, |
i |
J |
|
|
||
|
|
|
Распределение памяти для указанных массивов в МОЗУ и на МЛ представлено в таблице 6.9.
При работе программы на печать в десятичной системе счисления выдаются результаты расчетов после анализа оче редного фронта F(ik):
168
1.-\— 1— |— 1— 1— j— |— 1— |— \~.
2.Номер фронта F(tk).
3.Момент начала фронта tk.
4.Продолжительность фронта 0.
5.Номер работы i.
6.Интенсивность используемых ресурсов г* для г-й рабо
ты фронта. 7. Интервал.
|
|
|
Таблица 6.9 |
|
Условное обозначение |
Начальный |
Начальные слова |
||
массива |
адрес в |
|
на МЛ |
|
|
МОЗУ |
|
|
|
D* |
2000 |
1 |
3 |
100510 |
D** |
4000 |
1 |
3 |
102510 |
Dh |
6000 |
1 |
3 |
104510 |
15430 |
1 |
3 |
106510 |
|
D' |
15430 |
1 |
3 |
110510 |
L по увеличению i, j |
10000 |
1 |
3 |
114510 |
L по увеличению j |
10000 |
1 |
3 |
122140 |
L по уменьшению i |
10000 |
1 |
3 |
127570 |
L" по увеличению j |
10000 |
1 |
3 |
135220 |
L" по уменьшению i |
10000 |
1 |
3 |
142650 |
К |
15430 |
1 |
3 |
112510 |
М |
17400 |
1 |
3 |
— |
const |
0020 |
1 |
3 |
043700 |
Пункты 5 и 6 повторяются для всех работ фронта F(tk). Для последующих фронтов печатается аналогичная инфор мация (пункты 1— 7).
Инструкция работы за пультом
Перед тем как начать вычисления, на магнитной ленте следует записать все программы согласно таблице 6.7. Основ ная программа счета должна работать после того, как будут подготовлены на МЛ все рабочие массивы по программе «Ввод, контроль, компоновка».
1.Подготовить магнитную ленту 1— 3 к работе.
2.Включить печатающий механизм ТБПМ.
3.Считать с МЛ первый блок ABD.
4.Занести в СчАК 1440.
5.Пуск!
6.Останов СчАК 1661 — конец счета.