/* int calculHeuristic() * { * int onDustOrJewels = 0; * int distance = 0; * foreach (Coordonnees c in dust) * { * if (c.distance(posAgent) == 0) * onDustOrJewels++; * else distance += c.distance(posAgent); * } * * foreach (Coordonnees c in jewels) * { * if (c.distance(posAgent) == 0) * onDustOrJewels++; * else distance += c.distance(posAgent); * } * * return weightHeuritic * (jewels.Count + dust.Count) + distance - weightHeuritic * onDustOrJewels; * }*/ private int calculHeuristic(EnumIA.Action a) { int score = heuristic; if (true) { switch (a) { case EnumIA.Action.bas: score--; break; case EnumIA.Action.haut: score--; break; case EnumIA.Action.gauche: score--; break; case EnumIA.Action.droite: score--; break; case EnumIA.Action.aspirer: score += 10; break; case EnumIA.Action.recuperer: score += 30; break; } } /*int distance = 0; * foreach (Coordonnees c in dust) * { * distance += c.distance(posAgent); * } * * foreach (Coordonnees c in jewels) * { * distance += c.distance(posAgent); * }*/ return(score); }
public Coordonnees move(EnumIA.Action ea) { switch (ea) { case EnumIA.Action.gauche: return(new Coordonnees(this.X - 1, this.Y)); case EnumIA.Action.droite: return(new Coordonnees(this.X + 1, this.Y)); case EnumIA.Action.bas: return(new Coordonnees(this.X, this.Y + 1)); case EnumIA.Action.haut: return(new Coordonnees(this.X, this.Y - 1)); default: return(this); } }
public void act(EnumIA.Action ea, Coordonnees c) { if (ag == null) { ag = Agent.Instance; } if (ea == EnumIA.Action.aspirer) { env.aspire(c); } if (ea == EnumIA.Action.recuperer) { env.ramasse(c); } else { ag.Coordonnees = c.move(ea); env.move(); } }
public void empile(EnumIA.Action ea) { _intentions.Enqueue(ea); }