УДК 004.42
Е. А. Кольчугина
ЭВОЛЮЦИЯ РАСПИСАНИЙ КАК СРЕДСТВО РАЗРАБОТКИ ПАРАЛЛЕЛЬНОГО АЛГОРИТМА ПОВЕДЕНИЯ ЦИФРОВОГО ОРГАНИЗМА
Предложена усовершенствованная модель цифрового организма, допускающая параллельное исполнение нескольких поведенческих блоков благодаря дополнению модели служебной структурой, называемой расписанием. Введенный набор операций над расписанием позволяет динамически получать новые параллельные алгоритмы поведения, что также можно рассматривать как эволюционный процесс.
Введение
Предложенное в работе [1] универсальное представление, позволяющее сохранять в составе линейной суперхромосомы цифрового организма как значения атрибутов, так и алгоритм поведения, обеспечивает ряд преимуществ, однако позволяет описывать только последовательный алгоритм поведения. В данной статье предлагается усовершенствованный подход, позволяющий задавать на основе исходной линейной структуры суперхромосомы
[1] параллельные алгоритмы поведения. Это достигается благодаря введению в состав суперхромосомы дополнительных служебных структур.
1 Особенности модели
Используя обозначения, введенные в [1], будем понимать под A = {a^} множество населяющих искусственный мир цифровых организмов, каждый из которых принадлежит к одному из множества видов C = {cj } . Поведение,
параметры идентификации и состояния организма задаются с помощью суперхромосомы, структура которой определена как упорядоченное множества локусов [1]:
StrSupChr = (/oq, loc2, ■■■, locn}, У loci е Loc = Params U BH, n = \Loc\,
где Params определяет множество всех возможных параметров; BH = {bhг-} -
множество всех возможных поведенческих блоков или неделимых алгоритмических единиц, обладающих смысловой законченностью. Здесь и далее |х| обозначает мощность множества X .
Важными особенностями модели [1] являются следующие:
- допустим полиморфизм реализаций поведенческих блоков, определяемых отображением realizegH ■ BH ^ P (Code), где Code - множество
всех допустимых программных реализаций для УЬ1ц е BH , а P (Code) обозначает булеан множества Code;
- представление в суперхромосоме не самих значений и фрагментов кода, а их индексов позволяет представить код и данные программного агента единообразно; это унифицирует реализацию генетических операций, облегчает решение задач обеспечения миграции агентов по узлам сети, накопления
генетической информации в базе данных, обеспечения безопасности и удаления агентов с нежелательными свойствами.
Упорядоченное в соответствии со значениями функции индексирования indLoc : Loc ^ Nq+ подмножество локусов LocBH с Loc, LocBH = BH может рассматриваться как модель линейного алгоритма, где значения функции индексирования для локусов определяют порядок выполнения поведенческих блоков.
Однако поведенческие блоки в модели [1] в общем случае могут выполняться параллельно и независимо друг от друга. Единственными связями между поведенческими блоками являются связи по данным, возникающие благодаря наличию общих переменных состояния, являющихся подмножеством множества Params. Различный порядок изменения этих параметров может повлиять на приспособленность цифрового организма. Например, если аналог «питания» выполняется раньше проверки текущего значения запаса внутренней энергии организма на превышение минимально допустимого уровня, организм имеет больше шансов на выживание, чем в случае, когда те же действия производятся в обратном порядке. Следовательно, в модели возможно получение новых типов эволюции, связанных не с изменением значений локусов суперхромосомы, а с изменением порядка выполнения поведенческих блоков.
Параллельный алгоритм выполнения поведенческих блоков можно задать с помощью дополнительной матричной структуры, которую будем называть расписанием. В модели искусственной химии с матричным умножением (matrix-multiplication artificial chemistry) [2] используется преобразование линейного представления битовой строки ДНК в матричное, которое называют фолдингом, проводя аналогию с фолдингом белков. Но в отличие от
[2], рассматриваемая далее модель ориентирована не на преобразование основной смысловой части цифровой ДНК через выполнение операций над матрицами, а на построение и интерпретацию служебных структур, что и обусловливает ее специфику.
2 Расписание и операции над расписанием
Назовем расписанием матрицу вида
Q Ф^П./ Q е Q •
где Q - множество всех возможных расписаний.
Матрица Q задает пространственно-временную упорядоченность выполнения поведенческих блоков, входящих в алгоритм поведения цифрового организма:
q11 q12 ••• q1n
q = q21 q22 ••• q2n
_qm1 qm 2 ••• qmn _
где n - количество параллельных ветвей; m - максимальная длина ветви или
количество ярусов; qj е Im(indLoc (ocBH )) Null, LocBH c Loc , где
Im (ind^oc (Loc) - область значений функции индексирования; Null - особое «пустое» значение, обозначающее отсутствие или неопределенность.
Элементы матрицы qj, соответствующие номерам локусов суперхромосомы, будем интерпретировать как коды макроопераций, входящих в состав параллельного алгоритма. Соответственно, Null обозначает отсутствие операции.
Если принять, что Q с Params с Loc , то расписание выполнения поведенческих блоков также становится частью генома особи и может модифицироваться в результате выполнения генетических операций, введенных в [1].
Пусть indLoCBH : Locbh ^ Nq+ есть функция индексирования, заданная
на Locbh с Loc и сохраняющая упорядоченность локусов, заданную indLoc,
но Blocfc є Loc : indLoc (lock) Ф indLocBH (lock). Введем операции образования
расписания на основе первичной линейной структуры путем ее сгибания (фолдинга) и укладки в виде матрицы. Будем различать два вида операции фолдинга: горизонтальный и вертикальный. Горизонтальный фолдинг соответствует укладке линейной структуры в матричную по строкам, при этом известно количество строк, но не известно количество столбцов:
\LocBh
і=1
HFold (locbh , m) = Q Q=і {qj"=1
lY
indLoc (lock ) L - 1)
Vv
\LocBH I
m
+ j
A
3lock є LocBH : indLocBH (lock ) = L - 1)
Null, ( -1)* m + j)> \Locbh|,
<(L°cbh{
\LocBH I
m
+(j -1)
/j
здесь и далее |~X обозначает операцию округления X до ближайшего большего целого.
Операция вертикального фолдинга соответствует укладке линейной структуры в матричную по столбцам, когда известно количество столбцов, но не известно количество строк. Операция может быть определена при помощи операций горизонтального фолдинга и транспонирования:
T
VFold (LoCftH, n) = [HFold [Loc^h , n ) .
Операция добавления новой строки позволяет дополнить матрицу новой строкой, заполненной элементами Null:
AddR(Q1) - ^, Q^ Q2 є Q,
Q1 -{{qj }I=1}"Q2 -{{qj =
Чц ='
Null,
i < m, i = (m + 1).
Операция добавления столбца может быть определена на основе операции добавления строки:
ЛййС (6 )= ЛййЯ (б ]
Операция удаления строки позволяет удалить из исходного расписания заданную строку:
яе/яса, к)=е2, а, е2 е б,
а={ С}"=} е2={ С}= ■
у, г' < к,
%+1), г ^ к-
На основе этой операции можно определить операцию удаления столбца: Яе/С(а,к) = Гяе/я([б1 ]Т ,к
Введем также операцию перестановки для двух элементов расписания: $пар(б1, к,/,ы, w) = 62, 61, 62 е 6,
Чц ='
a={ ci"=,• Q2={ rn,}"=,•
j=i jj=
q'ij, i g{£, u", j g{l, w",
qw, г' = u,j = w
quw, г = k ,j = l,
и сходную с ней операцию копирования элемента расписания:
Моуе(б1, к, /, ы, w) = 62,61,62 е (5,
-|И г -»и
a={{q J }m=i".„■ a={{qj i",}.„■
q. =
jj= jj=
fqj, г'ф u,J ф w,
Iqiw, г' = u,j = w
Перечисленные операции позволяют изменять расписание для каждого цифрового организма, следовательно, можно говорить об изменении параллельного алгоритма поведения цифрового организма благодаря изменению расписания при сохранении набора и реализаций макроопераций, т.е. об эво-
люции особого типа. Введем функцию S ch edule : A х T — Q, где T - время, заданное как линейно упорядоченное множество T = {t;- | (Vt;- е Nq+) ti < +i} . Данная функция позволяет для любого цифрового организма A = {ai} определить актуальное для момента времени t е T расписание Q е Q и провести исследование эволюции расписания.
3 Способы прочтения расписания
Пусть exec ) - функция выполнения макрооперации с кодом qj, ставящая в соответствие qj вычислительный процесс. Считая, что время T
задано как линейно упорядоченное множество, введем ряд функций, которые позволяют определить временные характеристики процессов, соответствующих выполнению макроопераций:
texC (qij) - момент времени, в который происходит начало выполнения процесса, соответствующего макрооперации qij е Q ;
texeC {qij ) - момент времени, в который происходит завершение выполнения процесса, соответствующего макрооперации qij е Q ;
texec (qij) = 4жс {qij)- ЙТ {qij) - общ^ длигелъгостъ интервала времени выполнения процесса, соответствующего макрооперации qj е Q .
Зададим на множестве вычислительных процессов
Гг-|от]П ("г 1 m "1n ~
Process ={\P^ij}. } , соответствующих Q ={{qij} } , VQе Q , два от-
l i=1J j=i I 1=1J j=i
ношения: < - отношение строгого порядка по времени выполнения,
(,quw е Q): (exec(qij) <exec(quw)) ((C ()< ЙГ (quw)); 11 - отно-
шение толерантности как допустимости произвольного порядка выполнения элементов расписания,
(qij, quw е Q): (exec (qij)1 )с (quw)) —(■- (exec {qij) <exec (quw))л -(exec (quw )<exec (qij))).
Если рассматривать столбцы матрицы Q как независимые ветви, очевиДно, что (у, q(i+i)j е Q)(exec (■) <1exec (+1)у)), и (j, (,-(j+1) е Q):
: (exec (■ )exec (■+1))).
Следует отметить, что каждое расписание Q допускает множество способов прочтения, т.е. на основе матрицы Q может быть построено множество параллельных алгоритмов.
Пусть Р^ = {р^^} есть множество способов прочтения матриц расписаний, т.е. множество параллельных алгоритмов, которые можно построить на основе матриц из 2 . Введем отображение Шегрг : 2 ^ Р (Рг g), где 2 -множество расписаний, а Р(Р^) - булеан множества способов прочтения.
Таким образом, введенное отображение позволяет выделить подмножества допустимых способов прочтения для данного расписания. Введем также отображение ШегргТ : 2 X Т ^ Р^ , которое позволит опеределить способ прочтения расписания, актуальный в данный момент времени.
Для У 2 е 2 наиболее очевидными являются два способа прочтения расписания, которые назовем базовыми:
- каждый столбец расписания
п п
2 = [а-2п ], и в! = 2, П в! = 0, 2]={Ц е е}},
!=1 !=1 1
рассматривается как последовательная ветвь
(Уб] с 2) (уц ], е ): ( (ехес (() <1 ехес )) ® (ехес () <1 ехес (^ ))
ветви могут исполняться параллельно друг другу:
, йк с 2 )(] е 2, уЦ1к е Як ): (ехес ( ) II ехес (к ));
,'а
каждая строка расписания 2 =
Q i={qij I qij е 0\.=1,
, U Qi = Q’ П Qi =0’
Q i=1 i=1
yi m
рассматривается как ярус, элементы которого выпол-
‘J=1
няются параллельно (Qi с Q )(qj-, qik е Qi): (ec (qij) 11 exec (q^ ); выполнение операций последующего яруса начинается только после того, как полностью будут выполнены операции предыдущего яруса:
(Qi,Qk с Q)((ij е Qi,Bqkj е Qk): )ec() <1exec(j)) ®
®(exec(qkj )< exec(qij )).
Дадим оценку времени выполнения расписания Q для каждого из способов прочтения:
T1 = max |]TW (. ) + ((n) +£ (n)),
I (=1 J j=1
m
T2 = Zmax{exec (qij )}”= + m (n) + tepnai (n)),
i =1 j=1
где (п) - функция, вычисляющая длительность интервала времени, необходимого для порождения п параллельных ветвей; (п) - функция, вы-
числяющая длительность интервала времени, необходимого для слияния п параллельных ветвей.
В общем случае 7 < 7^ и первый способ прочтения позволяет построить алгоритм с наименьшим временем выполнения. Однако, помимо времени выполнения, важной характеристикой для каждого программного агента является величина имеющегося запаса внутренней энергии. Значение этой величины может меняться в зависимости от порядка выполнения макроопераций, входящих в параллельный алгоритм. Поэтому второй способ прочтения также может обеспечить эволюционные преимущества.
Очевидно, что первый и второй способы прочтения отличаются способами разбиения исходной матрицы Q на подмножества. На основании выделенных способов могут быть получены и другие. Для этого исходную матрицу Q следует разбить на подмножества, представляющие собой матрицы меньшей размерности. Затем, применив к каждой из полученных матриц базовые способы прочтения, либо рекурсивно повторив процесс разбиения на матрицы меньшей размерности, можно получить новый способ прочтения расписания Q .
Следовательно, способ прочтения расписания можно описать в виде рекурсивной формулы, задающей отношение между формулами, определяющими способы прочтения для подмножеств данного расписания.
По аналогии с отношениями <1 и || выделим возможные отношения между подформулами:
вн
в
и
и
и
('^,вік С ві): (і< к) ^ (^ є вік,^є )(ехес() <ехес(qfg)
где вік - подмножества строк со смежными номерами, и
Ыегр(ві ) = раг(ерг(Qi1),.,Ыегргв ) ві = ) ..)і№ ,
(Щ,<2ік С <2і): ((vqfg є <2ік, vqyz Є ві} )(() II ^((fg ))),
где вік - подмножества столбцов со смежными номерами.
Введем понятие правильно построенной формулы, описывающей способ прочтения расписания.
Interp (Qi ) =
seq(Interp(),...,Interp( )),Qi
Qu
par (Interp (),-, Interp (Qiw) Qi = ) -Qiw ]: exec (qij) Qi ={qij }•
Введенное отображение InterprT : Q X T ^ Prg позволяет говорить о возможности изменения способов прочтения расписания во времени, а также исследовать динамику изменений. Следовательно, можно выделить еще один тип эволюционных изменений, который позволяет получить различные параллельные алгоритмы на основе одного и того же расписания.
Заключение
Рассмотренные в данной статье способы построения параллельных алгоритмов на основе линейной суперхромосомы с помощью дополнительных служебных структур позволяют говорить о возможности существования в модели [1] новых типов эволюции, соответствующих образованию структур более высоких порядков на базе линейной суперхромосомы цифровых организмов. Эти типы эволюции позволят получить цифровые организмы с более высокой степенью приспособленности при сохранении набора и программных реализаций макроопераций, что достигается благодаря совершенствованию параллельного алгоритма поведения.
Список литературы
1. Кольчугина, Е. А. Модель эволюционирующего программного обеспечения / Е. А. Кольчугина // Известия высших учебных заведений. Поволжский регион. -2006. - № 6 (27). - С. 78-86. - (Технические науки)
2. Dittrich, P. Artificial Chemistries - A Review / P. Dittrich, J. Ziegler, W. Banzhaf // Artificial Life. - 2001. - № 7 (3). - P. 225-275.