コード例 #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Parameters"></param>
        /// <param name="Dim"></param>
        /// <param name="DimObjs"></param>
        /// <exception cref="ArgumentException">If <paramref name="Parameters"/> is not initialized.</exception>
        protected virtual void Init(FWParams Parameters, int Dim, int DimObjs)
        {
            if (!Parameters.IsParamsInit)
            {
                throw new ArgumentException("The parameters were created by the default constructor and have invalid values. You need to create parameters with a custom constructor.", nameof(Parameters));
            }

            _parameters = Parameters;

            _minDebrisCount = _parameters.Smin;
            _maxDebrisCount = _parameters.Smax;

            if (_coordNumbers == null)
            {
                _coordNumbers = new int[Dim];
            }
            else if (_coordNumbers.Length != Dim)
            {
                _coordNumbers = new int[Dim];
            }

            if (_chargePoints == null)
            {
                _chargePoints = new List <Agent>(_parameters.NP);
            }
            else
            {
                _chargePoints.Clear();
                _chargePoints.Capacity = _parameters.NP;
            }

            if (_debris == null)
            {
                InitDebris();
            }
            else if (_debris.Length != this.Parameters.NP)
            {
                InitDebris();
            }

            int newSizeMatrix = checked (_parameters.NP - 1 + _parameters.NP * _minDebrisCount);

            _weightedAgents = new List <WeightOfAgent>(newSizeMatrix);

            _pool = new AgentPool(_parameters.NP * _maxDebrisCount / 2, new AgenCreator(Dim, DimObjs));

            if (_matrixOfDistances == null)
            {
                _matrixOfDistances = new DynSymmetricMatrix(newSizeMatrix);
            }
        }
コード例 #2
0
 /// <summary>
 /// <see cref="IBaseOptimizer{TParams, TProblem}.Minimize(TParams, TProblem)"/>.
 /// </summary>
 /// <param name="Parameters"> </param>
 /// <param name="Problem">    </param>
 /// <param name="Reporter">   </param>
 /// <param name="CancelToken"></param>
 public abstract void Minimize(FWParams Parameters, TProblem Problem, IProgress <Progress> Reporter, CancellationToken CancelToken);
コード例 #3
0
 /// <summary>
 /// <see cref="IBaseOptimizer{TParams, TProblem}.Minimize(TParams, TProblem)"/>.
 /// </summary>
 /// <param name="Parameters"></param>
 /// <param name="Problem">   </param>
 /// <param name="Reporter">  </param>
 public abstract void Minimize(FWParams Parameters, TProblem Problem, IProgress <Progress> Reporter);
コード例 #4
0
 /// <summary>
 /// <see cref="IBaseOptimizer{TParams, TProblem}.Minimize(TParams, TProblem)"/>.
 /// </summary>
 /// <param name="Parameters"> </param>
 /// <param name="Problem">    </param>
 /// <param name="CancelToken"></param>
 public abstract void Minimize(FWParams Parameters, TProblem Problem, CancellationToken CancelToken);
コード例 #5
0
 /// <summary>
 /// <see cref="IBaseOptimizer{TParams, TProblem}.Minimize(TParams, TProblem)"/>.
 /// </summary>
 /// <param name="Parameters"></param>
 /// <param name="Problem">   </param>
 public abstract void Minimize(FWParams Parameters, TProblem Problem);