LINUX.ORG.RU

Собираю команду разработчиков движка AI (LGPL)


0

0

Собираю команду разработчиков движка AI. Над задачей работаю полгода.
Пока только теория + подбор и тестирование граф.библиотек.
Движок задумывается на основе семантических сетей и формальной логики. Программы - под GPL/LGPL.
Если у кого есть опыт в моделировании поведения ботов в играх и готов принять участие - welcome.
Проект - некоммерческий.
Приветствуется знание Python/Tk, C, C++, граф.движка Irrlicht, OpenGL.

http://www.gamedev.ru/projects/forum/?id=62018
http://www.gamedev.ru/projects/forum/?id=61196 (Open Source-проект, куда можно встроить движок)

★★★★★

Ответ на: комментарий от acefsm

Может AI писать на prologe или на scheme? Scheme легко встраивается. Так же и haskell подойдёт. Но на c++ будет слишком сложно.

krum
()
Ответ на: комментарий от krum

Одно время сравнивал кучу языков программирования. Всех больше понравился понравился elk (красота кода+быстродействие+наличие кой-каких биндингов).

Так что среди "нетрадиционных" языков больше склоняюсь к выбору Elk Scheme.
На Прологе когда-то программировал, но для моей математической модели его возможности слабоваты. Возможностей Scheme и Haskell не знаю.

Но обоснуйте, пожалуйста, на примерах преимущества создания системы логического вывода + обычного числодробительного движка на Scheme ...
Например, чем лучше этот язык для:
- вычисления обычных сглаживающих фильтров (числодробилка);
- поиска компонент связности графа (NP-сложная задача);
- поиска кратчайшего пути в графе;
- умножения числовых матриц (числодробилка);
- (можете продолжить список алгоритмами с http://algolist.manual.ru/) ...

pacify ★★★★★
() автор топика
Ответ на: комментарий от acefsm

Порекомендуйте какую-нибудь небольшую статью по этому вопросу ?
Я прочитал статью по функциональному и логическому программированию на вики.
В рамках логического программирования можно переложить вывод на транслятор.
Но тогда вопрос - откуда уверенность, что транслятор языка будет эффективнее производить логический вывод быстрее, чем самописная программа на Си ?
Тот же вопрос к программе на LISP'е.
Видимо, речь об эффективности вычислений не идет ? Просто алгоритмы логического вывода записываются на LISP/Scheme элегантнее ?

pacify ★★★★★
() автор топика
Ответ на: комментарий от acefsm

На Scheme механизм логического вывода проще писать. А для числодробилок лучше, конечно, использовать C++.

krum
()
Ответ на: комментарий от tailgunner

> А где можно почитать о реализуемых алгоритмах?

Пока строится математическая модель и составляются требования к открытым протоколам обмена информацией с внешними программами и внутренними модулями. До алгоритмизации функций пока дело не дошло.
В течение полугода у меня исписано 38 страниц текста с различными идеями на тему ИИ, базы знаний. Многое придется отбраковать, но основные проблемы семантических сетей, которые я собираюсь использовать в качестве основы, вроде бы ясны.
Я связался с двумя разработчиками системы виртуального мира на gamedev.ru, в этом месяце мы должны будем составить принципы работы системы и написать спецификации на движок ИИ. Потом будет типа технических заданий мне на разработку. Все наши разработки по ИИ собираемся выкладывать в открытом доступе на страничке http://discrete.vyatka.org/

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

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

Такие распространенные алгоритмы уже реализованы на любом сколько-нибудь популярном языке, например Common Lisp (cl-math, cl-graph, ...). Кстати лучше выбрать его, а не scheme для чего-то серьезного.

grob ★★★★★
()
Ответ на: комментарий от grob

>Ура! P = NP !!!

О.. доказали-таки :) ЛОР рулит

Миллион баксов предлагаю поделить между анонимусами.

Davidov ★★★★
()
Ответ на: комментарий от grob

>> - поиска компонент связности графа (NP-сложная задача);
>
> Ура! P = NP !!!

Ну, я знаю по-крайней мере одну задачу, в которой мой тезис подтверждается.
А Вам известен полиномиальный алгоритм выделения компонент связности произвольного графа ?

pacify ★★★★★
() автор топика

Если не изменить подход к задаче, проект мертворожденный.

1. Преждевременная оптимизация --- корень всех зол.

2. У тебя нет макета, есть только ничем не проверенные идеи на бумаге. При реализации ты будешь передумывать, переделывать и переписывать 100 раз. На C/C++ ты потратишь 90% времени на [пере]кодирование, вместо того, чтобы получать качественные результаты, пусть на скорости в 10 раз меньше, чем будет в результате. Результат на C/C++ будет: глючная каша, в которой сами разработчики ногу сломят через полгода. После этого проект умрет, т.к. развивать дальше возможности не будет.

watashiwa_daredeska ★★★★
()
Ответ на: комментарий от tailgunner

Открыт форум проекта
http://discrete.vyatka.org/forum/viewforum.php?id=1

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

pacify ★★★★★
() автор топика
Ответ на: комментарий от pacify

> А Вам известен полиномиальный алгоритм выделения компонент связности произвольного графа ?

А его существование не очевидно? Можно тупо добавлять по одной вершине и смотреть, с какими из уже выделенных компонент она соединена и соответственно добавлять/объединять. Гораздо сложнее придумать нетривиальный неполиномиальный алгоритм для этой задачи :) А так есть Tarjan's algorithm, O(количества ребер).

grob ★★★★★
()
Ответ на: комментарий от grob

> А так есть Tarjan's algorithm, O(количества ребер).
Ага. Что-то я ступил. Полиномиальный алгоритм очевиден.

pacify ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.