GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.3 (27)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Программирование поведения робота без доступа к коду
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 28 авг 16 5:57
Изменено: 28 авг 16 6:04
Цитата:
Автор: Vpolevoj
По имени.

Я имею ввиду, что любой Элементарный Алгоритм (как вы его назвали, а у меня он называется Универсальный Алгоритм - УА) легко вставляется в любой уже существующий Алгоритм через вызов его по его имени, вместо любой из "заглушек".
На простом изменении вроде бы должно быть нормально. Но если задача будет стоять чуть посложнее, например, сортировка ягод, про которую вы упоминали. Даже не ягод (это проще), а, например, посылок на почте, сортировка их по размеру. Программировать такую задачу с завода не понятно как. Было бы не плохо чтобы конкретная постановка задавалась уже на месте - скажем, в почтовом отделении. При этом количество возможных групп размеров, как и сами размеры коробок становятся известны только после начала процесса сортировки. Не получится так, что во время процесса сортировки, связь между двумя УА должна будет динамически меняться? Сможет ли робот сам это делать (менять связи), хотя бы теоретически?

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

И второй момент, что человеку нужно будет помнить (ну или запрашивать у машины их список) все имена УА. В принципе запрос списка это нормальное решение, но тогда имя должно хорошо описывать предназначение алгоритма, что одним слитным словом трудно сделать.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 28 авг 16 5:58
Изменено: 28 авг 16 6:11
Опишу свой подход. Когда-то уже выкладывал, но возможно не все читали, опишу еще раз, уже в этой ветке.

Мгновенное совокупное состояние мира складывается из конкретных состояний отдельных объектов (как внутренних для системы, так и внешних) мира. В моей разработке, для каждого отдельного значения из множества состояний любого объекта в программу вводится специальная сущность - триггер. Их еще могут называть факты, флюенты, события/состояния. Но технически это триггер, потому что имеет только два устойчивых состояния: взведен (активен), и не взведен (не активен). Каждый триггер отслеживает состояние какой-то переменной. Триггер активируется либо на изменение значения (с любого на любое) у отслеживаемой переменной, либо на конкретное значение (диапазон значений) отслеживаемой переменной. Под переменной имеется в виду любое поле с элементарным типом данных: обычная переменная, элемент массива, поле структуры (или таблицы).

Триггер имеет внутреннее малозначимое имя и внешнее "имя" (хотя в разработке оно названо классом триггера), которое доступно по запросу командой. То есть внешним именем триггера оперирует человек. Поэтому внешнее имя имеет длинное описание, как можно более точно описывающее предназначение триггера. Правила описания такие же как у выполняемых инструкций - команд интерпретатора. Это сделано для единообразия. Собственно говоря, сначала был выбран синтаксис (который я показывал выше) именно для описания триггеров, а потом, чтобы по возможности все было идентично, он же был выбран и для программных инструкций.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 28 авг 16 9:18
Цитата:
Автор: TimKruz
Вручную. Т.е. изменяя код интеллектуального ядра робота. Это не круто. Я предлагаю способ, при котором изменять код не нужно - достаточно подключить модуль (т.е. скачать и разместить в папке modules, а затем перезапустить процесс ИИ).
Зачем ограничивать владельца робота в таком удовольствии. Если ему хочется что-то менять, нужно это ему дать. А поначалу желающих поковырять всегда достаточно. В моем случае (поскольку используется интерпретация, а не компиляция) модули, даже отдельные процедуры модуля могут переподключаться "на лету", так как их код находится в текстовом виде в базе данных и загружается в память из нее. Но плата за это - скорость выполнения.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 28 авг 16 10:34
Изменено: 29 авг 16 12:06
Продолжение описания моей разработки.

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

Комбинации триггер-условие могут быть произвольными (от один к одному, до N к одному):


Принцип соединения триггеров и условий можно проиллюстрировать принципиальной схемой:

