public SimpleAnt Clone() { SimpleAnt clone = new SimpleAnt(mAntColony, mAntGeneratorContext); clone.Copy(this); return(clone); }
public virtual double Evaluate(SimpleAnt agent) { if (mEvaluator != null) { return(mEvaluator(agent)); } throw new ArgumentNullException(); }
public virtual void Copy(SimpleAnt rhs) { mData.Clear(); for (int i = 0; i < rhs.mData.Count; ++i) { mData.Add(rhs.mData[i]); } mCost = rhs.mCost; }
public Ant GenerateAnt(object info) { if (mAntGenerator != null) { return(mAntGenerator(info)); } SimpleAnt p = new SimpleAnt(this, info); Ant cast_p = p as Ant; if (cast_p == null) { throw new ArgumentNullException(); } return(cast_p); }
public AntSystem(int population_size, int state_count, CostEvaluationMethod evaluator, CreateAntMethod generator = null) { mEvaluator = evaluator; mStateCount = state_count; if (generator == null) { mAntGenerator = (info) => { SimpleAnt p = new SimpleAnt(this, info); Ant cast_p = p as Ant; return(cast_p); }; } mAnts = new Ant[population_size]; mPheromones = new double[mStateCount, mStateCount]; mTau0 = 1.0 / state_count; }