Changeset 16405 for branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
- Timestamp:
- 12/19/18 14:15:49 (5 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
r16373 r16405 20 20 #endregion 21 21 22 using System .Drawing;22 using System; 23 23 using HeuristicLab.Common; 24 using HeuristicLab.Common.Resources;25 24 using HeuristicLab.Core; 26 25 using HeuristicLab.Optimization; 27 using HeuristicLab.Parameters;28 26 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 29 27 30 namespace HeuristicLab.MathematicalOptimization.LinearProgramming .Problems{28 namespace HeuristicLab.MathematicalOptimization.LinearProgramming { 31 29 32 30 [Item("Linear/Mixed Integer Programming Problem (LP/MIP)", "Represents a linear/mixed integer problem.")] 33 [Creatable(CreatableAttribute.Categories.CombinatorialProblems)]34 31 [StorableClass] 35 public class LinearProgrammingProblem : Problem, IProgrammableItem { 32 public sealed class LinearProgrammingProblem : Problem { 33 [Storable] 34 private ILinearProgrammingProblemDefinition problemDefinition; 36 35 37 36 public LinearProgrammingProblem() { 38 Parameters.Add(new FixedValueParameter<LinearProgrammingProblemDefinitionScript>("ProblemScript", 39 "Defines the problem.", new LinearProgrammingProblemDefinitionScript { Name = Name }) { GetsCollected = false }); 40 RegisterEvents(); 37 Parameters.Remove(Parameters["Operators"]); 41 38 } 42 39 43 pr otectedLinearProgrammingProblem(LinearProgrammingProblem original, Cloner cloner)40 private LinearProgrammingProblem(LinearProgrammingProblem original, Cloner cloner) 44 41 : base(original, cloner) { 45 RegisterEvents();46 42 } 47 43 48 44 [StorableConstructor] 49 protected LinearProgrammingProblem(bool deserializing) : base(deserializing) { } 50 51 public new static Image StaticItemImage => VSImageLibrary.Script; 52 public ILinearProgrammingProblemDefinition ProblemDefinition => LinearProgrammingProblemScriptParameter.Value; 53 public LinearProgrammingProblemDefinitionScript ProblemScript => LinearProgrammingProblemScriptParameter.Value; 54 55 private FixedValueParameter<LinearProgrammingProblemDefinitionScript> LinearProgrammingProblemScriptParameter => 56 (FixedValueParameter<LinearProgrammingProblemDefinitionScript>)Parameters["ProblemScript"]; 57 58 public override IDeepCloneable Clone(Cloner cloner) { 59 return new LinearProgrammingProblem(this, cloner); 45 private LinearProgrammingProblem(bool deserializing) : base(deserializing) { 60 46 } 61 47 62 protected override void OnNameChanged() { 63 base.OnNameChanged(); 64 ProblemScript.Name = Name; 48 public event EventHandler ProblemDefinitionChanged; 49 50 public ILinearProgrammingProblemDefinition ProblemDefinition { 51 get => problemDefinition; 52 set { 53 if (problemDefinition == value) 54 return; 55 problemDefinition = value; 56 ProblemDefinitionChanged?.Invoke(this, EventArgs.Empty); 57 } 65 58 } 59 60 public override IDeepCloneable Clone(Cloner cloner) => new LinearProgrammingProblem(this, cloner); 66 61 67 62 [StorableHook(HookType.AfterDeserialization)] 68 63 private void AfterDeserialization() { 69 RegisterEvents();70 64 } 71 65 … … 74 68 OnReset(); 75 69 } 76 77 private void OnProblemScriptNameChanged() {78 Name = ProblemScript.Name;79 }80 81 private void RegisterEvents() {82 ProblemScript.ProblemDefinitionChanged += (o, e) => OnProblemDefinitionChanged();83 ProblemScript.NameChanged += (o, e) => OnProblemScriptNameChanged();84 }85 70 } 86 71 }
Note: See TracChangeset
for help on using the changeset viewer.