Блокнот инженера


Мне это интересно


Просмотрен: 1401

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

5:14:31 05.03.2012

Очередная идея. Для обучения управляющих клеточных автоматов я применяю обучающие последовательности. Но, это хорошо работает только в тех случаях, когда обучающая последовательность простая и конечная. Это подходит для релейных (логических) схем процессов. Для временных рядов, когда имеется достаточно длинный временной ряд. А вот для процессов непрерывных, изменяющихся быстро и плохо регулируемых такой подход не годится. Невозможно создать обучающую последовательность для процессов, например таких, какие обычно регулируются ПИД-регуляторами. Настройка таких регуляторов не такое уж простое дело.Получается, чтобы "научить" мои автоматы управлению динамическими процессами, надо иметь некую математическую модель этого процесса. Если рассмотреть процесс как черный ящик, то можно заметить, что он протекает под управлением каких-то воздействий. Результатом этих воздействий будут основные его технологические характеристики. Тут прослеживается некоторая аналогия с управляющими автоматами. У них тоже есть некоторые управляющие воздействия - значения которых отображаются входными клетками, и технологические характеристики - значения выходных клеток. Следовательно можно применить клеточные автоматы для моделирования сложных технологических процессов. Для того, чтобы вырастить из клеточного автомата модель технологического процесса надо собрать с существующего процесса телеметрию. Эта телеметрия и послужит обучающей последовательностью для моделмрующего клеточного автомата. Идем к объекту регулирования, навешиваем на него кучу разнообразных датчиков. Включаем объект, производим регулирование или управление процессом в ручном режиме. Записываем телеметрию. Затем используем эти записи для обучения моделирующего процесс клеточного автомата. Тут просто - то, что курутили, управляя процессом - то вход, то, что приходило в процесс - то тоже вход. А то, ради чего регулировали - выход. Методика создания моделирующего клеточного автомата ни чем не отличается от методики создания управляющего клеточного автомата. Вырастив моделирующий клеточный автомат на полученной телеметрии, можно его использовать для создания управляющего клеточного автомата. Вот такая вот идея. Пошел творить.

0:46:15 04.12.2011

Оригинал взят у Блог им. koroandr Чарльз Мур, создатель языка программирования Форт (Forth), довёл до стадии промышленного производства уникальную разработку — многоядерный процессор GA144. Чип размером 10х10 мм уже поступил в продажу по цене $20 (при заказе от десяти штук), также доступны материнские платы для него. Фактически, это аппаратное воплощение самого языка программирования Форт.Крайне необычный процессор по ряду параметров не имеет себе равных среди CPU:144 независимых ядра, которые активируются только при поступлении инструкции, то есть у этого процессора нет такой характеристики как «тактовая частота»;скорость выполнения инструкций 1400 пикосекунд (эквивалент 700 МГц);энергопотребление 7 пикоджоулей на одну инструкцию;энергопотребление в «спящем» режиме менее 100 нановатт;Многоуровневое программирование даёт возможность писать очень быстрый и простой микрокод либо использовать высокоуровневый язык программирования, либо сочетать оба этих метода в кластерах вычислительных ядер с указанием среди них «хостов» и «сопроцессоров» на выбор.Чак разработал этот процессор самостоятельно с помощью им же созданного инструментария OKAD II VLSI. Инструменты для разработки под GA144, включая ассемблер/компилятор и примеры исходных кодов, распространяются бесплатно в пакете под общим названием arrayForth.Специалисты пытаются понять, каковы целевые области применения GA144. Вариантов много:робототехника (манипуляторы, протезы, автономные подвижные роботы);искусственный интеллект и нейронные сети (классификация, распознавание сигналов/образов);«бортовые системы» (диагностика состояния в реальном времени, контроль движения);«академическое» применение (аппаратное обеспечение курсов цифровой обработки сигналов, параллельного программирования, архитектуры вычислительных систем);распознавание и синтез речи;модуляторы/демодуляторы сигналов.Сам разработчик процессора дополняет этот список различными энергоэффективными приложениями (модуль беспроводного приёма энергии), портативными устройствами, системами обработки изображений, сложными управляющими системами, криптографией, высокопроизводительной обработкой сигналов, программами симуляции и синтеза и другими приложениями, которые нуждаются в массовом параллелизме.Мой комментарий: вот и железо уже готово. Наверное, всё-таки придется вернуться к Forth-у.

4:49:21 26.11.2011

