Хаос и примитивная душа гидротетропусов

Загадка "Я" - это, наверное, главная тайна Вселенной. Мы всегда противопоставляли дух и материю, считая их чем-то принципиально различным, противоположенным. Однако "Я" существую! А следовательно, существует и механизм этого замечательного явления природы - моего "Я". Каков он? Пока ответить на этот вопрос однозначно сложно, но кое-какие соображения на этот счет высказать уже можно. Мне уже доводилось писать об этом. В частности в одной из моих статей в КВ была сформулирована мысль о том, что "Я - это электричество". Да, я думаю, что так оно и есть. Выражаясь точнее, - это спонтанный самоподдерживающийся электрический процесс, протекающий в животном организме на протяжении всей его жизни. Этот процесс то замирает, то еле заметно пульсирует, то выбрасывает всплески хаотической энергии, заставляющие мышцы животного бешено сокращаться и уносить его тело от опасности прекращения того самого я- процесса, именуемого жизнью.

Когда я думал об этом, то мне представлялись некие примитивные животные организмы, обитающие в толще воды древнего первобытного океана. Они чем-то напоминали гидр или осьминожков, но устроены гораздо проще. Я назвал этих гипотетических существ, обитающих в моей фантазии - hydrotetropus. Гидротетропусы чувствуют себя комфортно, только находясь не слишком глубоко и не слишком близко к поверхности. Когда организм погружается слишком глубоко, то начинает нервничать, пронизывающие все его примитивное тело нервные клетки начинают интенсивнее передавать друг другу импульсы возбуждения, и в ответ, его мышцы начинают конвульсивно сокращаться, заставляя тело всплывать. Возбужденные нервные клетки заставляют тело гидротетропуса менять цвет. То есть, когда наш гипотетический животный организм - условно называемый - гидротетропус - начинает нервничать, то начинает заметнее и ярче зеленеть, мерцая в такт накатывающимся волнам электрических импульсов возбуждения в нервных клетках.

Когда гидротетропус, напротив, оказывается слишком близко к поверхности в слишком теплой и освещенной зоне, он также начинает испытывать дискомфорт. Однако, теперь воздействие света и температуры сделали его нервные клетки менее восприимчивыми к электрическим импульсам и возбуждение сменяется торможением. Возбуждение быстро спадает, тело замирает и постепенно погружается глубже.

Вот такой забавный несложный организм пришел мне в голову. По-прошествии некоторого времени мне даже захотелось как-то "оживить" или зримо воплотить его на компьютере. На первом шаге я решил, что с определенной долей условности динамику численности или, скорее, доли возбужденных нервных клеток в его теле можно описать дискретным разностным уравнением Ферхюльста.

Xi+1=R*Xi*(1-Xi)

Где Xi+1 и Xi доля возбужденных нервных клеток в теле гидротетропуса, а R - коэффициент передачи или, если хотите, размножения нервного импульса, который соответствует среднему количеству клеток, которые может возбудить в следующий момент времени одна возбужденная нервная клетка. Предположим, что нервные клетки в теле гидротетропуса образуют сеть, в которой каждый нейрон связан с четырьмя другими нейронами. Иными словами каждая нервная клетка может возбудить в следующий момент времени от 0 до 4 других нервных клеток. R - это коэффициент передачи нервного импульса, который может принимать значения от 0 до 4. То есть, доля возбужденных нервных клеток в следующий момент времени определяется долей возбужденных нервных клеток в предыдущий момент времени, а также коэффициентом R, который зависит от воздействия внешней среды. Чем глубже погружается гидротетропус, тем значение R больше.

Уравнение Ферхюльста хорошо исследовано. При малых значениях R значения Xi стабилизируются на каком-то невысоком, стабильном уровне. С ростом R, характер поведения серий значений X меняется и приобретает вид все более сложных и значительных колебаний. Колебания усложняются, проходя с ростом R через последовательную серию бифуркаций удвоения периода, и, в конечном счете, становятся вовсе хаотическими. Поведение уравнения Ферхюльста можно изобразить при помощи так называемого дерева Фейгенбаума, которое представляет собой график, на который последовательно наносятся точки значений X в установившемся режиме, в зависимости от значения параметра R.

С появлением в HTML5 нового элемента canvas, появилась возможность использовать JavaScript в качестве языка занимательного программирования, примерно также, как можно было использовать раньше старый, добрый Basic. Для заинтересованных читателей я набросал фрагмент кода HTML5, позволяющий построить дерево Фейгенбаума.

<html>
 <head>
  <title>Дерево Фейгенбаума</title>
 </head>
<body>
 <canvas id='example'>Ваш браузер не поддерживает canvas</canvas>
 <script>
  var example = document.getElementById("example");
  var ctx = example.getContext('2d');
  example.width = 1000;
  example.height = 750;
  var r,x,i;
  var xs, ys;
  r=2.5;
  x=0.25;
  ctx.fillStyle='black';
  ctx.strokeRect(0,0,1000,750);
  while (r<4) {
   for (i=1; i<100; i++) {
    x=r*x*(1-x);
    if (i>50) {
     xs=Math.round(((r-2.5)/1.5)*1000);
     ys=Math.round((1-x)*750);
     ctx.fillRect(xs,ys,1,1);
    }
   }
   r=r+0.0001;
  }
 </script>
