gpt4 book ai didi

c# - 使用 AForge Genetic 库来决定塔防游戏中波浪的生成组成

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:28 25 4
gpt4 key购买 nike

我正在尝试使用 GA 在类似于植物大战僵尸的塔防游戏中创造更强大的敌人波。每个种群代表一个波,每个染色体代表一个敌人(1011 = 基本敌人,1111 = 敌人 2 等)我正在使用 AForge 库,但是我想知道是否可以设置初始种群而不是随机生成和我如何为群体中的每条染色体设置 x 和 y(距离和损伤)的值。我也不完全确定 Range 代表什么。抱歉,如果我遗漏了一些简单的东西,或者我误解了它是如何工作的,这就是我目前所拥有的,谢谢:

 public class UserFunction : OptimizationFunction2D
{
private double distanceMax = 1;
private double damageMax = 1;
private double w1 = 1;
private double w2 = 1;


public UserFunction() :
base(new Range(0, 100), new Range(0, 100)) { }

public override double OptimizationFunction(double distance, double damage)
{
return (w1*distance/distanceMax) + (w2*damage/damageMax);
}
}

class RunProgram
{
private Population[] populationArray = new Population[5];
private UserFunction userFunction = new UserFunction();
private BinaryChromosome chromosome = new BinaryChromosome(4);
private int popSize = 20;
private double mutateRate = 0.3;
private double damage;
private double distance;
private double limit = 100;


public RunProgram()
{
Pop();
}

private void Pop()
{
// create genetic population
for (int i = 0; i < 5; i++)
{
populationArray[i] = new Population(popSize,
chromosome,
userFunction,
new RouletteWheelSelection());
}

foreach (var pop in populationArray)
{
pop.MutationRate = mutateRate;
}

for (int i = 0; i < 50; i++)
{
foreach (var pop in populationArray)
{
pop.RunEpoch();
}
}


Array.Sort(populationArray, delegate(Population population1, Population population2) {
return population1.FitnessAvg.CompareTo(population2.FitnessAvg);
});


EnemyList(populationArray[4]);
Console.ReadLine();
}

void EnemyList(Population population)
{
for (int i = 0; i < popSize; i++)
{
Console.WriteLine("enemy "+ i +" is: "+population[i]);
}
}
}

最佳答案

我认为所有种群都在接近最佳波浪。因此,除非每个波浪都有独特的条件,否则用人口表示波浪是没有用的。

关于c# - 使用 AForge Genetic 库来决定塔防游戏中波浪的生成组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15361423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com