Файл: Судовые системы автоматического контроля (системный подход к проектированию)..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.10.2024

Просмотров: 144

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Укрупненная блок-схема алгоритма компоновки КФУ в мон­ тажном пространстве изображена на рис. 5.15. Здесь представлены следующие операторы:

— проверка выполнения условия закрепления всех вершин

мультиграфа G =

(R, V) на множестве мест

Р =

\P t)

монтажного

пространства;

 

 

 

 

D 2 — поиск незакрепленной вершины,

имеющей

наибольшую

связь с закрепленными;

 

 

 

Р3 — проверка

наличия неопределенности I

рода

( т = 1).

Рис. 5.15.

Под неопределенностью I рода будем понимать ситуацию, когда в результате анализа матрицы связности оказывается, что ряд не­

закрепленных вершин имеет одинаковую связь с уже закреплен­ ными и требуется дополнительный анализ, чтобы выделить вершину,

с которой можно было бы продолжить алгоритм;

D, разрешение неопределенности I рода;

Db поиск для выбранной незакрепленной вершины места на монтажной плоскости в соответствии с критерием (5.5.3);

200


Рв —проверка наличия неопределенности II рода. Под неопре­

деленностью II рода понимаем ситуацию, когда существует несколько свободных мест с равными минимальными суммами расстояний от всех уже закрепленных вершин;

D7 — разрешение неопределенности II рода;

Ds — закрепление выбранной вершины за монтажным местом.

Представим укрупненный алгоритм компоновки КФУ в виде схемы процесса программирования для реализации алгоритма на

ЭЦВМ в соответствии с введенными укрупненными операторами.

Для реализации обобщенных операторов Р ъ D 2 требуются следую­ щие операторы:

F х

— ввод данных;

 

 

 

F 2

— присвоение значений j = 1,

i =

0, t = 1, т = 0,

s = О,

f = 0;

 

af,

учитывающего

размер

F з — формирование коэффициента

КФУ

и закрепление его за монтажным местом;

 

Р4 — проверка условия а;- <С 0 (закреплена выбранная вершина

или нет); Рь — проверка условия / = 0 (зафиксирована выбранная не­

закрепленная вершина или нет);

Кв — счетчик количества просматриваемых вершин (выполняет

операцию / + 1);

Р1 — проверка условия j ■ < Ф 3 (Ф 3— число незакрепленных

вершин);

 

 

 

Р8

— проверка

условия

f =

0 (совпадает с оператором Ръ)\

Р 9

— проверка

условия

t =

Ф 4 (t — текущее количество за­

крепленных вершин, Ф 4 —

число вершин мультиграфа);

/Сю — счетчик количества закрепленных вершин (выполняет опе­

рацию t + 1);

А 1г— вычисление т = т + Сц (суммарное число связей за­ фиксированной незакрепленной вершины со всеми закрепленными вершинами);

Р 12— проверка условия

t <

Ф 3 (Ф 2— количество закреплен­

ных вершин);

 

 

А 13 — вычисление s = т

s

(s — суммарное число связей пре­

дыдущей зафиксированной незакрепленной вершины со всеми за­ крепленными вершинами);

Р и — проверка условия

s x >

0;

 

 

 

 

 

Р п — проверка

условия

s x

=

0;

 

 

 

 

 

Р ig — проверка

условия

б =

Ф 3 (б — текущее

значение числа

незакрепленных вершин);

 

 

 

 

 

 

 

 

/г17 — присвоение значений

k =

1,

/ =

0 и j

=

i;

F 18— присвоение значений

г = /,

/

=

1 и t =

1;

К 19 — счетчик текущего значения числа незакрепленных вершин

(выполняет операцию б = б +

1);

F jo — формирование р = i,

k = 0, s = т \

F — присвоение значения

