コード例 #1
0
    private List <OrgStats> GetNewStats(List <Player> player)
    {
        //Create a mating pool
        List <OrgStats> pool = new List <OrgStats>();

        for (int i = 0; i < player.Count; ++i)
        {
            int      count    = player[i].Score();
            OrgStats orgStats = player[i].Stats();
            //Repeatedly add a gene according to its score
            for (int j = 0; j < count; ++j)
            {
                pool.Add(orgStats);
            }
        }
        List <OrgStats> newGen = new List <OrgStats>();

        //Generate a new population from the gene pool
        for (int i = 0; i < stats.popCount; ++i)
        {
            OrgStats f     = pool[Random.Range(0, pool.Count)];
            OrgStats s     = pool[Random.Range(0, pool.Count)];
            OrgStats child = OrgStats.FromGene(OrgStats.CrossAvg(f, s, 0.1f, 20));
            newGen.Add(child);
        }
        return(newGen);
    }
コード例 #2
0
 public void Init(OrgStats stats, EnvStats envStats)
 {
     speed         = stats.speed; range = stats.range; angle = stats.angle; rSpeed = stats.rSpeed;
     moveSpeed     = speed;
     rotSpeed      = rSpeed;
     this.envStats = envStats;
     score         = 0;
     if (radar == null)
     {
         Debug.LogError("Radar is Null");
     }
     radar.SetValues(range, angle);
 }
コード例 #3
0
    public static Player Create(EnvStats env, GameObject prefab, Vector3 pos, Vector3 forward, OrgStats stats)
    {
        GameObject p = Instantiate(prefab, pos, Quaternion.LookRotation(
                                       forward
                                       ));
        Player playa = p.GetComponent <Player>();

        playa.Init(stats, env);
        return(playa);
    }