Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/05/18 00:22:04 (7 years ago)
Author:
abeham
Message:

#1614:

  • Added two LocalSolver models (binary and integer)
Location:
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/LocalSolverNet
Files:
1 copied
1 moved

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/LocalSolverNet/LocalSolverContext.cs

    r15574 r15575  
    2222using HeuristicLab.Common;
    2323using HeuristicLab.Core;
     24using HeuristicLab.Parameters;
    2425using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
    2526
    26 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.CPLEX {
    27   [Item("CPLEX Context", "A context for CPLEX solvers.")]
    28   public class CplexContext : SingleSolutionContext<ISingleObjectiveSolutionScope<GQAPSolution>> {
    29    
     27namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms.LocalSolverNet {
     28  [Item("LocalSolver Context", "A context for CPLEX solvers.")]
     29  public class LocalSolverContext : SingleSolutionContext<ISingleObjectiveSolutionScope<GQAPSolution>> {
     30
     31    [Storable]
     32    private IValueParameter<GQAP> problem;
     33    public GQAP Problem {
     34      get { return problem.Value; }
     35      set { problem.Value = value; }
     36    }
     37
     38    [Storable]
     39    private IValueParameter<GQAPSolution> bestSolution;
     40    public GQAPSolution BestSolution {
     41      get { return bestSolution.Value; }
     42      set { bestSolution.Value = value; }
     43    }
     44
    3045    [StorableConstructor]
    31     protected CplexContext(bool deserializing) : base(deserializing) { }
    32     protected CplexContext(CplexContext original, Cloner cloner)
     46    protected LocalSolverContext(bool deserializing) : base(deserializing) { }
     47    protected LocalSolverContext(LocalSolverContext original, Cloner cloner)
    3348      : base(original, cloner) {
     49      problem = cloner.Clone(original.problem);
     50      bestSolution = cloner.Clone(original.bestSolution);
    3451    }
    35     public CplexContext() : base() { }
    36     public CplexContext(string name) : base(name) { }
    37     public CplexContext(string name, ParameterCollection parameters) : base(name, parameters) { }
    38     public CplexContext(string name, string description) : base(name, description) { }
    39     public CplexContext(string name, string description, ParameterCollection parameters) : base(name, description, parameters) { }
     52    public LocalSolverContext() : base() {
     53      Parameters.Add(problem = new ValueParameter<GQAP>("Problem"));
     54      Parameters.Add(bestSolution = new ValueParameter<GQAPSolution>("BestFoundSolution"));
     55    }
     56    public LocalSolverContext(string name) : base(name) {
     57      Parameters.Add(problem = new ValueParameter<GQAP>("Problem"));
     58      Parameters.Add(bestSolution = new ValueParameter<GQAPSolution>("BestFoundSolution"));
     59    }
     60    public LocalSolverContext(string name, ParameterCollection parameters) : base(name, parameters) {
     61      Parameters.Add(problem = new ValueParameter<GQAP>("Problem"));
     62      Parameters.Add(bestSolution = new ValueParameter<GQAPSolution>("BestFoundSolution"));
     63    }
     64    public LocalSolverContext(string name, string description) : base(name, description) {
     65      Parameters.Add(problem = new ValueParameter<GQAP>("Problem"));
     66      Parameters.Add(bestSolution = new ValueParameter<GQAPSolution>("BestFoundSolution"));
     67    }
     68    public LocalSolverContext(string name, string description, ParameterCollection parameters) : base(name, description, parameters) {
     69      Parameters.Add(problem = new ValueParameter<GQAP>("Problem"));
     70      Parameters.Add(bestSolution = new ValueParameter<GQAPSolution>("BestFoundSolution"));
     71    }
    4072   
    4173    public override IDeepCloneable Clone(Cloner cloner) {
    42       return new CplexContext(this, cloner);
     74      return new LocalSolverContext(this, cloner);
     75    }
     76
     77    public ISingleObjectiveSolutionScope<GQAPSolution> ToScope(GQAPSolution code, double fitness = double.NaN) {
     78      var name = Problem.Encoding.Name;
     79      var scope = new SingleObjectiveSolutionScope<GQAPSolution>(code,
     80        name + "Solution", fitness, Problem.Evaluator.QualityParameter.ActualName) {
     81        Parent = Scope
     82      };
     83      scope.Variables.Add(new Variable(name, code.Assignment));
     84      scope.Variables.Add(new Variable("Evaluation", code.Evaluation));
     85      return scope;
    4386    }
    4487  }
Note: See TracChangeset for help on using the changeset viewer.