Здесь электрический аналог триггера - кнопка "триггер 1" подключена только к лампе "условие 1", а кнопка "триггер 3" подключена только к лампе "условие 2". Кнопка "триггер 2" подключена к обоим лампам (условиям). Таким образом, чтобы загорелась верхняя лампа (активировалось условие 1) должны быть одновременно нажаты верхняя и средняя кнопки, чтобы загорелась нижняя лампа (активировалось условие 2) должны быть одновременно нажаты средняя и нижняя кнопки.

В разработке не будет команд ветвления, таких как условный переход (IF-ELSE) и цикл (FOR, DO, WHILE). Весь код представляет собой набор условий (ситуаций) с их обработчиками, разбитыми по модулям. Обработчик - небольшой, в несколько строк, линейный список программных инструкций. Команды условного перехода и цикла эмулируются неявно самой системой, за счет активации-деактивации триггеров, которые в свою очередь активируют условия, которые выполняют инструкции, которые изменяют значения переменных, которые приводят к активации-деактивации триггеров, и так далее по кругу. Интерпретатор сам будет выставлять приоритеты вызовов обработчиков условий. Человеку об этом задумывать не нужно.
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 29 авг 16 4:37
Цитата:
Автор: r
И второй момент, что человеку нужно будет помнить (ну или запрашивать у машины их список) все имена УА. В принципе запрос списка это нормальное решение, но тогда имя должно хорошо описывать предназначение алгоритма, что одним слитным словом трудно сделать.
Цитата:
Автор: r
Опишу свой подход.

Триггер имеет внутреннее малозначимое имя и внешнее "имя", которое доступно по запросу командой... внешним именем триггера оперирует человек.
Поэтому внешнее имя имеет длинное описание, как можно более точно описывающее предназначение триггера.

У меня сделано так же.

Всякий создаваемый в программе УА (Универсальный Алгоритм), как самостоятельная процедура, имеет своё имя, которое ему даёт сама программа по заданным [мною] правилам. Но некоторым алгоритмам человек может дать и своё имя, которое не подчиняется этим правилам, и поэтому оно может быть каким угодно, и, кроме того, человек его может изменить, если захочет и когда захочет (например, таким: "Сбор ягод со всех кустов малины, которые растут в моём огороде", а потом спустя какое-то время передумает и изменит на - "Сбор малины со всех кустов", а потом еще немного подумает и сократит до - "Сбор ягод"). При этом программа должна продолжать работать по этому алгоритму без сбоев.

Понятно, что программе нужна определенность, и поэтому вызовы из УА других процедур происходят всегда только по их внутреннему имени (которое уникальное и не может меняться), а вот человеку удобнее пользоваться своими именами процедур, которые он с таким трудом придумывал, напрягая при этом всю свою фантазию. Поэтому программа должна уметь "понимать" человека, когда он говорит ей, например, "организуй сбор ягод со всех кустов малины". (Человек - он же не только великий фантазер, но еще и большой путаник, да еще при этом он постоянно забывает, как именно он обозвал ту или иную процедуру.) Поэтому в программе должен стоять поиск по "словесному художественному описанию" процедур, и она должна, если что, уточнить, если вдруг возникает выбор, какую именно из процедур следует выбрать в том или ином случае (что человек конкретно имеет ввиду).
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 29 авг 16 5:02
Изменено: 29 авг 16 5:14
Цитата:
Автор: r

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

