Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/29/19 17:45:06 (5 years ago)
Author:
ddorfmei
Message:

#2931: solved the issues found during the review

File:
1 moved

Legend:

Unmodified
Added
Removed
  • branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ProgrammableLinearProblemDefinition.cs

    r16581 r16582  
    2626using HeuristicLab.Common;
    2727using HeuristicLab.Core;
     28using HeuristicLab.ExactOptimization.LinearProgramming.Templates;
    2829using HeuristicLab.Optimization;
    2930using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
     
    3132using HeuristicLab.Scripting;
    3233
    33 namespace HeuristicLab.MathematicalOptimization.LinearProgramming {
     34namespace HeuristicLab.ExactOptimization.LinearProgramming {
    3435
    35   [Item("Programmable Linear/Mixed Integer Programming Problem Definition",
    36     "Script that defines the model and evaluates the solution for a linear/mixed integer programming problem.")]
     36  [Item("Programmable Linear Problem Definition (LP, MIP)",
     37    "Script that defines the model for a linear/mixed integer programming problem.")]
    3738  [StorableClass]
    38   public sealed class ProgrammableLinearProgrammingProblemDefinition : Script, ILinearProgrammingProblemDefinition,
     39  public sealed class ProgrammableLinearProblemDefinition : Script, ILinearProblemDefinition,
    3940    IStorableContent {
    4041    private readonly object compileLock = new object();
    4142
    42     [Storable] private readonly VariableStore variableStore;
     43    [Storable]
     44    private readonly VariableStore variableStore;
    4345
    44     [Storable] private bool codeChanged;
     46    [Storable]
     47    private bool codeChanged;
    4548
    46     private volatile ILinearProgrammingProblemDefinition compiledProblemDefinition;
     49    private volatile ILinearProblemDefinition compiledProblemDefinition;
    4750
    48     public ProgrammableLinearProgrammingProblemDefinition()
    49       : base(ScriptTemplates.CompiledLinearProgrammingProblemDefinition) {
    50       Name = "Programmable Linear/Mixed Integer Programming Problem Definition";
     51    public ProgrammableLinearProblemDefinition()
     52      : base(ScriptTemplates.CompiledLinearProblemDefinition) {
     53      Name = "Programmable Linear Problem Definition";
    5154      variableStore = new VariableStore();
    5255    }
    5356
    5457    [StorableConstructor]
    55     private ProgrammableLinearProgrammingProblemDefinition(bool deserializing) : base(deserializing) {
     58    private ProgrammableLinearProblemDefinition(bool deserializing) : base(deserializing) {
    5659    }
    5760
    58     private ProgrammableLinearProgrammingProblemDefinition(ProgrammableLinearProgrammingProblemDefinition original,
     61    private ProgrammableLinearProblemDefinition(ProgrammableLinearProblemDefinition original,
    5962      Cloner cloner) : base(original, cloner) {
    6063      variableStore = cloner.Clone(original.variableStore);
     
    6871    public VariableStore VariableStore => variableStore;
    6972
    70     private ILinearProgrammingProblemDefinition CompiledProblemDefinition {
     73    private ILinearProblemDefinition CompiledProblemDefinition {
    7174      get {
    7275        // double checked locking pattern
     
    8588    }
    8689
    87     private bool SuppressEvents { get; set; }
    88 
    8990    public void Analyze(Solver solver, ResultCollection results) => CompiledProblemDefinition.Analyze(solver, results);
    9091
     
    9293
    9394    public override IDeepCloneable Clone(Cloner cloner) {
    94       return new ProgrammableLinearProgrammingProblemDefinition(this, cloner);
     95      return new ProgrammableLinearProblemDefinition(this, cloner);
    9596    }
    9697
     
    108109      if (!types.Any(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)))
    109110        throw new ProblemDefinitionScriptException("The compiled code doesn't contain a problem definition." + Environment.NewLine +
    110                                                    "The problem definition must be a subclass of CompiledProblemDefinition.");
     111                                                   $"The problem definition must be a subclass of {nameof(CompiledProblemDefinition)} and implement {nameof(ILinearProblemDefinition)}.");
    111112      if (types.Count(x => typeof(CompiledProblemDefinition).IsAssignableFrom(x)) > 1)
    112113        throw new ProblemDefinitionScriptException("The compiled code contains multiple problem definitions." + Environment.NewLine +
    113                                                    "Only one subclass of CompiledProblemDefinition is allowed.");
     114                                                   $"Only one subclass of {nameof(CompiledProblemDefinition)} is allowed.");
    114115
    115116      CompiledProblemDefinition inst;
     
    133134
    134135      try {
    135         compiledProblemDefinition = (ILinearProgrammingProblemDefinition)inst;
     136        compiledProblemDefinition = (ILinearProblemDefinition)inst;
    136137        if (fireChanged) OnProblemDefinitionChanged();
    137138      } catch (Exception e) {
     
    139140        throw new ProblemDefinitionScriptException(
    140141          "Using the problem definition in the problem failed." + Environment.NewLine +
    141           "Examine this error message carefully (often there is an issue with the defined encoding).", e);
     142          "Examine this error message carefully.", e);
    142143      }
    143144
Note: See TracChangeset for help on using the changeset viewer.