Смекни!
smekni.com

Использование алгоритмов искусственного интеллекта в процессе построения UFO-моделей (стр. 5 из 9)

Рисунок 2.2 – Пример начального размещения муравья


2.2 Правила соединения UFO-компонентов

Пусть задана библиотека компонентов

, из которых необходимо собрать систему, заданную контекстной диаграммой, изображенной на рис. 2.1. Каждый компонент
библиотеки тоже характеризуется своим множеством входов
, а также – своим множеством выходов
(рис. 2.3).

Рисунок 2.3 – Контекстная диаграмма компонента

Входы и выходы контекстной диаграммы системы и компонентов имеют такую характеристику как тип. Существуют следующие правила соединения входов и выходов [11]. Вход In (n) контекстной диаграммы системы может быть присоединен к входу

компонента
, если тип In (n) совпадает с типом
. Это условие совпадение типов можно записать в виде равенства
(рис. 2.4).

Рисунок 2.4 – Соединение входа с входом


Выход Out (m) контекстной диаграммы системы может быть присоединен к выходу

компонента
, если тип Out (m) совпадает с типом
. Это условие можно записать в виде равенства
(рис. 2.5).

Рисунок 2.5 – Соединение выхода с выходом

Выход

компонента
может быть присоединен к входу
компонента
, если тип
совпадает с типом
. Это условие можно записать в виде равенства
(рис. 2.6).

Рисунок 2.6 – Соединение выхода с входом

Пусть контекстная диаграмма системы имеет вход a и выход b (рис. 2.7).


Рисунок 2.7 – Пример контекстной диаграммы системы

Пусть в библиотеку компонентов входит компонент С1 с входом a и выходом c и компонент С2 с входом c и выходом b (рис. 2.8).

Рисунок 2.8 – Примеры контекстных диаграмм компонентов

Тогда вход a и выход b системы могут быть соединены с помощью компонентов С1 и С2 так, как показано на рис. 2.9.

Рисунок 2.9 – Примеры соединений компонентов

2.3 Элементарное перемещение муравья

2.3.1 Перемещение из входа контекстной диаграммы

Пусть изначально муравей находится в конце входной стрелки In (n). Он может случайным образом выбрать из библиотеки компонентов любой компонент

, у которого есть вход
, который можно присоединить к входу In (n). После присоединения входа
компонента
к входу In (n) контекстной диаграммы, муравей "переползает" по входу
на компонент
и пытается присоединять "висящие" входы компонента
либо к еще свободным входам контекстной диаграммы системы, либо к еще свободным выходам других компонентов. Аналогично муравей пытается присоединять "висящие" выходы компонента
либо к еще свободным выходам контекстной диаграммы системы, либо к еще свободным входам других компонентов (рис. 2.10).

Рисунок 2.10 – Присоединение компонента к входу системы

Если после вышеперечисленных действий муравья у компонента

не осталось "висящих" входов и выходов, то муравей "выползает" из компонента
по входу
, через который он попал в этот компонент. На этом перемещения муравья прекращаются.

Если же у компонента

остались "висящие" входы и выходы, то муравей случайным образом размещается на любом из них. Если муравей оказался в конце "висящего" входа компонента
, то далее он должен действовать так, как описано ниже в пункте 2.3.3. Если муравей оказался в начале "висящего" выхода компонента
, то далее он должен действовать так, как описано ниже в пункте 2.3.4.

2.3.2 Перемещение из выхода контекстной диаграммы

Пусть изначально муравей находится в начале выходной стрелки Out (m). Он может случайным образом выбрать из библиотеки компонентов любой компонент

, у которого есть выход
, который можно присоединить к выходу Out (m). После присоединения выхода
компонента
к выходу Out (m) контекстной диаграммы, муравей "переползает" по выходу
на компонент
и пытается присоединять "висящие" входы компонента
либо к еще свободным входам контекстной диаграммы системы, либо к еще свободным выходам других компонентов. Аналогично муравей пытается присоединять "висящие" выходы компонента
либо к еще свободным выходам контекстной диаграммы системы, либо к еще свободным входам других компонентов (рис. 2.11).

Рисунок 2.11 – Присоединение компонента к выходу системы

Если после вышеперечисленных действий муравья у компонента

не осталось "висящих" входов и выходов, то муравей "выползает" из компонента
по выходу
, через который он попал в этот компонент. На этом перемещения муравья прекращаются.

Если же у компонента

остались "висящие" входы и выходы, то муравей случайным образом размещается на любом из них. Если муравей оказался в конце "висящего" входа компонента
, то далее он должен действовать так, как описано ниже в пункте 2.3.3. Если муравей оказался в начале "висящего" выхода компонента
, то далее он должен действовать так, как описано ниже в пункте 2.3.4.

2.3.3 Перемещение из входа UFO-компонента

Пусть изначально муравей находится в начале входной стрелки

компонента
. Он может случайным образом выбрать из библиотеки компонентов любой компонент
, у которого есть выход
, который можно присоединить к входу
. После присоединения выхода
компонента
к входу
компонента
, муравей "переползает" по выходу
на компонент
и пытается присоединять "висящие" входы компонента
либо к еще свободным входам контекстной диаграммы системы, либо к еще свободным выходам других компонентов. Аналогично муравей пытается присоединять "висящие" выходы компонента
либо к еще свободным выходам контекстной диаграммы системы, либо к еще свободным входам других компонентов (рис. 2.12).