Оригинал взят у gestв It's evolution, baby!Сегодня я вдруг подумал, что хочу рассказать вам одну историю. Есть на свете такой исследователь - Адриан Томпсон. Однажды он решил изучить процессы эволюции в неживых системах, на примере FPGA-чипа. Field-Programmable Gate Array - по-русски это будет Программируемая пользователем вентильная матрица, частный случай Программируемых логических интегральных схем. Да, Томпсона интересовала практическая сторона вопроса - можно ли использовать принцип эволюции для разработки более эффективных схем?По-английски об этом можно прочитать тут:Evolvable hardwareOn the Origin of CircuitsВ чём была суть эксперимента? Итак, у нас есть чип, матрица из программируемых ячеек, 64 x 64. Для опыта использовался только один угол матрицы, квадрат из ста ячеек:Условная схема отдельной ячейки:Итак, каждая ячейка может получать сигнал с одной из четырёх сторон (по сторонам света - N, S, E, W) и передавать его дальше. Она также может передавать функцию (F) - результат логической операции над одним, двумя или тремя сигналами. Например, слева и справа пришло по "1", передаём вниз "1", слева пришла "1", но справа "0", передаём вниз "0". Поведение каждой ячейки задаётся отдельной программой - что передавать, как и куда.  Естественно, можно настроить ячейку так, чтобы она всегда выдавала одно и то же значение, независимо от того, какой сигнал получен.Исследователь сформулировал задачу - система из ста ячеек и логических вентилей-переключателей должна "научиться" отличать поступающий на вход (IN) сигнал частотой в 1 герц от сигнала частотой 10 герц. Не используя встроенный таймер! В идеале, система должна была выдавать на выход (OUT) напряжение в 5 вольт, если "слышала" 10 герц, и 0 вольт в остальных случаях.Можете представить, как эту задачу решал бы обычный инженер? Есть сто программируемых ячеек, фиксированный вход и выход, нужно объяснить системе разницу между "бип, бип" и "бип-бип-бип", таймера нет...А Адриан Томпсон просто сгенерировал пятьдесят программ с инструкциями для каждой конкретной ячейки. Программы представляли собой случайные последовательности нулей и единиц, длинной в 1800 бит. Эти программы стали "отдельными особями в популяции".Каждую программу последовательно загружали на реальный чип и тестировали по заявленным условиям. Затем по специальному алгоритму определялось, кто из "участников" лучше всего справился с задачей. После этого создавалось следующее поколение программ - программа-победитель переходила в следующий круг без изменений, остальные 49 "особей" производились от родителей предыдущего поколения, с учётом определённого процента случайных мутаций в коде. Опять же, по параметрам эксперимента, программа-победитель всегда оставляла в два раза больше потомков, чем программа, оказавшаяся в середине рейтинга. (Следовательно, плохо приспособленные вообще теряли шанс на размножение, поскольку размеры популяции не менялись.)И так несколько тысяч поколений.Понятно, что первые поколения были "никакими", ведь их поведением управлял случайно набранный код. Победителями становились системы, отвечавшие на внешние сигналы неизменным "белым шумом" - в конце концов, любая активность лучше, чем полное отсутствие признаков жизни. Но затем количество начало перерастать в качество...Слева указан номер поколения и реакция его лучшего представителя на поступающий сигнал:В начале сплошной "белый шум".Потом победной адаптацией стала способность передавать полученный сигнал на выход, так как здесь уже присутствует разная реакция на разные частоты.В результате дальнейшего отбора системы научились поднимать напряжение в одном случае и сбрасывать его в другом - хотя и не так, как это требовалось.Наконец, в результате эволюционного скачка, лучшим представителям популяции удалось решить задачу - они стабильно выдавали 5 вольт в ответ на десять герц, и ноль в ответ на частоту в 1 герц.Томпсон провёл "вскрытие" победителя, и вот что он обнаружил (за вычетом неработающих и замкнутых на себя ячеек):Куча мусора, куча линий, ведущих в никуда или пытающихся принять сигнал из ниоткуда - но система работала!Тогда он стал отключать ячейки, по одной за раз, проверяя, как это повлияет на поведение системы и её способность распознавать сигнал. Это позволило отделить необходимые элементы от случайных и ненужных. В итоге, получилось следующее:21 ячейка - этого достаточно, чтобы система безошибочно распознавала частоты. Какой инженер смог бы сконструировать подобное? А ведь это устройство возникло из хаоса изначального кода, благодаря случайным мутациям и последующему отбору "сильнейших". Но самое интересное в схеме - ячейки, отмеченные серым цветом. Они закольцованы, замкнуты сами на себя, не получают никаких сигналов извне и ничего не передают. При этом Томпсон обнаружил, что если их отключить, производительность системы резко падает.Это уже не кибернетика - это биология. Инженер, поясняет автор исследования, работает с абстрактной моделью, из которой убраны все избыточные параметры. Найдя решение в рамках модели, инженер затем пытается перенести его на реальный образец. А тут всё начиналось с реального образца - и эволюция использовала в своих целях свойства данного чипа. Свойства, с точки зрения инженера, неправильные - цепочки сигналов переплетены так, что они начинают непосредственно влиять друг на друга. Возникают паразитические токи, случайные скачки напряжения, неправильные срабатывания логических переключателей - словом, всё то, чего надо избегать при создании подобных схем.В результате, система из цифровой превращается в аналоговую, небольшие заводские дефекты становятся важными рабочими элементами. В конце концов, "греющие" чип ячейки тоже оказываются нужными, хотя с точки зрения математической логики они никак не могут влиять на состояние системы, ибо никуда не подключены.Кстати, этим примером можно проиллюстрировать хроническую ошибку наивного социализма 20 века. "А что это за штука? А откуда она взялась в обществе - и зачем она вообще нужна? Она ведь ни на что не влияет! А давайте её с корнем уничтожим, как устаревшую и неправильную! Мы ведь должны перестроить общество по идеальной схеме, опираясь на чистый разум! ...Что, система стала работать хуже? Это заговор врагов!"Да, свой эксперимент автор продолжил следующим образом. Сначала он доказал, что найденное слепой эволюцией решение работает только в узком диапазоне температур - холодный воздух из вентилятора или горячий воздух из фена выбивали систему из колеи. Понятно, почему - изменение температуры влияло на скорость прохождения сигнала, а внутреннего таймера, как я уже сказал, у системы не было.Во-вторых, он перенёс программы на другую часть чипа - и выяснилось, что текущий чемпион на новом месте стал работать хуже. Его адаптации были рассчитаны на конкретный квадрат 10 на 10 ячеек, расположенный в конкретном месте конкретного чипа. Но зато в популяции оказались особи, которые на новом месте стали работать лучше бывшего чемпиона. А ещё через пару сотен поколений вся популяция подтянулась к прежнему высокому уровню, но уже на новом участке.Не знаю, по-моему, это потрясающе. Ну и вывод автора: "Благодаря эволюции можно более полно исследовать пространство возможных решений. Значительная часть этого пространства недостижима обычными методами проектирования... Эволюция способна найти решение, которое будет более эффективно использовать доступные ресурсы, обладать более сложной структурой, демонстрировать динамическое поведение и учитывать особенности среды, в которой предстоит работать".Update: _hellmaus_подсказал, что про это у нас уже писали - "Эволюция железа".

