Алгоритм парных перестановок для решения задач оптимизации компоновки и размещения элементов РЭС: Учебное пособие, страница 9

Пусть в результате произвольного начального распределения нами сформированы Z блоков. Обозначим их через Xa, Xb, Xg,...,XZ. Подсчитав количество соединений между двумя блоками, например, между блоком Хa и блоком Хb, меняем взаимно местами по одному модулю из блока Хa и из блока Хb. После этого вновь считаем количество соединений между блоками. Если после перестановки количество соединений уменьшилось, то перестановка целесообразна. Если же увеличилось или осталось прежним, то перестановка нецелесообразна. Можно производить перестановку каждого модуля блока Хa с каждым модулем блоков Хb, Хg, ..., Хz, а затем каждого модуля блока Хb с каждым модулем остальных блоков и т.д. В результате можно получить минимизацию соединений между блоками. Чтобы упростить вычисления выведем формулу для определения целесообразности перестановки местами i и j модулей, находящихся в разных блоках. При этом следует учесть что при перестановке местами этих модулей количество соединений между блоком Xa и блоком Xb меняется на величину, равную изменению количества межблочных соединений переставляемых модулей с остальными, а непереставляемые модули на изменение количества межблочных соединений не влияют.

Обозначим через -количество внешних соединений модуля с блоком Хb;

- количество внешних соединений модуля  с блоком Хa;

- количество внутренних соединений модуля  блока Хa с другими модулями этого же блока;

 - количество внутренних соединений модуля  блока Хb с другими модулями этого же блока;

- количество общих (прямых) соединений между переставляемыми модулями  и.

Приняв такие обозначения, определим исходное (до перестановки) количество межблочных соединений Fo, связанное с модулями  и , которые предполагается переставить местами. Величина Fo будет равна сумме внешних соединений  и , но из-за того, что общие (прямые)  соединения между переставляемыми модулями учтены и в значении , и в значении , то есть дважды, а надо их учесть только один раз, то из суммы  +  необходимо вычесть количество общих (прямых) соединений .

Таким образом:

Fo =  +  - .

После перестановки модуля  в блок Xb, а модуля в блок Xa, внутренние соединения переставляемых модулей станут внешними, а внешние соединения станут внутренними, за исключением общих (прямых) соединений. Поэтому количество межблочных соединений, связанных с модулями  и , после перестановки станет равным :

, а изменение количества межблочных соединений:

.

Таким образом целесообразность перестановки i - го модуля, находящегося в блоке Хa, с  j - м модулем, находящимся в блоке Хb,  определяется по формуле

,     (2.2)

где  - функционал для модулей   и ;

 - количество внешних соединений модуля  с блоком Хb;

- количество внешних соединений модуля  с блоком Хa;

 - количество внутренних соединений модуля  блока Хa с другими модулями этого же блока;

 - количество внутренних соединений модуля  блока Хb с другими модулями этого же блока;

- количество общих (прямых) соединений между переставляемыми модулями  и .

Если  £ 0, то перестановка этих модулей нецелесообразна, то есть эта перестановка не ведет к уменьшению числа межблочных соединений, а ведет к их возрастанию или не изменяет их количество. Если  > 0, то перестановка целесообразна. В рассмотренном выше случае предполагается, что производится первая попавшаяся целесообразная перестановка. Однако лучше использовать алгоритм, в котором вычисляются значения функционалов DF для всех пар модулей и из всех возможных целесообразных перестановок пар модулей выбирается та пара модулей, перестановка которых дает максимальное уменьшение количества межблочных соединений (рис. 2.1), а не первая попавшаяся целесообразная перестановка. Подсчитав функционалы всех пар модулей и, произведя перестановку двух модулей, для которых функционал имеет максимальное положительное значение, вновь производят вычисления всех функционалов для этих двух блоков. Если окажется, что для каких-либо двух модулей максимальный функционал больше нуля, то снова производят перестановку и так несколько раз, до тех пор, пока все функционалы будут равны или меньше нуля. Следует подчеркнуть, что после каждой перестановки все функционалы вычисляются вновь. В результате таких перестановок достигается обычно локальный минимум межблочных соединений. Близость его к глобальному минимуму, то есть степень оптимизации, существенно зависит от начального (исходного) распределения модулей между блоками.