Beispiel #1
0
        public SimpleAnt Clone()
        {
            SimpleAnt clone = new SimpleAnt(mAntColony, mAntGeneratorContext);

            clone.Copy(this);
            return(clone);
        }
Beispiel #2
0
 public virtual double Evaluate(SimpleAnt agent)
 {
     if (mEvaluator != null)
     {
         return(mEvaluator(agent));
     }
     throw new ArgumentNullException();
 }
Beispiel #3
0
 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;
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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;
        }