4:29:38 26.11.2011

На одном из форумов, где я искал единомышленников, предложили сделать такое устройство для аквариума, чтобы оно делало и то, и это и настраивалось по желанию владельца. Я подготовил ответ, но, почему-то не стал его публиковать. Недавно перечитав его, я понял, что кратко изложил суть того, что я собираюсь получить от управляющих клеточных автоматов. Вот, что я собирался ответить аквариумисту:Давайте попробуем решить Вашу задачу.От Вас требуется составить обучающую последовательность - описать каким образом должны изменяться выходные значения при всех возможных вариантах входных значений.Клеточный автомат имеет входные и выходные клетки. Допустим, вы хотите, чтобы при включенном освещении освещение Вашего актвариума приглушалось. Значит входным значением может быть битовый сигнал, ноль которого говорит, что внешнего света нет, а единица - внешний свет есть. Выходом может быть ключ, замыкающий диод в цепи освещения Вашего аквариума. Если на входе 0, т.е. внешнего освещения нет, то на выходе должна быть единица - диод в цепи освещения закорочен и освещение работает на полную мощность. Если на входе 1 - внешнее освещение включено - на выходе должен быть 0 - диод работает в цепи и уменьшает освещение аквариума.Обучающая последовательность выглядит так:1:1 - Имеем один вход и один выход;1:0 - если на входе 1, то на выходе должен быть 0;0:1 - если на входе 0 - то на выходе должна быть 1.Рассмотрим более сложный пример обучающей последовательности. Клапан. Имеем два входных параметра. Допустим, давление и уставку. Оба параметра измеряются с точностью 4 бита. Клапан работает, если значение давления не превышает уставки. Если превышает, то клапан закрывается. Выходом является сигнал управления клапаном - 0 - клапан закрыт, 1 - клапан открыт. В данном случае имеем 8 входных битов и один выходной. Обучающая последовательность записывается следующим образом:8:10:0:0:0:0:1:0:0:10:0:0:1:0:1:0:0:1....0:1:0:0:0:1:0:0:10:1:0:1:0:1:0:0:00:1:1:0:0:1:0:0:0....1:1:1:1:0:1:0:0:0Здесь показана обучающая последовательность для значения уставки 0100 и только. Если надо управление уставкой, то длина обучающей последовательности увеличится всего в 16 раз. Для каждого значения уставки надо написать свою обучающую последовательность из 16 строк. Итого 256 строк + 1 строка-заголовок.Как видите, все очень даже просто. Имея Вашу обучающую последовательность, моя программа автоматически сочинит управляющий алгоритм. Если бы была такая программа, которая переводила управляющий алгоритм в программу для конкретного микроконтроллера, то можно было бы попробовать все это воплотить в железе.Для программирования любой задачи, для которой можно написать однозначную управляющую последовательность, создается только одна программа - программа расчета текущих состояний клеток. Текущие состояния клеток - суть биты. Значит в 10 байтах можно разместить систему с 80-ю клетками. Для хранения прошлого состояния системы надо иметь еще 10 байтов. Для хранения алгоритмов расчета каждой клетки потребуется до 3-х байт в случае автоматов с тремя выходами. Значит, расход памяти флэшки составит для 80-клеточной системы до 240 байт. Плюс программа, выполняющая однотипные расчетные операции, ну, пусть еще сотня байт. Вот насчет программ, обрабатывающих вход и выход пока ничего не могу сказать, но, то, что просматривал в готовых программах для МК могу грубо оценить еще сотней байт. И все! Получается, что можно обходиться весьма "слабыми" в плане памяти микроконтроллерами.

