Changeset 15575


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

#1614:

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

Legend:

Unmodified
Added
Removed
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/CPLEX/CplexSolver.cs

    r15574 r15575  
    5959    }
    6060
    61     protected override void Initialize(CancellationToken cancellationToken) {
    62       base.Initialize(cancellationToken);
    63 
    64       try {
    65         Context.RunOperator(Analyzer, cancellationToken);
    66       } catch (OperationCanceledException) { }
    67     }
    68 
    6961    protected override void Run(CancellationToken cancellationToken) {
    7062      var factory = new OplFactory();
     
    10092      if (HasIncumbent()) {
    10193        var val = GetIncumbentObjValue();
    102         if (val == prev) return;
     94        if (val >= prev) return;
    10395        algorithm.Context.Iterations++;
    10496        algorithm.Context.BestQuality = val;
  • branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Algorithms-3.3.csproj

    r15574 r15575  
    3232  </PropertyGroup>
    3333  <PropertyGroup>
    34     <SignAssembly>true</SignAssembly>
     34    <SignAssembly>false</SignAssembly>
    3535  </PropertyGroup>
    3636  <PropertyGroup>
     
    3838  </PropertyGroup>
    3939  <PropertyGroup>
    40     <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
     40    <AssemblyOriginatorKeyFile>
     41    </AssemblyOriginatorKeyFile>
    4142  </PropertyGroup>
    4243  <ItemGroup>
     
    133134    <Compile Include="LocalSearch\IteratedLS.cs" />
    134135    <Compile Include="LocalSearch\MultistartLS.cs" />
     136    <Compile Include="LocalSolverNet\GQAPIntegerSolver.cs" />
     137    <Compile Include="LocalSolverNet\LocalSolverContext.cs" />
     138    <Compile Include="LocalSolverNet\GQAPBinarySolver.cs" />
    135139    <Compile Include="Plugin.cs" />
    136140    <Compile Include="Infrastructure\Contexts\SingleSolutionContext.cs" />
     
    156160    </ProjectReference>
    157161  </ItemGroup>
    158   <ItemGroup>
    159     <None Include="HeuristicLab.snk" />
    160   </ItemGroup>
    161162  <ItemGroup />
    162163  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • 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.