|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
|
Алгоритм искусственного интеллекта (ИИ)19.05.2014, 02:12. Показов 8969. Ответов 56
Метки нет (Все метки)
Чтобы понять что-то серьезное, требуется начать с малого. Поэтому есть цель начать создавать ИИ с моделирования поведения простейших и двигаться дальше.
Я понимаю, что сейчас будут ссылки на подобные эксперименты. Но, хотелось бы начать именно с нуля. Кто-то скажет, что это тупиковый вариант (и, скорее всего, даже не станет объяснять почему). Или скажет, что это слишком долго, кто будет обучать ИИ и т.д. Возможно, в теме вообще никто не ответит. Я готов и к такому повороту событий. Вероятно, появятся те, кто не верят в создание ИИ вообще или в создание ИИ силами программистов на форуме. Конечно, не исключено, что ИИ - это вечный двигатель нашего времени и он просто невозможен. Также, не исключено, что проект будет столь обширен, что усилий даже всех специалистов форума не хватит для его решения... Но я все-таки уповаю на то, что интеллект у машины возможен (хотя бы на уровне мышления Спока , и в таком случае, овчинка стоит выделки, ведь создать ИИ - значит увековечить своё имя в истории и получить хороший профит в настоящем. Ну, а если не будет хватать сил, фантазии или каких-либо других ресурсов, всегда можно найти их дополнительно, также совместными усилиями. Итак, если есть желание немного поломать мозги над созданием искусственных мозгов, милости прошу в эту ветку. Формат взаимодействия я предлагаю следующий: 1. Мной выкладывается алгоритм 2. Мы его обсуждаем 3. Один или несколько человек берутся реализовывать его 4. Полученный код выкладывается на форуме 5. Этап тестирования 6. Исправление ошибок Процесс вполне прост и понятен. Однако, в условиях различных специалистов, которые могут откликнуться на подобное предложение, предполагается, наличие кода на разных языках и с разным типом реализации исходной идеи-задачи. Это приводит к выбору идеальной стратегии из имеющихся, и выбору наиболее удобного языка под каждую часть типа ИИ. Начнем с более простых задач, а затем перейдем к более сложным. Итак, 1-я задача: База и движение Поле для движения ИИ 20*20 клеток Вид сверху Клетки белого цвета нейтральны Клетки кодируются так же, как и в "морском бое". Буквы по горизонтали и цифры по вертикали ИИ (отдельная подпрограмма) занимает 1 клетку Цвет черный ИИ может ходить на 1 клетку за раз в любую из 8 сторон (пока рандомно) Задача 2-я Зрение и ориентировка в пространстве ИИ сканирует всё поле и узнает, где какого цвета клетки (пока только цвет) После сканирования поля, ИИ получает ту же карту, что и видим мы на экране при взгляде сверху. Обозначая поля клеток А1, А2, А3.. и, соответственно свое местоположение Черный цвет приравнен к "Я" изначально После каждого шага, ИИ делает новое сканирование поля Поясню: это не ИИ, а пока лишь плацдарм для ИИ. Собственно, интеллект начнется со следующей задачи, но необходимо же от чего то отталкиваться. Вопросы к обсуждению: Реалистично ли выполнить подобную программу? На мой взгляд, самое сложное - это реализовать сканирование поля и создание внутренней карты у ИИ. Но, я могу ошибаться. Если необходимо разобрать это подробнее, можем разобрать. Есть ли у кого-либо готовность выполнить эти участки кода? Или уже выложить результаты реализации?
1
|
|
| 19.05.2014, 02:12 | |
|
Ответы с готовыми решениями:
56
Модели и методы искусственного интеллекта Слишком медленный алгоритм искусственного интеллекта игры Балда Интегральная теория искусственного интеллекта |
| 13.06.2014, 00:19 | |
|
0
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 05.07.2014, 14:36 | ||||||
|
задача 1.
Алгоритм программы: 1) для поля 20*20 был создан массив размером 22*22 2) периметр этого массива был заполнен числом 1 3) центральная часть массива состоит из нулей 4) 0 - означает, что место свободно (1 - занято) 5) рандомно помещён объект в виде буквы "О" 6) рандомно задается шаг ±1 как по оси абсцисс, так и по оси ординат 7) в цикле DO проверяется рандомная рядом стоящая клетка на предмет нет ли в ней чего (0 - свободно) 8) если свободно, то объект перемещается, а нет - вновь рандомно вычисляется очередной шаг. 9) для выхода из программы нажмите любую клавишу Примечание: Программа такова, что объект будет свободно обходить любые препятствия. (например пройти лабиринт)
0
|
||||||
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 07.07.2014, 20:49 | ||||||
|
По сути, та же программа, но добавлена стена с проходом
0
|
||||||
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 09.07.2014, 07:30 | ||||||
|
предлагаю вам ещё один вариант предыдущей программы.
Их много (40) и поведение сложнее, так создаются программы с ИИ
0
|
||||||
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
|
| 16.07.2014, 00:24 [ТС] | |
|
xod, спасибо Вам огромное за ответ и ряд представленных алгоритмов! Но есть небольшая проблема с компиляцией QBasic. Есть ли подходящие программы под Windows 7, 64-разрядный? Поскольку очень хочется взглянуть на результат представленного Вами кода.
1
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 16.07.2014, 09:05 | ||||||
|
Насколько мне известно, Windows 7 (32) поддерживает
Dos-программы (эмуляция Dos). Полагаю (уверен), что и в вашей ОС все должно работать. Если нет?? Но что ж в конце-концов алгоритм есть и подобную программу можно написать на ином языке (например VB). В общем дело в нас, в нашем желании двигаться к намеченной цели, и успех придёт. Надо будет сменяем и язык. P.S. В этих программах я понял главное: 1) для управления объектами надо создать матрицу на два размера больше, чем поле деятельности объектов 2) объекты можно различать, если в матрице обозначать их разными числами 3) объекты могут обходить препятствия 4) объекты могут взаимодействовать друг с другом (например можно устроить сражение двух армий, сражённый объект будет исчезать с поля боя) и т.д. Удачи вам! Добавлено через 1 час 15 минут Предлагаю еще одну программу. Она напоминает пьяную драку 20 против 20. Противники различаются видом: "O" против "Y" если одна сторона победит другую, то программа сама остановится. Выход из программы - нажать любую клавишу.
0
|
||||||
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
|
| 17.07.2014, 00:08 [ТС] | |
|
Только вот 64-разрядный, к сожалению, не поддерживает эмуляцию Dos.. Пробовал несколько компиляторов, все не сработали. Но посмотрю ещё.
По сути, да, язык не столь важен, как сам алгоритм. Далее важно добавить некое стремление. Без стремления - наша заготовка под ИИ будет ждать команд, что не очень-то похоже на жизнь. Так вот у каждого живого существа есть цель. Цель задается некой потребностью. Достижение цели и есть стремление. В простейшем варианте мы можем взять концепцию "насыщения". 1. Есть шкала сытости (переменная сытость = потребность) от 0 до 100. 2. ИИ каждый раз отслеживает значение переменной "сытость" после сканирования поля (сканирование поля делается после каждого шага). 3. Стремиться к увеличению этой шкалы (по сути, цель). Т.е. действие связанное с увеличением этой шкалы будет приоритетным. На этом пункте самый главный вопрос: как это реализовать в программе?
0
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 17.07.2014, 15:51 | ||||||
|
написал ещё одну программу, ещё один шаг в ИИ.
Итак, 10 овец (О) пасутся на поле, где в 50-ти местах растёт трава. (+) В этой программе я добавил ещё одну матрицу: она характеризует "сытность" овцы в %%. Изначально все овцы сыты на 50%. Теперь овцы обладают свойством (зрением) видеть что у них под ногами. То есть программа проверяет все 8 квадратиков куда может идти овца. И если хоть в одном квадратике есть трава (в матрице она имеет номер 3), то овца съест эту траву и ей прибавится 10% сытности. Проверка программы показала (в среднем), что из 10-ти овец одна так ничего и не ела, а другая (крайность) съела (сыта) на 200%. Что делать? (Вопросы) 1) если одна овца наелась на 100%, она не должна больше есть?? (поесть все любят) 2) как овцы должны тратить энергию? Задать какой- либо период времени? (Число характеризующее сутки?) 3) трава должна все время расти?? Разом?? Или одну травку съели - выросла другая? 4) увеличить у овец дальность зрения? 5) зрение круговое или некий сегмент? Тут есть над чем подумать, ведь наличие зрения заставляет овцу действовать более логично, а не шататься из стороны в сторону. А вот сама программа:
1
|
||||||
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
||
| 18.07.2014, 19:37 [ТС] | ||
|
По поводу вопросов: 1. Думаю, нужная переменная сытости, которая не может превышать 100%. После насыщения на 100%, может идти, например, размножение. 2. Да, энергию могут тратить, ориентируясь на машинное время в несколько секунд или на размножение. 3. Трава, наверное, также может размножаться на соседней клетке, если съедена, то уже не размножается. 4, 5. Смотря какие цели преследуются: если некая имитация простых живых организмов, то можно оставить так. Но если планировать дальше, вводить простые логические операции мышления, то можно и увеличить на всю площадь. И все-таки мучает вопрос: на чем Вы компилируете QBasic? Или не могли бы добавить комментарии к кускам кода, чтобы легче перенести его на другой язык?
1
|
||
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
|
| 18.07.2014, 20:03 | |
|
Вообще говоря мне нет необходимости компилировать код.
QBasic сразу запускает код на исполнение, без всякой компиляции Но если бы была такая необходимость, то у меня есть ещё две программы QuickBasic 4.5 и QuickBasic 7.1. Они прекрасно справятся с любой программой QBasic. Что касается комментариев, то да, я могу подробно прокомментировать любую из написанных мною программ прямо по их коду. Завтра же и прокомментирую последнюю из написанных программ. (можно и волков в программу вставить Но надо подумать) Удачи вам!
0
|
|
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
||
| 18.07.2014, 23:33 [ТС] | ||
|
1
|
||
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 19.07.2014, 08:21 | ||||||
|
Да, я слышал о QB64
Он не поддерживает определение функций с помощью оператора DEF Но ту же функцию можно записать иначе: FUNCTION "имя функции" (ее параметры) здесь тело функции END FUNCTION Вот и все, и компилятор ругаться не будет Привожу вам последнюю программу с комментариями Если что не очень понятно, пишите - подробно объясню.
1
|
||||||
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
|
| 20.07.2014, 21:06 [ТС] | |
Буду искать что-то еще для запуска кода, поскольку qb64 выдал новый перл после исправления DEF на FUNCTION, теперь по поводу строки: 18 (RANDOMIZE TIMER) "statement cannot be placed between sub/functions on current line".А комментарии к коду великолепны - всё прозрачно и ясно!
1
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
|||||||||||
| 21.07.2014, 14:19 | |||||||||||
|
вот ещё на один шаг мы стали ближе к ИИ !!
Да! Мы! Без вас бы я так далеко не пошёл бы. В этой программе увеличена дальность зрения овцы, теперь она составляет 2 шага. Пришлось матрицу А() тоже увеличить на 2 размера. Это естественно. Если этого не делать, то горизонт будет ограничен и придётся вводить много лишнего кода, чтобы учитывать эти ограничения. Работая над программой я понял, что можно ввести зрение близкое к тому, которое существует в природе. В самом деле мы сейчас используем тотальный перебор, Но в природе его нет. Например человек хорошо видит то, что близко и лишь фрагменты и контуры того, что далеко, но ведь то же самое можно задать в программе!! Надо просто проверять не все клетки а выборочно, причём чем больше расстояние, тем реже проверки. Тут надо ещё конечно подумать (я подумаю). А пока мне удалось очень органично вписать в программу новое зрение. Благодаря вам из меня может получиться специалист по ИИ. Следую далее намеченному курсу: Сначала ограничу аппетит овец, а потом заставлю их размножаться. Все результаты (пусть предварительные) буду выводить на форум Удачи вам!
в коде обнаружена опечатка, все исправлено.
0
|
|||||||||||
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
||||||
| 22.07.2014, 00:54 [ТС] | ||||||
|
Спасибо, xod, очень приятно!
Теперь могу в полной мере использовать QBasic, так что посмотрел действие всех программ и заметил, что "овцы" "играют в пошаговую стратегию", т.е. по какой-то причине ходят по очереди, а не одновременно. Или это для удобства наблюдения? "можно ввести зрение" Интересная идея! Я думаю, что зрение можно вводить несколько позже, когда будет заложена "мотивационная" часть. Тем более, что разработки в сфере распознавания образов вполне можно добавить при наличии "разумной" части. По поводу зрения, общие моменты. Природа нас наделила способностью различать: цвет, форму и размеры. Так вот для выживания (если учесть, что есть еще и ночное время суток), наиболее важна следующая последовательность восприятия: 1. Размер 2. Форма 3. Цвет Чем больше объект, тем более он потенциально опасен. После этой первичной проверки, по форме можно отличить "свой-чужой". А если не помогла форма объекта, то днём еще и цвет видно. Начиная с этого куска кода, насколько понимаю идёт действие "овцы", но сейчас у неё жестко привязаны действия к траве. Т.е. "овца", как некий "флюгер" на ветру: увидел-идёт.
Примерный план таков: 1. Сканировать клетку выше надо мной и записать в (файл, матрицу, массив...), сканировать клетку правее и выше надо мной, снова записать и т.д. всё окружение. 2. Проверить уровень "сытости", если ниже определенного уровня, то пойти и съесть. Тогда не будет жесткой привязки к окружению, а действительно осознанный выбор действия. И Вам успехов, xod! С удовольствием и нетерпением жду следующих результатов!
1
|
||||||
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
|
| 22.07.2014, 15:30 | |
|
Хочу ответить на ряд вопросов, которые вы поставили или
поставите. Очередность ходьбы?? Как таковой очередности нет. Кому ходить? - выбирается случайно. Но я вас понял насчёт одновременности. Это продиктовано тем, чтобы сделать код проще. Ибо если я заставлю их ходить "стадом", то могут происходить столкновения - две овцы идут в одну клетку. Иными Словами из двух овец получится одна. Однако вы подкинули хорошую идею - одна овца идёт на два поля - вот вам и размножение. Теперь насчёт цвета. Если ввести ещё одну матрицу, то мы можем каждую клетку или объект характеризовать таким свойством как цвет (32768 цветов)!! Вы понимаете, вы не будете видеть цвет, Но Они его видеть будут, будут различать его ( и сообщать если это надо какого цвета тот или иной объект). Ночь не помеха, если мы только не создадим искусственную ночь. Но тут надо подумать, а что это даст, ведь цвет сведет на нет само понятие день и ночь!! Теперь насчёт интеллекта овец и их разумного поведения. Овцы на данном этапе - это стадо. Их цель поесть, поэтому придать им большую разумность при такой цели вряд ли возможно. Разумное поведение - это поведение подчиненное определённой Цели. Именно цель должна двигать овцами. Что может быть целью?? Ну например ходит парами (зачем? Я не знаю, я только предлагаю) Другая цель, например двигаться по кругу (квадрату), быть около него Подводя итоги, я предлагаю попробовать все понемногу, посмотреть, что получится. А там видно будет. Удачи вам!
0
|
|
|
10 / 10 / 0
Регистрация: 19.05.2014
Сообщений: 22
|
|
| 23.07.2014, 00:45 [ТС] | |
|
Большое спасибо за ответы!
"Вы понимаете, вы не будете видеть цвет, Но Они его видеть будут, будут различать его ( и сообщать если это надо какого цвета тот или иной объект)" Не совсем понял, почему мы не сможем видеть цвета? Начал копаться в QBasic и насколько понял в режиме SCREEN 13 мы сможем увидеть минимум 256 цветов. "если мы только не создадим искусственную ночь. Но тут надо подумать, а что это даст" Полагаю, что ночь может только добавить реалистичности, но при этом усложнит нам решение основной задачи - создание ИИ. "Овцы на данном этапе - это стадо. Их цель поесть, поэтому придать им большую разумность при такой цели вряд ли возможно. Разумное поведение - это поведение подчиненное определённой Цели. Именно цель должна двигать овцами. Что может быть целью??" Именно желание поесть, выжить и оставить потомство сделало в итоге разумное существо. Так что поесть - может быть еще какой целью. Это имеет высший приоритет перед другими целями (например, пойти прогуляться) И второй важный пункт: Это создать эффект раздражимости, цитаты из биологии: "Любая биологическая система, будь то клетка, организм или сообщество организмов, способна избирательно реагировать на различные воздействия, оказываемые на нее снаружи или изнутри. Это свойство организмов получило название — раздражимость. Ответные реакции живого на различные воздействия служат показателями его чувствительности и обеспечивают возможность его приспособления и выживания в постоянно изменяющихся условиях окружающей среды". "живой организм имеет органы раздражения и реагирует на внешнюю среду. Живой организм способен менять внешнюю среду или обмениваться с ней информацией: атаковать, убегать, прикинуться мертвым, кричать, поднимать шерсть дыбом, выделять смолу и т.п. У высших живых организмов довольно сложные способы обмена информацией". И именно эти 2 шага ведут к созданию раздражимости или "стимула-реакции" при наличии даже лишь одной цели поесть: 1. Сканировать клетку выше надо мной и записать в (файл, матрицу, массив...), сканировать клетку правее и выше надо мной, снова записать и т.д. всё окружение. 2. Проверить уровень "сытости", если ниже определенного уровня, то пойти и съесть. Я надеюсь, что это реалистично и верю в Вас!
1
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
|||||||||||
| 23.07.2014, 15:34 | |||||||||||
|
я предлагаю вам вариант ещё одной программы, которую
правда надо хорошо протестировать. Что нового? Овцы перестали объедаться. Овца съест свои 100% и больше траву не трогает. Что надо тестировать? Овца в программе может пропасть. Пошла гулять и нет ее. Может волки съели?? Так ведь и волков нет!! Короче говоря Реальная программа становится все интереснее и непредсказумее. А ведь они пока ещё не размножаются. А то и вовсе все разбегутся!! Буду идти и далее намеченным курсом. Тест необходим. В противном случае программа выйдет из под контроля и овцы затребуют права человека!! Удачи вам!
прошелся по всей программе. Усилил контроль за овцами Может где опечатка, одна из овец может пойти, а может нет куда-то гулять. Трудно проследить за этим в динамической программе. Ничего, это даже интересно - поймать и на шашлык!!
1
|
|||||||||||
|
|
|
| 23.07.2014, 15:51 | |
|
Добавить параллельность (чтобы овцы бегали все сразу), модель столкновений (можно например по проценту сытости. та, у которой процент сытости меньше, уступает дорогу к еде более сытой. если у сытой 100% сытости, то она уступает дорогу менее сытой. Богатые богатеют, бедные беднеют. Все как в жизни) и будет вообще сказка
1
|
|
|
156 / 46 / 70
Регистрация: 01.07.2014
Сообщений: 185
|
||||||
| 23.07.2014, 17:13 | ||||||
|
зря я ругал программу, она работает как часы.
ошибка была в контрольном коде, вот он меня и путал. Теперь буду двигаться намеченным курсом. Овцы будут тратить энергию. Полагаю, что единицу времени будет не сложно ввести. Предполагаю в программе поставить счётчик, запустить его, обеспечить регулярную выдачу показаний на экран (с правой стороны) в условных единицах. Ещё шаг к ИИ!!
0
|
||||||
| 23.07.2014, 17:13 | |
|
Помогаю со студенческими работами здесь
40
Редакторы и языки искусственного интеллекта Написать программу искусственного интеллекта Реализация алгоритмов искусственного интеллекта
Системы искусственного интеллекта - разобрать код Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика
Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
|