</body>
</html>

Просто сохраните фрагмент как html-файл, а затем откройте его браузером (IE ниже 9 canvas не поддерживает). Получится следующая картинка.

Рис. 1.- Дерево Фейгенбаума

Не буду вдаваться в подробности описания этого, уже ставшего классическим, объекта синергетики и теории хаоса, а также пояснять приведенный код - он совершенно прост и интуитивно очевиден. Важно, что состояние возбуждения наших гидротетропусов будет представлять собой некую индивидуальную энцефалограмму, получаемую фактически на основе некоего блуждания по данному дереву.

Далее, читатель, предлагаю вам вслед за мной погрузиться в волшебный мир NetLogo - замечательной среды мультиагентного моделирования, созданной на основе развития известного языка Logo. NetLogo позволяет легко создавать и оживлять самые разнообразные миры, населенные диковинными существами, машинами, растениями... Все вместе это носит название мультиагентного или агентно-ориентированного языка программирования и соответствующей интегрированной среды моделирования (agent-based programming language and integrated modeling environment). В настоящее время выпущена версия NetLogo 5.0.5, поддерживающая в числе прочего и русский язык интерфейса.

Тот мир теплого мелкого моря и гидротетропусов, который виделся мне в моих фантазиях, можно создать процедурой, имеющей примерно следующий вид.

to setup
 clear-all
 create-turtles 25
 ask turtles
 [
  setxy random-xcor random-ycor
  set shape "hydrotetropus"
  set heading 0
  set x 0.01
  set color green + x * 9
  set size 2 
 ]
 ask patches
 [
  set pcolor 100 + (1 + pycor / 5)
 ]
end

В результате будет создана "водная" среда с градиентом глубины, в которую будет помещено 25 агентов, которым я придал не слишком затейливый вид, изображенный на рисунке 2.

 

Рис. 2. Гидротетропус

Первоначально они все случайно размещены по глубинам и имеют некий одинаковый и в данном примере очень незначительный начальный уровень возбуждения (X0 = 0.01). Затем в действие вступает процедура, моделирующая поведение гидротетропусов в данной среде. Она также чрезвычайно проста.

to go
 ask turtles
 [
  set R (4 - (pcolor - 101) / 2)
  set x R * x * (1 - x)
  set step (x * 3) - 1.9 - random 2 + random 2
  set color green + x * 9
  right random 20
  left random 20
  fd step
  if random 2 = 1 [set heading 0]
 ]
end

Фактически значимыми в данной процедуре являются лишь три строчки. Вычисление очередного значения R на основе данных о цвете окружающей воды, вычисление x - доли возбужденных клеток на основе R и значения x в предыдущий момент времени, а также определение значения переменной step, которая вычисляется на основе x, гравитационного фактора (-1.9), а также незначительной случайной погрешности. Шаг может быть как положительным, так и отрицательным. Если активность гидотетропуса будет высока, то шаг будет положительным, и его тело будет всплывать, если активность его будет невысока, то гравитационный фактор будет "погружать" тело вниз. Остальные строки кода лишь предают происходящему наглядность и некоторую реалистичность.

После запуска процесса моделирования первоначально случайным образом брошенные в воду организмы в одинаковом состоянии низкого возбуждения приходят в движение. Они начинают перемещаться и занимать свою комфортную экологическую нишу (см. gif-анимацию).

Далее их примитивная нервная система и циркулирующее в ней спонтанное электричество достаточно эффективно обеспечивает гидротетропусам пребывание в зоне экологического комфорта, а также делает их поведение внешне весьма схожим с поведением реальных живых существ (см. видео)...

В алгоритме моделирующей процедуры практически нет условных операторов. Одно логическое условие лишь время от времени корректирует вертикальное положение организма и к сути модели не относится. То есть, вся картина поведения гидротетропусов формируется единым кооперативным квазихаотическим процессом, описываемым уравнением Ферхюльста, и, при этом, оно во взаимодействии с окружающей средой несет в себе зачатки рациональности и эмоциональности одновременно.

Гидротетропусы - это моя очередная внешне бесполезная алгоритмическая фантазия, которая, тем не менее, почему-то кажется мне важной и заслуживающей внимания. Это тот образ, на котором строились мои догадки относительно электрической природы "я". Замечательно то, что поведение гидротетропусов обусловлено неким единым "живым" кооперативным процессом, который взаимодействуя с окружающей средой, обеспечивает выживание, а также зачатки эмоциональных переживаний подвижных сгустков материи - в данном случае, виртуальных организмов. Это своего рода мыслительный образ или протоконструкт, на основе которого могут строиться какие-то дальнейшие размышления и умозаключения.

Андрей КОЛЕСНИКОВ

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 0
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя mike

Очень полезная статья. И знакомит с HTML5. Спасибо, автор!