Этап "Построение иерархии"
sergey shishkinОсновываясь на функциональных возможностях использования обозначенных выше типов структур алгоритма, программист уже может отметить, что они задают универсальный и полный базис для написания почти любого представимого на текущий момент кода. Еще раз перечислим имеющиеся у эвольвера "программные инструменты":
- элементарные действия,
- элементарные признаки (в качестве условий к действиям),
- торможение как логическая инверсия признака,
- логическое комплексирование признаков операциями
OR
иAND
- и объединение признаков и действий в последовательность с использованием цепочки.
Эти инструменты в силу своей реализации, описанной в предыдущей главе, дают дополнительные возможности по сравнению с элементарными средствами, имеющимися в арсенале современного программиста. Выгодно отличается, например, операция AND
распределенная по времени. И самым главным преимуществом является способность такой программной системы (участвующей в соревнованиях в некоторой среде с оценкой сохранения владеющего этой системой организма) самостоятельно формировать макро-признаки на основе простых признаков среды и группировать последовательности действий эвольвера и алгоритмических процессов среды в новые макро-действия этого эвольвера.
От опытного программиста не ускользнет и тот факт, что этих средств мало для поддержания написанного кода в "чистоте". То есть универсальная программная база предоставляет слишком большую свободу в модификациях, и для развития проекта с названием "Алгоритмы выживания организма" необходимо ограничение возможностей таких модификаций гарантирующих, что ранее синтезированные алгоритмы поведения не будут повреждаться при синтезе новых алгоритмов. Такой же организационный рефакторинг в программной области будет детально описан далее в главе, посвященной ограничениям языков программирования. А сейчас необходимо рассмотреть первое применение этого принципа в более простом состоянии алгоритмического пространства для дальнейшей эволюции эвольвера. Эвольверу необходима возможность изоляции одного синтезированного алгоритма поведения от другого, то есть подобие инструмента формирования подпрограмм. Подпрограмма даёт возможность программисту развивать и исполнять алгоритм независимо от других алгоритмов. Эвольвер, конечно не пишет подпрограмм, но уже использует функциональную изоляцию в универсальной синтезирующей системе памяти.
Чтобы продолжить, вспомним детекторную и акторную области памяти, обозначенные в предыдущей главе, как место детектирования Повторимости и синтезирования соответствующей цепочки. Обобщим эту информацию и закрепим в виде терминов.
Узел области памяти — специализированный объект памяти, используемый в качестве элемента для синтеза цепочки и выявляющий Повторимость своего исполнения-активации сопряжëнно с соседними узлами.
Область памяти — это локализованная совокупность узлов, с использованием которой возможен синтез цепочки, объединяющей узлы, активированные последовательно и близко по времени, путем создания (или укрепления/ослабления имеющихся) структурных связей между ними. При этом цепочки, существующие в области памяти, укрепляются с появлением повтора сформировавшей их последовательности активаций и ослабляются с отсутствием таких повторов.
Здесь можно отметить, что функции области памяти не ограничиваются перечисленными выше процессами синтеза. Но на текущем этапе можно сосредоточиться только на них. При этом стоит упомянуть важность её процессов, вызванных:
- пресыщением области памяти по количеству хранимых цепочек, при котором слабые цепочки начинают соревноваться с активно используемыми и могут быть разрушены и переформированы;
- изменчивостью и взаимозависимостью цепочек хранимых в одной области памяти (дополнение, замещения частей, переброс активации), дающих ошибки при исполнении цепочек, но тем самым предоставляющих дополнительные средства синтеза новых алгоритмов, наподобие мутации и скрещивания для алгоритмов эпохи генов.
И давайте вернемся к аналогии с подпрограммами. Запоминаемая в области памяти цепочка из последовательности признаков и действий является внутренним способом эвольвера для записи структуры макро-алгоритма (подобно формированию кода функции на основе последовательности строчек вызовов других функций и условий, оценивающих признаки). При своём развитии эвольвер накапливает полезные синтезированные алгоритмы поведения в виде множества соревнующихся цепочек. Изначально для простого эвольвера есть только один способ такого накопления — единая область памяти, в которой одна за другой формируются связи новых последовательностей действий и признаков.
Мы подошли к фактору эволюции. На этот раз он не такой наглядный, как в примерах предыдущих глав с "Едой" и "Хищником". Но среда опять играет в нём ключевую роль, предоставляя эвольверу множество разнообразных ситуаций, для каждой из которых полезны отличающиеся алгоритмы. И в такой среде успешнее выживает тот эвольвер, который способен синтезировать и использовать бóльшее число алгоритмов!
Как эвольверу запомнить большое количество алгоритмов поведения? Как в реализации памяти убрать сильную связность этих алгоритмов? Как достичь изоляции одного алгоритма от другого?
Ответом на все эти вопросы может послужить появление в эвольвере нескольких обособленных областей памяти, которые обеспечивают его возможностью синтеза цепочек разных алгоритмов отдельно (каждый в своей области памяти). При этом у каждой вспомогательной области памяти должна быть возможность использовать базовые действия эвольвера. То есть необходим доступ к акторной области памяти, отвечающей за эти действия. Этот подход порождает несколько сложных моментов. Самым главным из которых является сложность разрешения конфликта управления между несколькими областями памяти (а значит разными алгоритмами), одновременно использующими одни и те же базовые действия. Но уже по традиции сложные моменты рассмотрим позднее. А пока перейдём к самому тривиальному случаю.
И для этого рассмотрим минимальное количество для нескольких областей памяти (то есть 2 области) и введем их специализацию по возможности непосредственно исполнить базовые действия организма. Так (детекторная) область памяти №1 не будет иметь непосредственного доступа к действиям, ответственность за инициализацию выполнения которых целиком возложим на (акторную) область памяти №2. При таком разделении между полученными областями памяти необходимы структурные связи, которые объединяют распределённое исполнение цепочки, локализованной в обеих областях. Эти структурные связи и служебные элементы, обслуживающие эти связи, становятся внутренними абстракциями эвольвера.
Внутренняя абстракция — часть структуры цепочки, локализованная между двумя областями памяти эвольвера.
Стоит ввести дополнительные обозначения для внешних структурных связей области и для внутренней абстракции по отношению к объединяемым ею областям.
Входная связь области памяти — структурная связь цепочки, локализованной частично в указанной области памяти, при этом указанная связь соединяет внешний по отношению к области элемент и узел этой области, который исполняется первым в этой области при последовательной активации узлов в исполнении этой цепочки.
Выходная связь области памяти — структурная связь цепочки, локализованной частично в указанной области памяти, при этом указанная связь соединяет внешний по отношению к области элемент и узел этой области, который исполняется последним в этой области при последовательной активации узлов в исполнении этой цепочки.
Внутренний признак — это внутренняя абстракция по отношению к той области памяти, для которой эта внутренняя абстракция структурно соединена с входными связями этой области.
Внутреннее действие — это внутренняя абстракция по отношению к той области памяти, для которой эта внутренняя абстракция структурно соединена с выходными структурными связями этой области.
Возвращаясь к рассмотренному примеру, можно отметить, что все выходы области памяти №1 (в том числе сгруппированные макро-признаки) являются внутренними действиями эвольвера. И эти внутренние действия с использованием внутренней абстракции становятся для области памяти №2 внутренними признаками.
Далее стоит рассмотреть упрощенную версию такой двухкомпонентной системы памяти, в которой область памяти №1 является признаковой областью памяти.
Признаковая область памяти — это ограниченная специализация области памяти, не использующая автоактивацию ("игровое поведение") для внутренних действий, но исполняющая их лишь в результате активации входных связей по обнаружению детекторами признаков.
![](/file/ada18253060f257eb175d.jpg)
Попробуем описать последовательность переживаемых эвольвером повторимых ситуаций среды, которые приведут к состоянию указанному на этой схеме.
![](/file/2e72dcc65cd82014d63d7.jpg)
В первом и втором этапе в пережитых ситуациях была выявлена полезная эвольверу закономерность среды по использованию Действия("№1") и Действия("№2"). В этапе №3 на основе игрового поведения была выявлена еще одна закономерность, фиксирующая, что последовательность Действие("№1") → Действие ("№2") имеет в среде отклик в виде Признака("А"). На этапе №4 был выявлен Повторимостью макро-признак{ признак("№1") ⇒ признак("№2") }
и выявлено полезное при этом макро-признаке эвольверу действие, которым оказалось макро-действие{ действие("№1") ⇒ действие("№2") }
. На этапе №5 была выявлена вредная закономерность по использованию Действия("№1") при наличии Признака("№3").
Выявляемая эвольвером закономерность является алгоритмом, согласуясь с его определением в этой работе. Некоторые такие алгоритмы-закономерности локализованы внутри эвольвера, но большинство исполняются, захватывая объекты и в эвольвере, и в его среде. Таблица описанных закономерностей была сформирована достаточно произвольно. Целью ставилось показать развитие системы алгоритмов поведения эвольвера, синтезированных разными способами:
- с использованием свойства Повторимость и с использованием подкрепления пользой;
- с увязыванием действия за условие (подкрепляющий признак) и за ограничение (тормозящий признак);
- с выполнением группировки синтезом макро-признака и синтезом макро-действия.
Описание приведенных этапов вышло лишь немного сложнее (за счет формирования внутренних абстракций) чем было бы в случае использования эвольвера с одной областью памяти. В силу большого сходства описание развития для более простого варианта опущено. А до полнофункционального иерархического варианта остался один шаг. Этот шаг — введение дополнительной активной области памяти, которая по своей локализации будет внутренней
Активная область памяти — это специализированная область памяти, в которой используется автоактивация узлов ("игровое поведение"). Название "активная" призвано подчеркнуть наличие автоактивации — значимого отличие активной области памяти от признаковой области памяти.
![](/file/927961ca43a9a4c8802e9.jpg)
Внутренняя область памяти — область памяти, входные и выходные связи которой соединены с выходными и входными связями других областей памяти, но не с детекторами и не с акторами эвольвера.
При введении внутренней активной области памяти должны сохраниться все ранее доступные способы построения алгоритмов поведения эвольвера. Поэтому нельзя вносить усложнения в реализацию сопоставления признака и действия эвольвера. Это сопоставление можно осуществить проведением признака сквозь внутреннюю область памяти без изменения, например, как это сделано для цепочки{ признак("Внутренний №5") ⇒ действие("Внутреннее №3") }
. В остальном внутренняя область памяти не мешает, а только добавляет возможности (как в выявлении макро-признаков, так и в формировании макро-действий) и тем самым способствует синтезу более сложных алгоритмов и сохранению большего их количества в памяти эвольвера.
Проведенный анализ развития иерархии структур в памяти эвольвера позволяет нащупать путь формализации простой нервной деятельности биологических организмов. Введенные термины соотносятся с основными процессами рассматриваемой системы. И с их помощью будет проще ответить на дополнительные и важные вопросы этой прикладной области алгоритмической модели. Следующие главы посвятим ответам на следующие вопросы:
- конфликты нескольких внутренних, активных областей памяти во время инициализации исполнения одного действия эвольвера;
- возможность внутреннего самоанализа путём усложнения взаимодействия областей памяти с направлением внутренних действий совместно и на активные акторные области памяти и на внутренние признаковые области памяти;
- способы прогнозирования результатов алгоритма поведения путём временной блокировки акторных областей памяти (торможением её узлов) и прорабатыванием исполнения с использованием внутренних абстракций и самоанализа.