Changeset 16233 for branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
- Timestamp:
- 10/17/18 17:51:26 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
r16172 r16233 1 1 #region License Information 2 2 3 /* HeuristicLab 3 4 * Copyright (C) 2002-2018 Heuristic and Evolutionary Algorithms Laboratory (HEAL) … … 18 19 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 20 */ 20 #endregion 21 22 #endregion License Information 21 23 22 24 using System.Drawing; … … 30 32 31 33 namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Problems { 32 [Item("Linear Programming Programmable Problem (single-objective)", "Represents a single-objective problem that can be programmed with a script.")] 33 [Creatable(CreatableAttribute.Categories.Problems, Priority = 100)] 34 35 [Item("Linear/Mixed Integer Programming Problem (LP/MIP)", "")] 36 [Creatable(CreatableAttribute.Categories.CombinatorialProblems)] 34 37 [StorableClass] 35 38 public class LinearProgrammingProblem : Problem, IProgrammableItem { 36 39 37 public new static Image StaticItemImage => VSImageLibrary.Script; 38 39 private FixedValueParameter<LinearProgrammingProblemDefinitionScript> LinearProgrammingProblemScriptParameter => (FixedValueParameter<LinearProgrammingProblemDefinitionScript>)Parameters["ProblemScript"]; 40 41 public LinearProgrammingProblemDefinitionScript ProblemScript => LinearProgrammingProblemScriptParameter.Value; 42 43 public ILinearProgrammingProblemDefinition ProblemDefinition => LinearProgrammingProblemScriptParameter.Value; 40 public LinearProgrammingProblem() { 41 Parameters.Add(new FixedValueParameter<LinearProgrammingProblemDefinitionScript>("ProblemScript", 42 "Defines the problem.", new LinearProgrammingProblemDefinitionScript { Name = Name }) { GetsCollected = false }); 43 RegisterEvents(); 44 } 44 45 45 46 private LinearProgrammingProblem(LinearProgrammingProblem original, Cloner cloner) … … 47 48 RegisterEvents(); 48 49 } 49 public override IDeepCloneable Clone(Cloner cloner) { return new LinearProgrammingProblem(this, cloner); }50 50 51 51 [StorableConstructor] 52 52 private LinearProgrammingProblem(bool deserializing) : base(deserializing) { } 53 public LinearProgrammingProblem() { 54 Parameters.Add(new FixedValueParameter<LinearProgrammingProblemDefinitionScript>("ProblemScript", "Defines the problem.", new LinearProgrammingProblemDefinitionScript { Name = Name }) { GetsCollected = false }); 55 //Operators.Add(new BestScopeSolutionAnalyzer()); 56 RegisterEvents(); 53 54 public new static Image StaticItemImage => VSImageLibrary.Script; 55 public ILinearProgrammingProblemDefinition ProblemDefinition => LinearProgrammingProblemScriptParameter.Value; 56 public LinearProgrammingProblemDefinitionScript ProblemScript => LinearProgrammingProblemScriptParameter.Value; 57 58 private FixedValueParameter<LinearProgrammingProblemDefinitionScript> LinearProgrammingProblemScriptParameter => 59 (FixedValueParameter<LinearProgrammingProblemDefinitionScript>)Parameters["ProblemScript"]; 60 61 public void BuildModel(Solver solver) => ProblemDefinition.BuildModel(solver); 62 63 public override IDeepCloneable Clone(Cloner cloner) { 64 return new LinearProgrammingProblem(this, cloner); 65 } 66 67 protected override void OnNameChanged() { 68 base.OnNameChanged(); 69 ProblemScript.Name = Name; 57 70 } 58 71 … … 62 75 } 63 76 77 private void OnProblemDefinitionChanged() { 78 OnOperatorsChanged(); 79 OnReset(); 80 } 81 82 private void OnProblemScriptNameChanged() { 83 Name = ProblemScript.Name; 84 } 85 64 86 private void RegisterEvents() { 65 87 ProblemScript.ProblemDefinitionChanged += (o, e) => OnProblemDefinitionChanged(); 66 88 ProblemScript.NameChanged += (o, e) => OnProblemScriptNameChanged(); 67 89 } 68 69 private void OnProblemDefinitionChanged() {70 //Parameters.Remove("Maximization");71 //Parameters.Add(new FixedValueParameter<BoolValue>("Maximization", "Set to false if the problem should be minimized.", (BoolValue)new BoolValue(Maximization).AsReadOnly()) { Hidden = true });72 73 //Encoding = ProblemDefinition.Encoding;74 OnOperatorsChanged();75 OnReset();76 }77 protected override void OnNameChanged() {78 base.OnNameChanged();79 ProblemScript.Name = Name;80 }81 private void OnProblemScriptNameChanged() {82 Name = ProblemScript.Name;83 }84 85 public void BuildModel(Solver solver) => ProblemDefinition.BuildModel(solver);86 87 //public override bool Maximization {88 // get { return Parameters.ContainsKey("ProblemScript") ? ProblemDefinition.Maximization : false; }89 //}90 91 //public override double Evaluate(Individual individual, IRandom random) {92 // return ProblemDefinition.Evaluate(individual, random);93 //}94 95 //public override void Analyze(Individual[] individuals, double[] qualities, ResultCollection results, IRandom random) {96 // ProblemDefinition.Analyze(individuals, qualities, results, random);97 //}98 99 //public override IEnumerable<Individual> GetNeighbors(Individual individual, IRandom random) {100 // return ProblemDefinition.GetNeighbors(individual, random);101 //}102 90 } 103 91 }
Note: See TracChangeset
for help on using the changeset viewer.