/// <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); } }
/// <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);
/// <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);
/// <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);
/// <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);