Мгновенное совокупное состояние мира складывается из конкретных состояний отдельных объектов (как внутренних для системы, так и внешних) мира. В моей разработке, для каждого отдельного значения из множества состояний любого объекта в программу вводится специальная сущность - триггер. Их еще могут называть факты, флюенты, события/состояния. Но технически это триггер, потому что имеет только два устойчивых состояния: взведен (активен), и не взведен (не активен). Каждый триггер отслеживает состояние какой-то переменной. Триггер активируется либо на изменение значения (с любого на любое) у отслеживаемой переменной, либо на конкретное значение (диапазон значений) отслеживаемой переменной. Под переменной имеется в виду любое поле с элементарным типом данных: обычная переменная, элемент массива, поле структуры (или таблицы).
Цитата:
Автор: r
Триггеры могут организовываться в группы и образовывать таким образом условия, или иначе говоря - ситуации. Организация такой группы происходит следующим образом: создается новая ситуация и к ней командами присоединяются необходимые триггеры. Такое состоящее из триггеров условие тоже имеет два состояния: активное либо неактивное. Активация условия происходит в момент когда все триггеры, подключенные к условию становятся активными. Активация условия приводит к выполнению его обработчика - линейного перечня команд, для этой конкретной ситуации. Создание условий и подключение к ним нужных триггеров может производиться в любой момент во время работы системы. То есть изменение, или построение нового алгоритма происходит в работающем интерпретаторе.

В разработке не будет команд ветвления, таких как условный переход (IF-ELSE) и цикл (FOR, DO, WHILE). Весь код представляет собой набор условий (ситуаций) с их обработчиками, разбитыми по модулям. Обработчик - небольшой, в несколько строк, линейный список программных инструкций. Команды условного перехода и цикла эмулируются неявно самой системой, за счет активации-деактивации триггеров, которые в свою очередь активируют условия, которые выполняют инструкции, которые изменяют значения переменных, которые приводят к активации-деактивации триггеров, и так далее по кругу. Интерпретатор сам будет выставлять приоритеты вызовов обработчиков условий. Человеку об этом задумывать не нужно.

Не знаю, говорил ли я Вам о своём отношении к этому подходу (думаю, что говорил), но на всякий случай повторю еще раз, более четко.

Я считаю его неправильным.

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

Во-первых, для описания поведения робота при таком подходе (через триггеры и состояния) нужно знать текущее состояние всех (ВСЕХ!), во всяком случае, значимых, параметров внешней среды (условие так называемого "замкнутого мира", или "изолированной комнаты"). Что, сами понимаете, зачастую попросту невозможно. То есть, я считаю, что робот должен уметь планировать свои действия БЕЗ УЧЕТА РЕАЛЬНОГО ТЕКУЩЕГО СОСТОЯНИЯ всех параметров среды, а это сводит на нет сам этот подход - через реакцию на изменение этих параметров - триггеры.

Во-вторых, все живые организмы, они, на самом деле, не оценивают, не воспринимают и даже НЕ ЗНАЮТ реальное состояние окружающей среды. Поскольку всё их восприятие сугубо СУБЪЕКТИВНОЕ. И то, что воспринимают наши органы чувств - это, к сожалению, вовсе не объективная информация. Поэтому, опять же, мы реагируем не на ИЗМЕНЕНИЯ СОСТОЯНИЙ ВНЕШНЕЙ СРЕДЫ, а - на изменения воспринимаемой информации с наших сенсоров, что, по большому счету, не одно и то же.

Поэтому нам нужно сделать такую систему, которая бы выстраивала своё поведение, опираясь на своё Внутренне представление о Мире, а не на его реальное состояние. Понимаешь?

Это - другого уровня задача.

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

Но это и есть - реальная задача, и реальный подход, это то направление, в котором нам нужно копать.

====================
r, твои картинки не открываются.
Рекомендую пользоваться местным сервисом (внизу, когда находишься в режиме редактирования своего сообщения, есть ссылка: "Загрузить небольшое изображение" - посмотри).
[Ответ][Цитата]
TimKruz
Сообщений: 323
На: Программирование поведения робота без доступа к коду
Добавлено: 29 авг 16 5:22
Цитата:
Наша же задача - передача роботу алгоритма поведения при помощи обычного языка... теперь требуется связать их между собой в некий осмысленный комплекс... Но нам не хочется лезть для этого в саму программу.

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

Цитата:
каждая из этих вызываемых процедур - уникальная, что сильно затрудняет отслеживание логики их работы и усложняет прогнозирование результата их взаимодействия