и/{ = р (ик — номер ячейки памяти

ОЗУ);

 

201


/С22 — счетчик числа вершин, имеющих одинаковое суммарное

количество связей просматриваемых незакрепленных вершин с за­

крепленными вершинами (выполняет операцию

k =

 

k +

1);

 

F 2 з — присвоение

значения

ut =

0 и / =

k\

 

 

 

 

 

Р 24— проверка

условия I =

 

М (М — количество

незакреплен­

ных вершин, имеющих равное суммарное количество связей);

F 25— формирование

р = i

и

присвоение

значения

k =

1;

А 2в — вычисление

uk =

р;

 

имеющих одинаковое

суммарное

К 27 — счетчик

числа

вершин,

количество связей

(совпадает с оператором К 2 2 )',

 

 

 

 

 

F 28— присвоение значения

k =

М.

 

 

 

P lt D 2 имеет

Схема программирования обобщенных операторов

вид:

/Г86£7, 17, 19Р

р

|

р

-

 

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

20

 

 

 

 

8

 

18

 

 

 

 

 

 

 

 

 

r l

1

1 3

 

4-1

г 5

 

 

 

!16^^2 I-^5t

 

 

1V

h

i

20 25

Цз

 

3

18

 

 

24

16

 

 

 

 

16

 

 

16I1171

492021i

a2' 23a241

25^26'2728I•

iр 15 Т24’28Р,.тF

 

5p

/тир

F

 

К F P

!5,2if

A

К

F

?

 

 

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим особенности работы этого алгоритма. После введе­

ния исходных данных (оператор F 4) все текущие переменные алго­

ритма приводятся в исходное состояние (оператор F 2). Затем начи­ нается поиск первой незакрепленной вершины и ее фиксация для вычисления суммарного числа связей зафиксированной незакреплен­

ной вершины со всеми вершинами, которые к данному моменту за­

креплены.

Операторы работают в следующей последовательности. Выби­

рается первая по порядку вершина (оператор F 3) и проверяется, закреплена ли данная вершина или нет (оператор Р4). Если вершина

не закреплена, работает оператор Р 5, проверяющий, фиксирована ли

какая-нибудь вершина. При выполнении этого условия управление передается операторам Кв и Р7. Первый из них показывает число незакрепленных вершин, а второй проверяет, равно ли текущее зна­ чение числа незакрепленных вершин исходному числу или меньше его. Если эти числа совпадают, то управление передается алгоритму

раскрытия неопределенности первого рода, если нет — оператору F3.

Если просматриваемая вершина не зафиксирована, ее необходимо

зафиксировать,

что и выполняют операторы F и /С19. Последний

пересчитывает

число зафиксированных незакрепленных вершин

с тем, чтобы в дальнейшем сравнить его с общим числом незакреплен­

ных вершин. Если вершина закреплена (оператор Р 4), то проверяется,

имеется ли зафиксированная незакрепленная вершина (оператор Р8). Если такой вершины нет, работает оператор Кв- Далее определяется, равно ли число закрепленных вершин общему числу вершин. Если

равно, то управление передается к оператору со, который выводит

на печать результаты компоновки, если нет, производится вычисле­ ние суммарного количества связей зафиксированной незакреплен­ ной ячейки со всеми закрепленными ячейками (операторы Кю< А ц *

Р 12).

Оператор Р 1 2 проверяет, со всеми ли закрепленными верши­

нами

подсчитано суммарное количество связей. Если нет — выби­

202


рается следующая закрепленная вершина, если да, то производится поиск той незакрепленной вершины, у которой суммарное количество связей с закрепленными вершинами наибольшее (операторы А 13, Р и). Эта вершина запоминается по адресу и0. Когда таких вершин не­

сколько,

все они запоминаются по адресу ик (операторы Р 15, F 25,

А 2в» Кг?)- Число

незакрепленных вершин, имеющих одинаковое

максимальное суммарное количество связей, фиксирует оператор F 28,

причем все эти вершины запоминаются с адреса и1. Операторы F 23

и К г2 предназначены для записи нулей в ячейки ult

иг, . . .,

им- ь

если сработают операторы F 20 и F 21. После того, как все незакреп­

ленные

вершины

проверены и проанализированы,

через

опера­

тор Я 16 управление передается к оператору раскрытия неопределен­ ности I рода (D4) или к оператору поиска монтажного места для

закрепления найденной вершины и последующего его закрепле­ ния (D6).

Для раскрытия неопределенности I рода требуются следующие

операторы:

 

 

 

 

 

 

 

 

 

 

 

 

Р 29— проверка

условия

т

1,

т. е.

имеется

ли неопределен­

ность

I

рода;

 

 

 

 

 

 

 

=

0 , k =

0 , б =

1, i =

 

Кзо — присвоение значения / =

1, т

ик\

F ах — формирование ау-;

 

 

 

 

 

 

 

 

 

 

Р а2— проверка условия а,-

=

0;

 

 

 

 

 

 

 

Кзз — счетчик числа

просмотренных вершин;

 

 

 

К34 — вычисление т

= т

+

Сц\

 

 

 

 

 

 

 

Р 35 — проверка

условия

б =

Ф 3;

 

 

 

 

 

 

Км — счетчик числа

незакрепленных

вершин

(выполняет

опе­

рацию

 

б = б + 1);

 

 

 

 

 

 

 

 

 

 

 

 

F 31

— формирование zk =

т

(запоминание);

 

 

 

Рзв— проверка

условия

k = М\

 

 

 

 

 

 

К3 9

— счетчик

числа

вершин,

подлежащих закреплению

(вы­

полняет операцию

k =

k +

1);

 

 

 

 

 

 

 

 

К40 — формирование

s =

z0,

k =

0;

 

 

 

 

 

AiX — вычисление

= zk A- s;

 

 

 

 

 

 

 

P 42 — проверка

условия

s 4 >

0;

 

 

 

 

 

 

Я43 — проверка условия

s =

0;

 

 

 

 

 

 

 

Fu — формирование

s =

zk\

 

 

 

 

 

 

 

 

K45— проверка

условия

k =

M;

 

 

 

 

 

 

Kie — счетчик числа

вершин,

подлежащих закреплению (совпа­

дает с /С88);

 

 

 

k =

0, j

=

0;

 

 

 

Ftf — присвоение значений

 

 

 

AiB — вычисление s x = zk— s;

 

 

 

 

 

 

 

Pi 9

 

— проверка

условия

 

=

0;

 

 

 

 

 

 

/С50 — счетчик

числа

вершин,

подлежащих закреплению

(сов­

падает с /С39);

 

 

 

 

 

 

 

 

 

 

 

 

Р 5 1 — проверка условия

k =

М;

 

 

 

 

 

 

Л 52 — вычисление Zj

= ик\

 

 

 

 

 

 

 

 

 

Кьз — счетчик нового числа вершин,

подлежащих закреплению,

после

раскрытия

неопределенности

I

рода (выполняет

операцию

/ = /

+

1);

 

 

 

 

 

 

 

 

 

 

 

 

203


Р54 — формирование М = /,

k = 0;

Л55— вычисление =

zk\

 

Рав— проверка условия

к =

М\

КЬ7 — счетчик числа вершин, подлежащих закреплению (совпа­ дает с /С39).

Операторная схема программирования обобщенных операторов Р 3 и Db имеет вид:

 

5 8

 

 

3 4

 

 

3 7

 

40

 

 

 

4 6

 

1 6 Р 4 3 4 / 7 3 8 / 7

Р

Т 3 6 / Г 3 2 Д

n

f / Г З З / 7

р

t Д 'ЗО 3 8 /7 4 6

Л

D

Т

 

r 2 9 I

3 0 З Г 32 I i v 3 3

3 4 ^ 3 5 I v 3 6

37

3 8 1 ', ' 3 9

40

 

41

42 I

46

4 6

47

j

w

.

51

ap s

5 4

 

 

 

; рт f

a ! " ■

:aS34

, 4i , -

 

 

 

Кь,-

Для раскрытия неопределенности I суммарного количества связей вершин, и заполненных в ячейках памяти СЗУ и0, ными вершинами. Выбираются те из них, ное суммарное количество связей

рода производится оценка подлежащих закреплению ult . . ., ит с незакреплен­ которые имеют минималь­

Ф з

mk = min £ mk + с<*>,

где k — номер вершины, подлежащей закреплению, и запоминаются в тех же ячейках памяти ОЗУ, в которых были записаны номера вер­

шин, подлежащих закреплению, до раскрытия неопределенности.

Операторная схема программирования обобщенных операто­

ров Р 3 и Da работает следующим образом. Проверяется наличие не­

определенности I рода (оператор Р 2 9). Если неопределенности нет, то управление передается оператору Di обобщенной блок-схемы,

если

есть — выбирается

первая вершина, подлежащая закрепле­

нию;

индексу «(» присваивается ее значение и переменным /, т ,

k, 8

присваиваются значения

1, 0, 0, 1 соответственно (оператор

F 30).

Затем осуществляетсяпоиск всех незакрепленных вершин (опера­ торы F 3 1 ,Р 32, АГ33), вычисление суммарного количества связей вы­ бранной вершины со всеми незакрепленными вершинами (опера­ торы А34, Р 35, Кза) и запоминание этого значения (оператор F S7). Оператор Р 38 проверяет, все ли вершины, подлежащие закреплению, проанализированы. Если нет, то оператор /С38 выбирает следующую по порядку вершину, подлежащую закреплению; если да — управ­ ление передается алгоритму определения минимального значения

суммарного количества связей (операторы f 40,

Л41, Р 42, Р 43, Р44,

Р4 5 , Ки). После этого определяются вершины,

подлежащие закреп­

лению (операторы Р47, Л48, Р49, К-Оо) и запоминаются (операторы Р 51,

Л62, Къз) и снова переписываются в ячейках памяти ОЗУ, в которых

они были записаны до раскрытия неопределенности I рода (опера­

торы f 54, Л 55, Р 5в, К„).

Перейдем к оператору Di укрупненной блок-схемы алгоритма компоновки. Введем следующие операторы:

Р58— присвоение значений / = 0, п = 0, т = 0, б = 1, s = 0;

F 59 — формирование н = ы„;

204