В Java:
Set<Integer> set = new LinkedHashSet<Integer>(3);
set.add(1);
set.add(2);
set.add(3);
Random rand = new Random(System.currentTimeMillis());
int[] setArray = (int[]) set.toArray();
for (int i = 0; i < 10; ++i) {
System.out.println(setArray[rand.nextInt(set.size())]);
}
Я построил эволюционный алгоритм для пополнения розничных запасов продукта, ориентированного на огромные питомники растений (а есть и действительно большие, умные - компании с оборотом 200 млн долларов).
Вероятно, это было так. самая крутая вещь, над которой я когда-либо работал. Используя исторические данные за три года, он работал и развивался в течение недели, пока я был в отпуске.
Конечные результаты были как положительными, так и странными. На самом деле, сначала я был почти уверен, что он сломался.
Алгоритм игнорировал продажи за предыдущие несколько недель, давая им вес 0 для всех индикаторов (что противоречит тому, как эти парни работают в настоящее время - прямо сейчас они рассматривают ту же неделю в предыдущем году, а также учитывают последние тенденции).
В конце концов я понял, что происходит. С индикаторами, с которыми приходилось работать организму, со временем было более эффективно смотреть на ту же часть предыдущего месяца и игнорировать последние тенденции.
Таким образом, вместо того, чтобы смотреть на последние несколько дней, он смотрел на ту же неделю в предыдущем месяце, потому что были некоторые тонкие, но устойчивые тенденции, которые повторяются каждые 30 дней. И они были более надежными, чем более изменчивые повседневные тенденции.
И результатом стало значительное и воспроизводимое повышение эффективности.
К сожалению, я был так взволнован этим, что рассказал об этом заказчику и они отменили проект. Этот первый запуск был чрезвычайно многообещающим, но его трудно было продать в качестве доказательства, хотя вы могли обработать практически любые данные за последние три года и увидеть, что алгоритм волшебным образом повысил эффективность. EA несложные, но люди сначала находят их запутанными, и идея сделать что-то настолько загадочное было слишком трудным, чтобы его проглотить.
Главный вывод для меня заключался в том, что если я когда-либо создаю что-то, что кажется слишком волшебным, я должен воздержаться от разговоров об этом, пока я может составить хорошую презентацию. :)
Несколько раз назад я нашел эту серию статей: Designing Emergent AI .
Автор этих статей создал игру «AI War: Fleet команда ", которая включает в себя возникающий ИИ. Может быть, вам это будет интересно.
Для меня одна из самых интересных вещей в ИИ - это очень давняя дискуссия, начатая Родни Бруксом о его поведенческой архитектуре, называемой архитектурой подчинения .
Он полностью отказывается от всех видов символических представлений и всегда говорит: возьмите мир как свою модель. Это избавляет робота от создания неправильного мировоззрения и всех сложных проблем при исправлении модели.
Он опубликовал много интересных книг и был одним из первых, кто применил подход воплощенного познания, который в настоящее время широко используется в исследованиях.
Интересные материалы для чтения можно найти на http://people.csail.mit.edu/brooks/index.html . Некоторые из его более поздних публикаций становятся очень философскими,
До сих пор самым впечатляющим аспектом ИИ было соотношение обещаний и поставок. На мой взгляд, единственный по-настоящему жизнеспособный подход к компьютерному интеллекту - это моделирование нейронных сетей, потому что все вещи в реальном мире, которые мы считаем «разумными» (люди, шимпанзе, собаки, тараканы и т. Д.), Имеют варианты той же базовой системы управления: большой беспорядок нейронов, подключенных к устройствам ввода и вывода.
Удивительно, несмотря на эту очевидную истину, область компьютерных наук, которая называет себя «нейронными сетями», в значительной степени отказалась от попытки моделирования реальных биологические нейроны и нейронные структуры. Я не могу сказать вам, почему это так, хотя подозреваю, что это так »
Немного за пределами традиционной области ИИ находятся HTM (Иерахическая временная память), разработанные в Numenta . Эта технология все еще находится на начальной стадии, но дает многообещающие результаты в целевых областях "WOW-фактора".
Я нашел недавнее исследование эволюции и сотрудничества между роботами очень интригующим. Эта запись в блоге дает хорошее резюме эксперимента и его результатов. Самым интересным для меня было наблюдаемое поведение ИИ-мученика и «злого» ИИ.
Существует амбициозный открытый исходный код Java-библиотеки CILIB , которая обеспечивает множество методов вычислительной разведки. В настоящее время он используется на уровне университета по исследовательской группе для продвижения собственных исследований.