Ну не знаю, это смотря как писать, наверное. Я вот поведение своего кода легко прогнозирую, даже если работаю со множеством уникальных модулей и потоков (опыт есть). Исключение составляют ошибки, связанные не с моим кодом, а с кодом WinAPI/библиотек Delphi, понять которые я никак не могу...

Цитата:
А ей, как ты понимаешь, безразлично, сколько у неё вызовов... (например, используя стек)

Каждый вызов подпрограммы создаёт в стеке ссылку на место, откуда она была вызвана, поэтому вкладывать их до бесконечности нельзя - стек переполнится. Ну, так в обычном программировании по крайней мере...

Цитата:
просто за счет переопределения тех или иных слов-команд. Скажем, есть команда "выполнить". А мы говорим "выполняй". Робот не понимает. Тогда мы переопределяем это слово: говорим, что "выполняй" это тоже самое, что и "выполнить". И вот уже можно говорить (командовать) двумя способами. И т.д. С любым словом-командой.

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

Цитата:
Вплоть до "Валяй", "Go", "Пошёл", "Действуй" и т.д. И таким образом наше общение с роботом еще больше приблизится к естественному разговорному.

Как команды не обзывай, естественный разговор из них не построишь.

Цитата:
Нужно сделать - и посмотреть.

Согласен. Я уже реализовал многопоточную обработку пула сообщений в своей программе - можно начинать строить интеллект-ядро... Но для релиза ещё онлайн-функции нужны, чтобы собирать статистику...

Цитата:
Жаль, что ты не понимаешь, как такое можно сделать...

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

Цитата:
приходится все время менять и Алгоритмы работы с языком

С чего бы это? Алгоритм всегда постоянен - возбуждение некоторых ассоциативных цепочек в ответ на полученный раздражитель. При этом не имеет значения, какой раздражитель и какие цепочки.

Цитата:
Можно ли у существа, у которого совсем другие органы чувств (и строение тела)...

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

Вот с существом, которое, например, видит только рентген-лучи, наладить контакт будет проблематично - его глаза видят не то, что наши. А человекоподобный робот (построенный специально для обучения ИИ) видит практически то же, что видит нормальный человек.

Цитата:
имя должно хорошо описывать предназначение алгоритма, что одним слитным словом трудно сделать

Никто не заставляет тебя обозначать алгоритм одним словом. Распознать в строке название из нескольких слов не так уж сложно.

Цитата:
Опишу свой подход. Когда-то уже выкладывал, но возможно не все читали, опишу еще раз, уже в этой ветке.

Что-то ничего не понятно - какие-то объекты, триггеры... Как происходит взаимодействие с твоей программой на уровне пользователя? Как она воспринимает введённый текст?

Цитата:
Зачем ограничивать владельца робота в таком удовольствии. Если ему хочется что-то менять, нужно это ему дать.

Каждый модуль поставляется с исходным кодом, так что поковырять можно, если знаешь соответствующий ЯП.

Цитата:
так как их код находится в текстовом виде в базе данных и загружается в память из нее

Мои модули - это, по сути, самостоятельные программы в виде DLL-библиотек. Они могут содержать не только код, но и любые ресурсы (картинки, звуки и т.д.) и окна. При этом для разработки модуля с новым функционалом менять основную программу не нужно.

Цитата:
Активация условия происходит в момент когда все триггеры, подключенные к условию становятся активными

If-then с логической операцией and. Велосипед изобретён, мои поздравления!
Но где же or, not, xor, else?

И да - у меня опять твои картинки не загружаются.

Цитата:
всегда только по их внутреннему имени (которое уникальное и не может меняться)

Это называется "идентификатор" (ID).

Цитата:
поиск по "словесному художественному описанию" процедур

Решение - нечёткий поиск (fuzzy search). В моём интеллект-ядре его роль очень велика.
[Ответ][Цитата]
r
Сообщений: 837
На: Программирование поведения робота без доступа к коду
Добавлено: 29 авг 16 12:12
Изменено: 29 авг 16 12:13
Спасибо, что подсказали. Похоже, изображения мог видеть только я.
Залил их сюда. Картинки обновились тут и тут

