ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
9 мая
908314 Топик полностью
fk0, легенда (05.03.2019 11:33, просмотров: 158) ответил fk0 на Сам отвечу, одним из возможных подходов является т.н. "генетическое" или "эволюционное" программирование. Когда натурально отбором и моделированием находят наиболее оптимальный вариант. Эдак скоро программисты будут не нужны. Греф был прав, просто
Подумалось ещё, что генетическое программирование скорей тупиковый путь. Там идея в том, что на каждой итерации вводятся случайные мутации, потом алгоритм оценивается по каким-либо критериям и выбирается часть мутировавших алгоритмов как лучшие и так итеративно. Очевидно, что это не всегда работающая методика. Могут быть действительно хорошие правильные варианты, которые могли бы вырасти из одного из выброшенных на этапе отбора вариантов. Потому, что если алгоритм удовлетворяет критерию отбора сейчас, то совсем не факт, что полученные из мутации будут условно хорошими и наборот, неудовлетворяющие отбору сейчас могут вследствие дальнейшего мутирования могут дать хорошие решения. Можно, конечно, отбирать не прямо сейчас, а с задержкой на сколько-то итераций, но в целом это не решает проблему, всегда наличие каких-то локальных максимумов может скрыть настоящее решение. Проблема в том, что есть информационная воронка, в которую попадают не все варианты, и собственно решение по выбору какие варианты выбрать приходится принимать в условиях недостатка информации. По-моему таким методом можно быстро получить обезьяну из человека, а в обратную сторону время поиска может превысить срок жизни вселенной, если вообще нужные варианты не будут случайно отброшены с самого начала. Подумалось ещё, что сказанное мною выше -- вполне реализуемо. Когда вводятся какие-то условия, в терминах темпоральной логики например, и по ним строится конечный автомат. Каждое условие можно считать дугой в графе соединяющей два узла. Осталось перебрать все возможные варианты соединения дуг, пусть их порядка факториала и даже больше, их число в целом конечно и проверить выполнимость условий, пока не останутся автоматы удовлетворяющие заданным условиям, можно. И ввести достаточное количество логических условий, чтоб получить разумное множество решений. Однако препятствием может быть само задание условий. Они тоже могут оказаться неизвестными, а по малому числу условий ничего построить не удастся. Речь идёт про управляющий каким-либо процессом алгоритм, есть объект управления и логические условия в конечном счёте следуют из свойств самого процесса и из свойств объекта. Что если построить модель объекта? Условия конечно окажутся заложены в модели неявным образом. Конечно я исхожу из допущения, что можно построить как-то модель, но при этом не уметь выявить свойства модели, странное допущение. Но может оно чем-то поможет. Модель может быть построена в виде того же конечного автомата. Тогда можно симулировать работу алгоритма управления совместно с моделью и проверять опять же выполнимость некоторых логических условий уже заданных в контексте модели. На, может быть, более понятном, для человека, уровне. Хотя, по-моему, это больше подходит к эволюционным алгоритмам. Это там на каждой итерации по результатам испытаний на модели можно отбирать те или иные варианты. А при "неэвалюционном" подходе следовало бы логические условия заданные в модели просто перенести в описанный выше алгоритм построения автомата, когда каждое условие становится дугой в графе. Может быть, построение модели позволит человеку формализовать эти самые условия, потому что из головы, опять же по наитию их состав выявить невозможно или тяжело. Т.е. разработку можно вести по схеме: 1) построение модели объекта управления, 2) выделение из модели основных свойств в виде логических условий, 3) использование данных логических условий, свойственных объекту управления, и условий заданных дополнительно, свойственных уже управляющему алгоритму, для построения конечного автомата. Когда компьютер перебирает огромное множество вариантов, отсеивает явно не удовлетворяющие условием и может предложить человеку уже очень ограниченное множество, которое вводом дополнительных условий может быть сведено к единственному варианту. По-моему идея перспективная, если не наткнётся на какие-либо фундаментальные ограничения. По крайней мере она позволяет преодолеть порог сложности не доступный человеческому сознанию: человек всё вынужден строить из кирпичиков и на каждом уровне все кирпичики должны быть простые, не слишком большой сложности, как и на более крупном уровне схемы соединений кирпичиков тоже ограничены в сложности и так рекурсивно. Но не все возможные алгоритмы могут быть построены таким образом, не все иерархически разделяются на более простые, могут существовать сложные "неделимые" алгоритмы, трудные для понимания человеком непосредственно (в принципе, любой конечный автомат с более чем десятком состояний и запутанными переходами).
[ZX]