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); }
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); }
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); }