По последним постам отвечу позже.
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 29 авг 16 14:01
Изменено: 30 авг 16 3:39
Цитата:
Автор: VPolevoj
Жаль, что ты не понимаешь, как такое можно сделать...
Цитата:
Автор: TimKruz
Вместо того, чтоб жалеть, лучше б вкратце описал - как.

Как...

Представь себе косяк рыб (лучше мальков), у них как раз задействован этот механизм (отзеркаливания направления движения). Вот, как ты думаешь, они четко знают, какое направление движения у них выбрано в каждый момент времени? И как у них задается это направление: вектором, или координатами?

А теперь перейдём к аниматам (компьютерным существам).

Представь поле (мир, в котором они живут), без координат (что-то вроде чистого белого листа). И поэтому этим аниматам все равно куда двигаться - у них нет заданного направления. Куда он идёт - там у него и "перёд": справа у него "право", слева - "лево", а сзади - "сзади".

А рядом с ним еще один анимат, у которого тоже "перед" и "зад" задаются относительно его собственного движения: вот, куда он идёт, там у него и "перёд".

А теперь добавь каждому из них функцию "отзеркаливания".

Как?

Есть несколько способов.
Ну, например. Допустим, у каждого из этих аниматов есть заметная метка "под хвостом", то есть, сзади. И если такой анимат куда-то идёт, то другие аниматы видят эту его метку, и идут в этом направлении.

Еще один способ. Допустим, у этих аниматов есть два глаза - справа и слева - и предположим так же, что их задача - это сделать так, чтобы по-возможности и справа и слева был бы кто-то в поле зрения из своих аниматов (то есть, мы задаем им стремление постоянно находится внутри стаи). Допустим теперь, что все пошли (или сместились немного в сторону). Что будет делать одиночный анимат в этом случае? Он постарается догнать всю группу и занять место где-нибудь в середине стаи. Но так будет стараться поступить КАЖДЫЙ. А всё вместе это будет выглядеть как осмысленное групповое поведение.

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

Цитата:
Автор: TimKruz
Это называется "идентификатор" (ID).

ID у меня и без того есть, для каждой записи в БД. А мне нужно имя для каждой созданной процедуры.

Зачем?

А зачем мы даём имена объектам? Для того, чтобы можно было их обозначать в разговоре, для передачи информации.

Причем, человеку удобнее пользоваться своими (собой придуманными) именами, а роботу (программе) удобнее пользоваться своими (внутренними) именами. И поэтому у робота происходит своего рода перевод с одного языка на другой. А если между собой общаются роботы, и, скажем, у них будут задействованы одинаковые Алгоритмы, то им удобнее будет общаться друг с другом используя свои внутренние имена-обозначения для этих процедур, не переходя на "человеческий" язык. Тем более, что ID в БД для этих процедур у этих роботов могут быть разными, а вот имена этим процедурам им желательно давать одинаковые, чтобы роботы могли лучше понимать друг друга.
[Ответ][Цитата]
Vpolevoj
Сообщений: 1408
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 3:39
Изменено: 30 авг 16 3:46
Цитата:
Автор: Vpolevoj
Поэтому нам нужно сделать такую систему, которая бы выстраивала своё поведение, опираясь на своё Внутренне представление о Мире, а не на его реальное состояние. Понимаешь?

Но это и есть - реальная задача, и реальный подход, это то направление, в котором нам нужно копать.

r, я вот что подумал...

Что твоя задача (твой подход) вовсе не противоречит этой моей задаче, а в некотором роде даже дополняет её. Посуди сам.

Как у нас происходит планирование? Мы же не просто задаём ту или иную последовательность своих действий, но и выставляем условия (скажем, если [там, куда мы идём] пойдёт дождь, то нужно заранее взять с собой зонтик). Что это значит?

