public RealVectorEncoding(string name, int length, IList <double> min, IList <double> max) : base(name) { if (min.Count == 0) { throw new ArgumentException("Bounds must be given for the real parameters."); } if (min.Count != max.Count) { throw new ArgumentException("min must be of the same length as max", "min"); } if (min.Zip(max, (mi, ma) => mi >= ma).Any(x => x)) { throw new ArgumentException("min must be less than max in each dimension", "min"); } var bounds = new DoubleMatrix(min.Count, 2); for (int i = 0; i < min.Count; i++) { bounds[i, 0] = min[i]; bounds[i, 1] = max[i]; } lengthParameter = new FixedValueParameter <IntValue>(Name + ".Length", new IntValue(length)); boundsParameter = new ValueParameter <DoubleMatrix>(Name + ".Bounds", bounds); Parameters.Add(lengthParameter); Parameters.Add(boundsParameter); SolutionCreator = new UniformRandomRealVectorCreator(); RegisterParameterEvents(); DiscoverOperators(); }
public RealVectorParticleCreator() : base() { Parameters.Add(new LookupParameter<IntValue>("ProblemSize", "The dimension of the problem.")); Parameters.Add(new ValueLookupParameter<DoubleMatrix>("Bounds", "The lower and upper bounds in each dimension.")); Parameters.Add(new LookupParameter<RealVector>("RealVector", "Particle's current solution")); Parameters.Add(new LookupParameter<RealVector>("PersonalBest", "Particle's personal best solution.")); Parameters.Add(new LookupParameter<RealVector>("Velocity", "Particle's current velocity.")); UniformRandomRealVectorCreator realVectorCreater = new UniformRandomRealVectorCreator(); Assigner personalBestPositionAssigner = new Assigner(); OperatorGraph.InitialOperator = realVectorCreater; realVectorCreater.RealVectorParameter.ActualName = RealVectorParameter.Name; realVectorCreater.LengthParameter.ActualName = ProblemSizeParameter.Name; realVectorCreater.BoundsParameter.ActualName = BoundsParameter.Name; realVectorCreater.Successor = personalBestPositionAssigner; personalBestPositionAssigner.LeftSideParameter.ActualName = PersonalBestParameter.Name; personalBestPositionAssigner.RightSideParameter.ActualName = RealVectorParameter.Name; personalBestPositionAssigner.Successor = null; }
public RealVectorEncoding(string name, int length, double min = double.MinValue, double max = double.MaxValue) : base(name) { if (min >= max) { throw new ArgumentException("min must be less than max", "min"); } var bounds = new DoubleMatrix(1, 2); bounds[0, 0] = min; bounds[0, 1] = max; lengthParameter = new FixedValueParameter <IntValue>(Name + ".Length", new IntValue(length)); boundsParameter = new ValueParameter <DoubleMatrix>(Name + ".Bounds", bounds); Parameters.Add(lengthParameter); Parameters.Add(boundsParameter); SolutionCreator = new UniformRandomRealVectorCreator(); RegisterParameterEvents(); DiscoverOperators(); }
public RealVectorParticleCreator() : base() { Parameters.Add(new LookupParameter <IntValue>("ProblemSize", "The dimension of the problem.")); Parameters.Add(new ValueLookupParameter <DoubleMatrix>("Bounds", "The lower and upper bounds in each dimension.")); Parameters.Add(new LookupParameter <RealVector>("RealVector", "Particle's current solution")); Parameters.Add(new LookupParameter <RealVector>("PersonalBest", "Particle's personal best solution.")); Parameters.Add(new LookupParameter <RealVector>("Velocity", "Particle's current velocity.")); UniformRandomRealVectorCreator realVectorCreater = new UniformRandomRealVectorCreator(); Assigner personalBestPositionAssigner = new Assigner(); OperatorGraph.InitialOperator = realVectorCreater; realVectorCreater.RealVectorParameter.ActualName = RealVectorParameter.Name; realVectorCreater.LengthParameter.ActualName = ProblemSizeParameter.Name; realVectorCreater.BoundsParameter.ActualName = BoundsParameter.Name; realVectorCreater.Successor = personalBestPositionAssigner; personalBestPositionAssigner.LeftSideParameter.ActualName = PersonalBestParameter.Name; personalBestPositionAssigner.RightSideParameter.ActualName = RealVectorParameter.Name; personalBestPositionAssigner.Successor = null; }
public override IOperation Apply() { StrategyParameterParameter.ActualValue = UniformRandomRealVectorCreator.Apply(RandomParameter.ActualValue, LengthParameter.ActualValue.Value, BoundsParameter.ActualValue); return(base.Apply()); }
protected UniformRandomRealVectorCreator(UniformRandomRealVectorCreator original, Cloner cloner) : base(original, cloner) { }