23:31:30 01.10.2011

Разместил на разных досках объявлений и в нескольких радио-форумах такое объявление:Ищу единомышленников (управляющие клеточные автоматы)В свободное время занимаюсь исследованиями в области управляющих клеточных автоматов.Похоже, пора заняться воплощением математики в железо.Проект не коммерческий. Денег не прошу и не предлагаю.Приглашаю к сотрудничеству. Ознакомиться с вопросом можно в моем ЖЖ: http://legre.pp.uaОбъявление не осталось незамеченным. Некоторые модераторы просто удалили его, о чем любезно сообщили мне.На форумах объявление вызвало неоднозначную реакцию. Больше всего мне понравилась такая реакция:Форум "РадиоКот" http://radiokot.ru/forum/viewtopic.php?f=29&t=54675Бред и реклама ЖЖ.Сначала бы научился грамотно писать...На других форумах реакция есть, но тоже не по делу. Даже не знаю, стоит ли тратить время на болтовню там? 

2:59:36 22.09.2011

Рассмотрим автоматы релейной схемы "два входа - два выхода". Можно представить их как два сросшихся автомата схемы "два входа - один выход". Оно так и есть, если объеденить входные клетки вух автоматов "2-1", что возможно. В результате получим 254 варианта элементарных клеточных автомата.А настолько ли они элементарны, чтобы брать их для дальнейшего использования? Может проще вообще отказаться от них? На этом этапе ничего определенного решить нельзя. И только эксперимент может ответить на этот вопрос. Но, с какого-то решения все-таки придется начать. Начнем с того, что не будем их пока использовать.Посмотрим, как могут выглядеть алгоритмы, использующие память. Как и предыдущем случае, имеем соединение двух элементарных клеточных автомата триггерной схемы 2-1 в один схемы "2-2". Но никакого выиграша, ни в уменьшении "зоопарка", ни в размерах автомата, не получаем - зачем тогда весь сыр-бор?Получается, что схема "2-2" не дает ниодного элементарного клеточного автомата в общую копилку.Эти же выводы касаются и схем "2-3", "3-2" и "3-3". Эти схемы не приводит к созданию действительно элементарных клеточных автоматов, а лишь являются конструкциями, построенными на ранее описанных элементарных клеточных автоматах.Всего в "зоопарке" или "первичном рассоле" элементарных клеточных автоматов должно быть собрано 628 вариантов. Из этого набора по методу "слепой часовщик" попытаемся создавать суперклеточные автоматы, реализующие какие-либо реальные задачи.

3:54:14 18.09.2011

Техника

Мне это интересно



Статистика
RSS-каналов в каталоге: 18605;   Сегодня добавлено: 1;   Вчера добавлено: 3;

© 2008-2016, adVISeR