Это значит, что хоть мы и не знаем РЕАЛЬНОЕ СОСТОЯНИЕ внешнего мира (состояние его триггеров), это всё равно не мешает нам планировать. Просто мы готовимся к этим возможным состояниям ЗАРАНЕЕ. А фактически мы составляем план своих действий с учетом этих возможных состояний внешнего мира, по наибольшим вероятностям их появления, скорее всего, либо по максимальному ущербу для нас, который может возникнуть в том или ином случае (скажем, мы едем всей семьей на дачу, где есть риск оказаться перед запертой дверью, поэтому необходимо взять с собой КЛЮЧ ОТ ДАЧИ заранее).

То есть, я хочу тебе сказать следующее. Что в нашем Виртуальном мире (который существует у нас в голове) происходит всё то же самое, что ты пытаешься запрограммировать, исходя из своей концепции "изолированной комнаты". И поэтому, несмотря на то, что реальное положение дел нам неизвестно, в нашей голове мы манипулируем понятиями "изолированной комнаты", произвольно меняя состояния переключателей (триггеров), и заранее составляя план действий для тех или иных возможных ситуаций.
[Ответ][Цитата]
TimKruz
Сообщений: 323
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 4:45
Цитата:
Залил их сюда. Картинки обновились

Похоже, твои идеи в чём-то похожи на мои, только вместо начальной ассоциации (которая возбуждает всю цепочку) у тебя "условия", а вместо ассоциативной цепочки - список "триггеров"...

Цитата:
Представь себе косяк рыб

Пытался пояндексить "как рыбы плавают стаями", но нашёл только "почему"... Похоже, никто из простых смертных не задумывается, КАК они это делают...

Цитата:
Вот, как ты думаешь, они четко знают, какое направление движения у них выбрано в каждый момент времени? И как у них задается это направление: вектором, или координатами?

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

А вот чтобы понять, в каком направлении плывёт товарищ, и, тем самым, рассчитать ОПТИМАЛЬНЫЙ маршрут (по прямой) - нужно сделать два измерения, т.о. получить две координаты товарища во времени, и получить из них вектор направления.

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

Цитата:
Как?
Есть несколько способов.

Хм, теперь вроде понятно. Аж захотелось запрограммировать стайку роботов.

Вот я теперь думаю, как встроить в мою МСУИИ возможность взаимодействия между экземплярами ИИ, чтобы имитировать общественный разум, а то пока реализована загрузка только одного экземпляра... Теоретически можно запустить два экземпляра МСУИИ одновременно, загрузить в них разные ИИ, и обеспечить им диалог через кастомные сообщения WinAPI, но десяток или сотню ИИ таким способом не запустишь...
[Ответ][Цитата]
Luarvik.
Сообщений: 17287
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 7:24
Изменено: 30 авг 16 7:27
Цитата:
Автор: Vpolevoj
хоть мы и не знаем РЕАЛЬНОЕ СОСТОЯНИЕ внешнего мира...

(Маленький комментарий на то, что Вы регулярно и с большой настойчивостью повторяете.
Может кто-то и успеет прочитать и "отметить", перед тем, как Вы его удалите.)

Если бы мы действительно не знали, что во внешнем мире творится, то мы бы и не выжили.
Вопрос с субъективной реальностью не в том, что она есть и якобы герметична и неадекватна.
Мы видим, разумеется не все, но то, что видим - это действительная и объективная ЧАСТЬ реальности. Не все, но ЧАСТЬ этой реальности, ОДНА ИЗ ее сторон, которая вполне соответствует натуральному положению вещей, настолько, насколько позволяет наша восприимчивость. Искажения есть, но мы искажаем не собственные иллюзии, не подгоняем свои галлюцинации под ответ, мы видим, пусть и через узкую щель, но то, что есть на самом деле [с одной какой-то стороны].
Иначе, повторю, мы не смогли бы ориентироваться в мире, принимать решения, строить прогнозы и т.д.
Т.о. категорическое утверждение, что мы не знаем истиной реальности, следует отвергнуть. Мы ЗНАЕМ, что такое истинная реальность, ЗНАЕМ пусть не все, но часть этой истины, в которой сомневаться себе дороже.
[Ответ][Цитата]
rrr3
Сообщений: 11857
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 8:58
Изменено: 30 авг 16 8:59
Цитата:



