public VRPProblemInstance()
            : base()
        {
            Parameters.Add(new ValueParameter <DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities.", new DoubleMatrix()));
            Parameters.Add(new OptionalValueParameter <DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
            Parameters.Add(new ValueParameter <BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false.", new BoolValue(true)));
            Parameters.Add(new ValueParameter <IntValue>("Vehicles", "The number of vehicles.", new IntValue(0)));
            Parameters.Add(new ValueParameter <DoubleArray>("Demand", "The demand of each customer.", new DoubleArray()));

            Parameters.Add(new ValueParameter <DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.", new DoubleValue(0)));
            Parameters.Add(new ValueParameter <DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.", new DoubleValue(1)));

            evaluator = Evaluator;
            AttachEventHandlers();
        }
Example #2
0
        //helper method to evaluate an updated individual
        protected void UpdateEvaluation(IVRPEncoding updatedTours)
        {
            IVRPEvaluator evaluator = ProblemInstance.MoveEvaluator;

            try {
                this.ExecutionContext.Scope.Variables.Add(new Variable(evaluator.VRPToursParameter.ActualName,
                                                                       updatedTours));

                IAtomicOperation op = this.ExecutionContext.CreateChildOperation(evaluator);
                op.Operator.Execute((IExecutionContext)op, CancellationToken);
            }
            finally {
                this.ExecutionContext.Scope.Variables.Remove(evaluator.VRPToursParameter.ActualName);
            }
        }
        private void UpdateMoveEvaluation()
        {
            IVRPEvaluator            evaluator       = ProblemInstance.SolutionEvaluator;
            ICollection <IParameter> addedParameters = new List <IParameter>();

            try {
                foreach (IParameter parameter in evaluator.Parameters)
                {
                    if (parameter is ILookupParameter &&
                        parameter != evaluator.VRPToursParameter &&
                        parameter != evaluator.ProblemInstanceParameter)
                    {
                        ILookupParameter evaluatorParameter = parameter as ILookupParameter;

                        string resultName = evaluatorParameter.ActualName;
                        if (!this.Parameters.ContainsKey(resultName))
                        {
                            ILookupParameter resultParameter = new LookupParameter <IItem>(resultName);
                            resultParameter.ExecutionContext = ExecutionContext;
                            this.Parameters.Add(resultParameter);
                            addedParameters.Add(resultParameter);
                        }

                        string moveResultName = VRPMoveEvaluator.MovePrefix + resultName;
                        if (!this.Parameters.ContainsKey(moveResultName))
                        {
                            ILookupParameter moveResultParameter = new LookupParameter <IItem>(moveResultName);
                            moveResultParameter.ExecutionContext = ExecutionContext;
                            this.Parameters.Add(moveResultParameter);
                            addedParameters.Add(moveResultParameter);
                        }

                        ILookupParameter result     = Parameters[resultName] as ILookupParameter;
                        ILookupParameter moveResult = Parameters[moveResultName] as ILookupParameter;
                        result.ActualValue = moveResult.ActualValue;
                    }
                }
            } finally {
                foreach (IParameter parameter in addedParameters)
                {
                    this.Parameters.Remove(parameter);
                }
            }
        }
 private void AfterDeserialization()
 {
     evaluator = Evaluator;
     AttachEventHandlers();
 }
 protected VRPProblemInstance(VRPProblemInstance original, Cloner cloner)
     : base(original, cloner)
 {
     evaluator = Evaluator;
     AttachEventHandlers();
 }
 private void AfterDeserialization() {
   evaluator = Evaluator;
   AttachEventHandlers();
 }
 protected VRPProblemInstance(VRPProblemInstance original, Cloner cloner)
   : base(original, cloner) {
   evaluator = Evaluator;
   AttachEventHandlers();
 }
    public VRPProblemInstance()
      : base() {
      Parameters.Add(new ValueParameter<DoubleMatrix>("Coordinates", "The x- and y-Coordinates of the cities.", new DoubleMatrix()));
      Parameters.Add(new OptionalValueParameter<DoubleMatrix>("DistanceMatrix", "The matrix which contains the distances between the cities."));
      Parameters.Add(new ValueParameter<BoolValue>("UseDistanceMatrix", "True if a distance matrix should be calculated and used for evaluation, otherwise false.", new BoolValue(true)));
      Parameters.Add(new ValueParameter<IntValue>("Vehicles", "The number of vehicles.", new IntValue(0)));
      Parameters.Add(new ValueParameter<DoubleArray>("Demand", "The demand of each customer.", new DoubleArray()));

      Parameters.Add(new ValueParameter<DoubleValue>("EvalFleetUsageFactor", "The fleet usage factor considered in the evaluation.", new DoubleValue(0)));
      Parameters.Add(new ValueParameter<DoubleValue>("EvalDistanceFactor", "The distance factor considered in the evaluation.", new DoubleValue(1)));

      evaluator = Evaluator;
      AttachEventHandlers();
    }