예제 #1
0
        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;
    }
예제 #3
0
        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;
        }
예제 #5
0
 public override IOperation Apply()
 {
     StrategyParameterParameter.ActualValue = UniformRandomRealVectorCreator.Apply(RandomParameter.ActualValue, LengthParameter.ActualValue.Value, BoundsParameter.ActualValue);
     return(base.Apply());
 }
예제 #6
0
 protected UniformRandomRealVectorCreator(UniformRandomRealVectorCreator original, Cloner cloner) : base(original, cloner)
 {
 }
 protected UniformRandomRealVectorCreator(UniformRandomRealVectorCreator original, Cloner cloner) : base(original, cloner) { }