/// <summary> /// Create the object which uses custom implementation for random generators. /// </summary> /// <param name="UniformGen"> Object, which implements <see cref="IContUniformGen"/> interface. </param> /// <param name="NormalGen"> Object, which implements <see cref="INormalGen"/> interface. </param> /// <exception cref="ArgumentNullException"> /// If <paramref name="NormalGen"/> or <paramref name="UniformGen"/> is null. /// </exception> public BBBCOptimizer(IContUniformGen UniformGen, INormalGen NormalGen) { if (NormalGen == null) { throw new ArgumentNullException(nameof(NormalGen)); } _uniformRand = UniformGen ?? throw new ArgumentNullException(nameof(UniformGen)); _normalRand = NormalGen; _denumKahanSum = new KahanSum(); }
/// <summary> /// Create object which uses custom implementation for random generators. /// </summary> /// <param name="UniformGen"> Object, which implements <see cref="IContUniformGen"/> interface. </param> /// <param name="NormalGen"> Object, which implements <see cref="INormalGen"/> interface. </param> /// <exception cref="ArgumentNullException"> /// If <paramref name="NormalGen"/> or <paramref name="UniformGen"/> is null. /// </exception> public GEMOptimizer(IContUniformGen UniformGen, INormalGen NormalGen) { if (UniformGen == null) { throw new ArgumentNullException(nameof(UniformGen)); } if (NormalGen == null) { throw new ArgumentNullException(nameof(NormalGen)); } _uniformRand = UniformGen; _normalRand = NormalGen; _targetFuncWithTransformedCoords = TargetFunctionWithTransformedCoords; }
/// <summary> /// Create the object which uses custom implementation for random generators. /// </summary> /// <param name="UniformGen"> /// Object, which implements <see cref="IContUniformGen"/> interface. /// </param> /// <param name="NormalGen"> Object, which implements <see cref="INormalGen"/> interface. </param> /// <exception cref="ArgumentNullException"> /// If <paramref name="NormalGen"/> or <paramref name="UniformGen"/> is null. /// </exception> public BaseFW(IContUniformGen UniformGen, INormalGen NormalGen) { if (UniformGen == null) { throw new ArgumentNullException(nameof(UniformGen)); } if (NormalGen == null) { throw new ArgumentNullException(nameof(NormalGen)); } _uniformRand = UniformGen; _normalRand = NormalGen; _distKahanSum = new KahanSum(); _denumForProbKahanSum = new KahanSum(); }
/// <summary> /// Create object which uses custom implementation for random generators. /// </summary> /// <param name="UniformGen"> Object, which implements <see cref="IContUniformGen"/> interface. </param> /// <param name="NormalGen"> Object, which implements <see cref="INormalGen"/> interface. </param> /// <exception cref="ArgumentNullException"> /// If <paramref name="NormalGen"/> or <paramref name="UniformGen"/> is null. /// </exception> public FWOptimizer(IContUniformGen UniformGen, INormalGen NormalGen) : base(UniformGen, NormalGen) { }
/// <summary> /// If <paramref name="Value"/> out of range [ <paramref name="MinValue"/>; /// <paramref name="MaxValue"/>], then clipping to a random value in the range. /// </summary> /// <param name="Value"> </param> /// <param name="MinValue"> A minimum value of the range. </param> /// <param name="MaxValue"> A maximum value of the range. </param> /// <param name="UniformGen"> A random generator. </param> /// <returns> /// <para> /// A random value in the range [ <paramref name="MinValue"/>; <paramref name="MaxValue"/>] /// if <paramref name="Value"/> greater than <paramref name="MaxValue"/> or less than <paramref name="MinValue"/>. /// </para> /// <para> Otherwise <paramref name="Value"/>. </para> /// </returns> public static double RandomClamp(double Value, double MinValue, double MaxValue, IContUniformGen UniformGen) { if (Value < MinValue || Value > MaxValue) { return(UniformGen.URandVal(MinValue, MaxValue)); } else { return(Value); } }
/// <summary> /// Create object which uses custom implementation for random generators. /// </summary> /// <param name="UniformGen"> /// Object, which implements <see cref="IContUniformGen"/> interface. /// </param> /// <param name="NormalGen"> Object, which implements <see cref="INormalGen"/> interface. </param> /// <exception cref="ArgumentNullException"> /// If <paramref name="NormalGen"/> or <paramref name="UniformGen"/> is null. /// </exception> public MOFWOptimizer(IContUniformGen UniformGen, INormalGen NormalGen) : base(UniformGen, NormalGen) { _nds = new Ndsort <double>(CmpDouble.DoubleCompare); _isUseChachedFronts = false; }