(Маленький комментарий на то, что Вы регулярно и с большой настойчивостью повторяете.
Может кто-то и успеет прочитать и "отметить", перед тем, как Вы его удалите.)

Если бы мы действительно не знали, что во внешнем мире творится, то мы бы и не выжили.
Вопрос с субъективной реальностью не в том, что она есть и якобы герметична и неадекватна.
Мы видим, разумеется не все, но то, что видим - это действительная и объективная ЧАСТЬ реальности. Не все, но ЧАСТЬ этой реальности, ОДНА ИЗ ее сторон, которая вполне соответствует натуральному положению вещей, настолько, насколько позволяет наша восприимчивость. Искажения есть, но мы искажаем не собственные иллюзии, не подгоняем свои галлюцинации под ответ, мы видим, пусть и через узкую щель, но то, что есть на самом деле [с одной какой-то стороны].
Иначе, повторю, мы не смогли бы ориентироваться в мире, принимать решения, строить прогнозы и т.д.
Т.о. категорическое утверждение, что мы не знаем истиной реальности, следует отвергнуть. Мы ЗНАЕМ, что такое истинная реальность, ЗНАЕМ пусть не все, но часть этой истины, в которой сомневаться себе дороже.

Не могу не отметить доя молодежи свою точку зрения.
Приведенное выше высказывание, есть полнейшая чушь.
Мы можем знать только результат нашего взаимодействия с реальностью, но никак не реальность в чистом виде, в безотносительном виде, даже самую маленькую ее часть. Эти наши отношения с реальностью вполне позволяют нам как выживать, так и увеличивать свои познания о Мире, но познания всегда относительные...
[Ответ][Цитата]
Luarvik.
Сообщений: 17287
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 9:11
Изменено: 30 авг 16 9:56
Замечу только одно: всякая относительность опирается на какую-то, пусть и совсем крохотную, но абсолютность.
Знания тоже подвержены этому правилу - либо знаешь, либо нет.
Безотносительно. Т.е. - абсолютно.
(В противном случае, всеми выдаваемыми дипломами следовало бы немедленно по получении обклеивать стены городских туалетов.)


Предыдущий оратор в пылу возмущения не заметил, как в одной фразе высказал два взаимоисключащих и взаимопротиворечивых суждения:

"Мы можем знать только результат нашего взаимодействия с реальностью, но никак не реальность в чистом виде..."
срав.
"Эти наши отношения с реальностью вполне позволяют нам как выживать, так и увеличивать свои познания о Мире..."

О каких "познаниях о Мире" может идти речь, если ничего иного вокруг, кроме себя любимого не видишь ?
И даже не себя, а только отрыжку взаимодействий, т.е. результаты трения между собой и внешним миром. Потерся - посмотрел, что там стерлось; потерся - еще раз посмотрел, чего-какой прыщ натер на заднице... А больше ни-че-го !

Так и хочется спросить: а сама относительность-то хоть абсолютна, или тоже относительна ? Если последнее, то... совсем смешно получается
[Ответ][Цитата]
гость
78.25.123.*
На: Программирование поведения робота без доступа к коду
Добавлено: 30 авг 16 11:38
познание реальности начинается с чувственного этапа, но не заканчивается им. мы можем делать индуктивные заключения - реальность так-то провзаимодействует с нами в следующий раз, значит она 'какая-то' и без контакта с нами (сохраняет свойство провзаимодействоать опредеоенным образом). мы можем проидеализировать образ реальности при минимизации своего возмущающего воздействия на нее. квантовая реальность выглядит поэтому как интеллигибельная реальность (внечувственная) - реальность абстрактных сущностей, эволюционирующих автономно от процедуры наблюдения (взаимодействующих между собою).
[Ответ][Цитата]
 Стр.3 (27)1  2  [3]  4  5  6  7  ...  27<< < Пред. | След. > >>