2015-04-11 3 views
4

В настоящее время я экспериментирую с JGAP 3.6, чтобы генерировать уровни для простой игры в подземелье. Проблема заключается в использовании представления хромосом, где каждый ген содержит целочисленное значение, которое представляет тип комнаты, например 0 = стартовая комната, 1 = комната монстра и т. Д.Установите ограничение на ген для хромосомы

Проблема в том, что я хочу убедиться, что есть только одна начальная комната уровня (только один ген со значением 0 в хромосоме). Я прочитал javadocs, в частности, класс Chromosome и Gene, но не нашел простого способа сделать это. Я также рассматривал использование созданного на заказ Джин, но это кажется бесполезным, потому что я полагал, что такого рода «валидация» должна выполняться классом Chromosome, а не классом Gene.

Мой текущий план обхода проблемы заключается в предоставлении большого штрафа при оценке пригодности для хромосом, который не удовлетворяет указанному условию. Любые мысли, решения, предложения или комментарии? Спасибо

ответ

1

Самый простой способ сделать это - ограничить значения Genes в настройке Configuration.

basig примера иметь только один Starting номера в первом гене может быть:

sampleGenes[0] = new IntegerGene(conf, 0, 0); // Starting room 
sampleGenes[1] = new IntegerGene(conf, 1, 5); // Monster room 1 
sampleGenes[2] = new IntegerGene(conf, 1, 5); // Monster room 2 
sampleGenes[3] = new IntegerGene(conf, 1, 5); // Monster room 3 

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

Еще один способ - сделать то, что вы предлагаете. Создайте FitnessFunction, которые наказывают Chromosomes более чем Джин с его значением, равным нулю.

Смежные вопросы