Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / ... (3 стр)

... (3 стр)

Advanced: Тема повышенной сложности или важная.
Страницы: 1 2 3 4 Следующая »
tacПостоялецwww18 ноя. 201723:28#30
прямо в тему
Допустим мы реализуем систему G как 4 пороговых элемента, которые соединены со всеми входами, но у них стоят разные пороги. Элемент а1 будет пропускать сигнал, если число точек больше нуля, а2>1, a3>2, a4>3. И снова мы здесь использовали соединения все со всеми и «перерасходовали» число связей. Но дело в том, что логическая структурная адаптация без физической структурной адаптации действительно дает мало толку.

Но если мы физически откажемся для нашей системы G использовать принцип соединения связей, и заменим на более физически пригодную систему «концентрации жидкости», то ...

https://geektimes.ru/post/145955/ «Жидкий перцептрон» или гипотеза как реализовать реальную параллельность (наиболее интересная в данном контексте)

Правка: 18 ноя. 2017 23:29

kiparПостоялецwww23 ноя. 201718:12#31
Можно генетическое программирование попробовать. Подстраиваться под игрока оно вряд ли сможет, но прийти к тому что надо считать диапазон - по-моему есть все шансы.
tacПостоялецwww23 ноя. 201718:38#32
kipar
> Можно генетическое программирование попробовать. Подстраиваться под игрока оно
> вряд ли сможет, но прийти к тому что надо считать диапазон - по-моему есть все
> шансы.
уже лучше, но нужно знать целевую функцию заранее
thevladПостоялецwww23 ноя. 201719:12#33
лол, что за ерунду я здесь прочитал...

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

Правка: 23 ноя. 2017 19:26

kiparПостоялецwww23 ноя. 201722:52#34
3da
> Могёшь развить идею?
Ну, генетическим программированием можно прийти к бинарному поиску путём комбинирования блоков условий и матопераций. Правда для этого да, целевая функция ака игрок должны будут отвечать на тысячи вариантов алгоритма и соответственно должны быть автоматизированы.
tacПостоялецwww24 ноя. 20170:07#35
3da
kipar
задать то, чему должен обучится ИИ - и получить как писал Таубе - написать самому алгоритм, а потом с удивлением обнаружить, что алгоритм ИИ нашел решение )
kiparПостоялецwww24 ноя. 201710:56#36
tac
только написать надо будет алгоритм игры, а ИИ будет искать оптимальную тактику в ней. В описании игры ничего про бинарный поиск нет.

А если например сделать что число после каждой попытки умножается на два (по модулю 100), то оптимальная тактика уже не будет такой очевидной. Хотя ИИ скорее всего к оптимальной и не придет, но интересно что получится.

3da
> Предлагаешь задать некоторую функцию, которая принимает на вход все числа и ответы которые были ранее и возвращает предполагаемое число?
Ищем функцию "(вопрос, состояние) = f (прошлое_состояние, предыдущий_ответ)" которая говорит какое число спрашивать у пользователя.
Оптимальная функция нам известна - та которая в "состояние" хранит диапазон, загадывает середину и делит его пополам.
ГП должно прийти если не к к оптимальной то к чему-то близкому.

tacПостоялецwww24 ноя. 201712:16#37
kipar
> написать надо будет алгоритм игры
не только, учителя по сути, который по какому то принципу будет отбирать пригодные решения /этот принцип и есть целевая функция/ ... в ГА нужно иметь эволюционный отбор, иначе ничего не получится

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

Правка: 24 ноя. 2017 14:20

kiparПостоялецwww24 ноя. 201714:21#38
tac
ну да, еще оценку. Насколько близко вопросы приблизились в загаданному числу если угадать не удалось \ сколько потребовалось шагов чтобы угадать если угадали.
В любом случае алгоритма бинарного поиска в этой оценке не заложено.
tacПостоялецwww24 ноя. 201714:48#39
kipar
> Насколько близко вопросы приблизились в загаданному числу если угадать не
> удалось
а это не результат ли алгоритма поиска :)
kiparПостоялецwww24 ноя. 201714:58#40
tac
нет, это "оценка = min(старая_оценка, abs(загаданное-вопрос))"
tacПостоялецwww24 ноя. 201715:54#41
kipar
нет, это "оценка = min(старая_оценка, abs(загаданное-вопрос))"

:) ты смеешься

я выделил, чтобы получить оценку - надо знать ответ :)

Правка: 24 ноя. 2017 16:01

kiparПостоялецwww24 ноя. 201716:25#42
tac
конечно надо знать ответ. Мы испытываем ИИ который должен угадывать числа. Для этого мы загадываем число, в цикле отвечаем на вопросы ИИ, в конце (после Н ответов или победы) даем оценку ИИ - либо он угадал и тогда оценка равна числу ходов до угадывания, либо не смог угадать и тогда оценка = дистанции самого близкого вопроса. Так повторяем много раз (например для каждого из 100 чисел), берем среднюю или худшую оценку. Ну и дальше скрещивания, мутации, повторить.
kiparПостоялецwww24 ноя. 201720:45#43
3da
входные параметры функции - один последний ответ (ну ок, для простоты - и соответствующий ему вопрос), а также некое "состояние" которое алгоритм использует как хочет. Соответственно алгоритм должен "догадаться" хранить в нем диапазон.
tacПостоялецwww24 ноя. 201722:10#44
kipar
> Мы испытываем ИИ
смысл всех этих операций? мы уже написали один алгоритм, который все делает, и хотим получить то что и так известно и получается много быстрее , более того создается иллюзия и ничего более, что нашелся алгоритм сам по себе, а по сути мы просто решили систему нескольких уравнений, причем более чем не оптимально
Страницы: 1 2 3 4 Следующая »

/ Форум / Программирование игр / Игровая логика и ИИ

Тема закрыта.

2001—2018 © GameDev.ru — Разработка игр