public void makeNewDecision(DecisionArchive archive, Random rand, double xi) { double sigma = calcSigma(archive, xi); decision = new Decision(position); decision.updateDecision(archive[l]); if (rand.NextDouble() > sigma) { decision.invert(); } }
public Colony(int antCount, int decisionArchiveCount, int numPosition, bool Various) { Position = numPosition; for (int i = 0; i < antCount; i++) { Ant the_Ant = new Ant(Position); theAnts.Add(the_Ant); } theArchive = new DecisionArchive(decisionArchiveCount, Position); Value = Various; }
private double calcSigma(DecisionArchive archive, double xi) { double sigma = 0; for (int i = 0; i < archive.Count; i++) { int differ = 0; if (archive[i].Value != archive[l].Value) { differ = 1; } sigma = (differ) / archive.Count; } sigma *= xi; return(sigma); }
public void getL(DecisionArchive archive, Random rand) { double[] propability = archive.Propability; l = getOneOfArchive(propability, rand); }