Changeset 16373
- Timestamp:
- 12/12/18 14:23:45 (6 years ago)
- Location:
- branches
- Files:
-
- 12 added
- 4 deleted
- 28 edited
- 6 copied
- 6 moved
Legend:
- Unmodified
- Added
- Removed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab 3.3.sln
r16070 r16373 86 86 {9D792B6D-836B-46DC-9D69-50B4B1E7B87F} = {9D792B6D-836B-46DC-9D69-50B4B1E7B87F} 87 87 {399EBB6E-37A1-4AE4-B8CD-0D461FF286A3} = {399EBB6E-37A1-4AE4-B8CD-0D461FF286A3} 88 {FA3B9270-48B7-4C77-9FEA-2A6EDE82E909} = {FA3B9270-48B7-4C77-9FEA-2A6EDE82E909} 88 89 {3C906172-E044-4DF0-B4FD-AA21192D5D3E} = {3C906172-E044-4DF0-B4FD-AA21192D5D3E} 89 90 {DC3D7072-7999-4719-B65D-3997744D5DC1} = {DC3D7072-7999-4719-B65D-3997744D5DC1} -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Core/3.3/Attributes/CreatableAttribute.cs
r15583 r16373 35 35 public const string PopulationBasedAlgorithms = Algorithms + SplitToken + "1" + OrderToken + "Population Based"; 36 36 public const string SingleSolutionAlgorithms = Algorithms + SplitToken + "2" + OrderToken + "Single Solution"; 37 public const string ExactAlgorithms = Algorithms + SplitToken + "3" + OrderToken + "Exact"; 37 38 38 39 public const string Problems = "2" + OrderToken + "Problems"; -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj
r16070 r16373 221 221 <DependentUpon>StringConvertibleMatrixView.cs</DependentUpon> 222 222 </Compile> 223 <Compile Include="TextValueView.cs"> 224 <SubType>UserControl</SubType> 225 </Compile> 226 <Compile Include="TextValueView.Designer.cs"> 227 <DependentUpon>TextValueView.cs</DependentUpon> 228 </Compile> 223 229 <Compile Include="StringConvertibleValueView.cs"> 224 230 <SubType>UserControl</SubType> … … 290 296 <Install>true</Install> 291 297 </BootstrapperPackage> 298 </ItemGroup> 299 <ItemGroup> 300 <EmbeddedResource Include="TextValueView.resx"> 301 <DependentUpon>TextValueView.cs</DependentUpon> 302 </EmbeddedResource> 292 303 </ItemGroup> 293 304 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data.Views/3.3/TextValueView.Designer.cs
r16337 r16373 21 21 22 22 namespace HeuristicLab.Data.Views { 23 partial class StringConvertibleValueView {23 partial class TextValueView { 24 24 /// <summary> 25 25 /// Required designer variable. … … 59 59 // valueTextBox 60 60 // 61 this.valueTextBox. Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)62 | System.Windows.Forms.AnchorStyles.Right)));63 this.valueTextBox. Location = new System.Drawing.Point(17, 0);61 this.valueTextBox.Dock = System.Windows.Forms.DockStyle.Fill; 62 this.valueTextBox.Location = new System.Drawing.Point(0, 0); 63 this.valueTextBox.Multiline = true; 64 64 this.valueTextBox.Name = "valueTextBox"; 65 this.valueTextBox.Size = new System.Drawing.Size(132, 20); 65 this.valueTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Horizontal; 66 this.valueTextBox.Size = new System.Drawing.Size(194, 40); 66 67 this.valueTextBox.TabIndex = 2; 67 68 this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown); … … 90 91 this.splitContainer.Location = new System.Drawing.Point(0, 0); 91 92 this.splitContainer.Name = "splitContainer"; 93 this.splitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal; 92 94 // 93 95 // splitContainer.Panel1 94 96 // 95 97 this.splitContainer.Panel1.Controls.Add(this.valueLabel); 98 this.splitContainer.Panel1MinSize = 19; 96 99 // 97 100 // splitContainer.Panel2 98 101 // 99 102 this.splitContainer.Panel2.Controls.Add(this.valueTextBox); 100 this.splitContainer.Size = new System.Drawing.Size(194, 21);101 this.splitContainer.SplitterDistance = 41;103 this.splitContainer.Size = new System.Drawing.Size(194, 60); 104 this.splitContainer.SplitterDistance = 19; 102 105 this.splitContainer.SplitterWidth = 1; 103 106 this.splitContainer.TabIndex = 0; 104 107 this.splitContainer.TabStop = false; 105 108 // 106 // StringConvertibleValueView109 // TextValueView 107 110 // 108 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);109 111 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; 110 112 this.Controls.Add(this.splitContainer); 111 this.Name = " StringConvertibleValueView";112 this.Size = new System.Drawing.Size(194, 21);113 this.Name = "TextValueView"; 114 this.Size = new System.Drawing.Size(194, 60); 113 115 ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); 114 116 this.splitContainer.Panel1.ResumeLayout(false); -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data.Views/3.3/TextValueView.cs
r16337 r16373 27 27 28 28 namespace HeuristicLab.Data.Views { 29 [View(" StringConvertibleValue View")]30 [Content(typeof(I StringConvertibleValue), true)]31 public partial class StringConvertibleValueView : AsynchronousContentView {29 [View("TextValue View")] 30 [Content(typeof(ITextValue), true)] 31 public partial class TextValueView : AsynchronousContentView { 32 32 public new IStringConvertibleValue Content { 33 33 get { return (IStringConvertibleValue)base.Content; } … … 48 48 } 49 49 50 public StringConvertibleValueView() {50 public TextValueView() { 51 51 InitializeComponent(); 52 52 errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft); … … 86 86 87 87 protected virtual void valueTextBox_KeyDown(object sender, KeyEventArgs e) { 88 if ( (e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))88 if (e.Shift && (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)) 89 89 valueLabel.Select(); // select label to validate data 90 90 -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj
r16070 r16373 124 124 <Compile Include="ComparisonType.cs" /> 125 125 <Compile Include="EnumValue.cs" /> 126 <Compile Include="Interfaces\ITextValue.cs" /> 126 127 <Compile Include="Interfaces\IValueTypeArray.cs" /> 127 128 <Compile Include="Path Types\DirectoryValue.cs" /> … … 151 152 <Compile Include="StringConvertibleArray.cs" /> 152 153 <Compile Include="StringMatrix.cs" /> 154 <Compile Include="TextValue.cs" /> 153 155 <Compile Include="StringValue.cs" /> 154 156 <Compile Include="TimeSpanValue.cs" /> -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data/3.3/Interfaces/ITextValue.cs
r16337 r16373 24 24 25 25 namespace HeuristicLab.Data { 26 public interface IStringConvertibleValue : IContent { 27 bool ReadOnly { get; } 28 29 bool Validate(string value, out string errorMessage); 30 string GetValue(); 31 bool SetValue(string value); 32 33 event EventHandler ValueChanged; 26 public interface ITextValue : IStringConvertibleValue { 34 27 } 35 28 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Data/3.3/TextValue.cs
r16337 r16373 20 20 #endregion 21 21 22 using System;23 using System.Drawing;24 22 using HeuristicLab.Common; 25 23 using HeuristicLab.Core; … … 27 25 28 26 namespace HeuristicLab.Data { 29 [Item(" StringValue", "Represents astring.")]27 [Item("TextValue", "Represents a multiline string.")] 30 28 [StorableClass] 31 public class StringValue : Item, IComparable, IStringConvertibleValue { 32 public static new Image StaticItemImage { 33 get { return HeuristicLab.Common.Resources.VSImageLibrary.Field; } 29 public class TextValue : StringValue, ITextValue { 30 31 public TextValue() { 32 this.value = string.Empty; 33 this.readOnly = false; 34 34 } 35 35 36 [Storable] 37 protected string value; 38 public virtual string Value { 39 get { return value; } 40 set { 41 if (ReadOnly) throw new NotSupportedException("Value cannot be set. StringValue is read-only."); 42 if (value != this.value) { 43 if ((value != null) || (this.value != string.Empty)) { 44 this.value = value != null ? value : string.Empty; 45 OnValueChanged(); 46 } 47 } 48 } 49 } 50 51 [Storable] 52 protected bool readOnly; 53 public virtual bool ReadOnly { 54 get { return readOnly; } 36 public TextValue(string value) { 37 this.value = value ?? string.Empty; 38 this.readOnly = false; 55 39 } 56 40 57 41 [StorableConstructor] 58 protected StringValue(bool deserializing) : base(deserializing) { } 59 protected StringValue(StringValue original, Cloner cloner) 42 protected TextValue(bool deserializing) : base(deserializing) { } 43 44 protected TextValue(TextValue original, Cloner cloner) 60 45 : base(original, cloner) { 61 this.value = original.value != null ? original.value :string.Empty;46 this.value = original.value ?? string.Empty; 62 47 this.readOnly = original.readOnly; 63 }64 public StringValue() {65 this.value = string.Empty;66 this.readOnly = false;67 }68 public StringValue(string value) {69 this.value = value != null ? value : string.Empty;70 this.readOnly = false;71 48 } 72 49 73 50 public override IDeepCloneable Clone(Cloner cloner) { 74 return new StringValue(this, cloner);51 return new TextValue(this, cloner); 75 52 } 76 77 public virtual StringValue AsReadOnly() {78 StringValue readOnlyStringValue = (StringValue)this.Clone();79 readOnlyStringValue.readOnly = true;80 return readOnlyStringValue;81 }82 83 public override string ToString() {84 return value;85 }86 87 public virtual int CompareTo(object obj) {88 StringValue other = obj as StringValue;89 if (other != null)90 return Value.CompareTo(other.Value);91 else92 return Value.CompareTo(obj);93 }94 95 public event EventHandler ValueChanged;96 protected virtual void OnValueChanged() {97 if (ValueChanged != null)98 ValueChanged(this, EventArgs.Empty);99 OnToStringChanged();100 }101 102 protected virtual bool Validate(string value, out string errorMessage) {103 if (value == null) {104 errorMessage = "Invalid Value (string must not be null)";105 return false;106 } else {107 errorMessage = string.Empty;108 return true;109 }110 }111 protected virtual string GetValue() {112 return Value;113 }114 protected virtual bool SetValue(string value) {115 if (value != null) {116 Value = value;117 return true;118 } else {119 return false;120 }121 }122 123 #region IStringConvertibleValue Members124 bool IStringConvertibleValue.Validate(string value, out string errorMessage) {125 return Validate(value, out errorMessage);126 }127 string IStringConvertibleValue.GetValue() {128 return GetValue();129 }130 bool IStringConvertibleValue.SetValue(string value) {131 return SetValue(value);132 }133 #endregion134 53 } 135 54 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs.sln
r16172 r16373 75 75 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.IGraph-0.8.0-pre", "HeuristicLab.ExtLibs\HeuristicLab.Igraph\0.8.0-pre\HeuristicLab.Igraph-0.8.0-pre\HeuristicLab.IGraph-0.8.0-pre.csproj", "{088D34F2-32EA-43FF-BAA8-22428D5B66BE}" 76 76 EndProject 77 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OrTools-6. 9.0-pre", "HeuristicLab.ExtLibs\HeuristicLab.OrTools\6.9.0-pre\HeuristicLab.OrTools-6.9.0-pre\HeuristicLab.OrTools-6.9.0-pre.csproj", "{AEC895BC-C519-49D3-9A94-6B1C71AD6671}"77 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.OrTools-6.10.0", "HeuristicLab.ExtLibs\HeuristicLab.OrTools\6.10.0\HeuristicLab.OrTools-6.10.0\HeuristicLab.OrTools-6.10.0.csproj", "{AEC895BC-C519-49D3-9A94-6B1C71AD6671}" 78 78 EndProject 79 79 Global -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/HeuristicLab.OrTools-6.10.0.csproj
r16368 r16373 9 9 <AppDesignerFolder>Properties</AppDesignerFolder> 10 10 <RootNamespace>HeuristicLab.OrTools</RootNamespace> 11 <AssemblyName>HeuristicLab.OrTools-6. 9.0-pre</AssemblyName>11 <AssemblyName>HeuristicLab.OrTools-6.10.0</AssemblyName> 12 12 <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> 13 13 <FileAlignment>512</FileAlignment> -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/Plugin.cs.frame
r16288 r16373 28 28 namespace HeuristicLab.OrTools { 29 29 30 [Plugin("HeuristicLab.OrTools", "Provides functionality of Google OR-Tools in HeuristicLab. Requires Windows 64-bit", "6. 9.0.$WCREV$")]31 [PluginFile("HeuristicLab.OrTools-6. 9.0-pre.dll", PluginFileType.Assembly)]30 [Plugin("HeuristicLab.OrTools", "Provides functionality of Google OR-Tools in HeuristicLab. Requires Windows 64-bit", "6.10.0.$WCREV$")] 31 [PluginFile("HeuristicLab.OrTools-6.10.0.dll", PluginFileType.Assembly)] 32 32 [PluginFile("Google.OrTools.dll", PluginFileType.Assembly)] 33 33 [PluginFile("Google.OrTools-license.txt", PluginFileType.License)] … … 40 40 41 41 ~HeuristicLabOrToolsPlugin() { 42 OnUnload(); // HACK: remove once ticket #2961 is solved42 OnUnload(); // HACK: remove once ticket #2961 is resolved 43 43 } 44 44 … … 46 46 base.OnUnload(); 47 47 48 var thisClass = typeof(HeuristicLabOrToolsPlugin); 49 var dir = new FileInfo(thisClass.Assembly.Location).Directory; 50 if (dir == null) 48 var dllDir = new FileInfo(GetType().Assembly.Location).Directory; 49 if (dllDir == null) 51 50 return; 52 51 53 var nativeDlls = thisClass.GetCustomAttributes(typeof(PluginFileAttribute), true)52 var nativeDlls = GetType().GetCustomAttributes(typeof(PluginFileAttribute), true) 54 53 .Cast<PluginFileAttribute>() 55 54 .Where(pf => pf.FileType == PluginFileType.NativeDll) 56 55 .Select(pf => pf.FileName); 57 56 58 foreach (var nativeDll in d ir.EnumerateFiles().Where(f => nativeDlls.Contains(f.Name))) {57 foreach (var nativeDll in dllDir.EnumerateFiles().Where(f => nativeDlls.Contains(f.Name))) { 59 58 var handle = LoadLibrary(nativeDll.FullName); 60 59 if (handle == IntPtr.Zero) -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.ExtLibs/HeuristicLab.OrTools/6.10.0/HeuristicLab.OrTools-6.10.0/Properties/AssemblyInfo.cs.frame
r16070 r16373 53 53 // by using the '*' as shown below: 54 54 // [assembly: AssemblyVersion("1.0.*")] 55 [assembly: AssemblyVersion("6. 8.0.0")]56 [assembly: AssemblyFileVersion("6. 8.0.$WCREV$")]55 [assembly: AssemblyVersion("6.10.0.0")] 56 [assembly: AssemblyFileVersion("6.10.0.$WCREV$")] -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/HeuristicLab.MathematicalOptimization-3.3.csproj
r16288 r16373 115 115 <HintPath>..\..\bin\Google.OrTools.dll</HintPath> 116 116 </Reference> 117 <Reference Include="HeuristicLab.OrTools-6. 9.0-pre, Version=6.8.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">117 <Reference Include="HeuristicLab.OrTools-6.10.0, Version=6.10.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 118 118 <SpecificVersion>False</SpecificVersion> 119 <HintPath>..\..\bin\HeuristicLab.OrTools-6. 9.0-pre.dll</HintPath>119 <HintPath>..\..\bin\HeuristicLab.OrTools-6.10.0.dll</HintPath> 120 120 </Reference> 121 121 <Reference Include="System" /> … … 136 136 <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ExternalIncrementalSolver.cs" /> 137 137 <Compile Include="LinearProgramming\Algorithms\Solvers\Base\IncrementalSolver.cs" /> 138 <Compile Include="LinearProgramming\Algorithms\ LinearProgrammingType.cs" />138 <Compile Include="LinearProgramming\Algorithms\ProblemType.cs" /> 139 139 <Compile Include="LinearProgramming\Algorithms\Solvers\ScipSolver.cs" /> 140 <Compile Include="LinearProgramming\ BasisStatus.cs" />140 <Compile Include="LinearProgramming\Wrapper\BasisStatus.cs" /> 141 141 <Compile Include="LinearProgramming\Algorithms\Solvers\CplexSolver.cs" /> 142 142 <Compile Include="LinearProgramming\Algorithms\Solvers\GurobiSolver.cs" /> 143 143 <Compile Include="LinearProgramming\Algorithms\Solvers\Base\ISolver.cs" /> 144 <Compile Include="LinearProgramming\ IncrementalityValues.cs" />145 <Compile Include="LinearProgramming\ IntegerParam.cs" />146 <Compile Include="LinearProgramming\ LpAlgorithmValues.cs" />144 <Compile Include="LinearProgramming\Wrapper\IncrementalityValues.cs" /> 145 <Compile Include="LinearProgramming\Wrapper\IntegerParam.cs" /> 146 <Compile Include="LinearProgramming\Wrapper\LpAlgorithmValues.cs" /> 147 147 <Compile Include="LinearProgramming\Problems\ILinearProgrammingProblemDefinition.cs" /> 148 148 <Compile Include="LinearProgramming\Algorithms\LinearProgrammingAlgorithm.cs" /> 149 149 <Compile Include="LinearProgramming\Problems\LinearProgrammingProblem.cs" /> 150 <Compile Include="LinearProgramming\ LinearSolverExtensions.cs" />151 <Compile Include="LinearProgramming\ LinearSolver.cs" />150 <Compile Include="LinearProgramming\Wrapper\LinearSolverExtensions.cs" /> 151 <Compile Include="LinearProgramming\Wrapper\LinearSolver.cs" /> 152 152 <Compile Include="LinearProgramming\Problems\LinearProgrammingProblemDefintion.cs" /> 153 <Compile Include="LinearProgramming\ OptimizationProblemType.cs" />153 <Compile Include="LinearProgramming\Wrapper\OptimizationProblemType.cs" /> 154 154 <Compile Include="LinearProgramming\Problems\ProblemDefinitionScriptException.cs" /> 155 155 <Compile Include="LinearProgramming\Algorithms\Solvers\Base\Solver.cs" /> 156 <Compile Include="LinearProgramming\ DoubleParam.cs" />156 <Compile Include="LinearProgramming\Wrapper\DoubleParam.cs" /> 157 157 <Compile Include="LinearProgramming\Views\LinearProgrammingProblemDefinitionScriptView.cs"> 158 158 <SubType>UserControl</SubType> … … 161 161 <DependentUpon>LinearProgrammingProblemDefinitionScriptView.cs</DependentUpon> 162 162 </Compile> 163 <Compile Include="LinearProgramming\ResultStatus.cs" /> 163 <Compile Include="LinearProgramming\Wrapper\ProtoWriteFormat.cs" /> 164 <Compile Include="LinearProgramming\Wrapper\ResultStatus.cs" /> 164 165 <Compile Include="LinearProgramming\Views\LinearProgrammingProblemView.cs"> 165 166 <SubType>UserControl</SubType> … … 175 176 <DependentUpon>ScriptTemplates.resx</DependentUpon> 176 177 </Compile> 178 <Compile Include="LinearProgramming\Wrapper\SolverResponseStatus.cs" /> 177 179 <Compile Include="Properties\AssemblyInfo.cs" /> 178 180 <Compile Include="Properties\Settings.Designer.cs"> … … 181 183 <DependentUpon>Settings.settings</DependentUpon> 182 184 </Compile> 183 <None Include="app.config" /> 185 <None Include="app.config"> 186 <SubType>Designer</SubType> 187 </None> 184 188 <None Include="Plugin.cs.frame" /> 185 189 <Compile Include="Plugin.cs" /> -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/LinearProgrammingAlgorithm.cs
r16288 r16373 35 35 namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Algorithms { 36 36 37 [Item("Linear/Mixed Integer Programming (LP/MIP)", "")] 38 [Creatable(CreatableAttribute.Categories.SingleSolutionAlgorithms)] 37 [Item("Linear/Mixed Integer Programming (LP/MIP)", "Linear/mixed integer programming implemented in several solvers. " + 38 "See also https://dev.heuristiclab.com/trac.fcgi/wiki/Documentation/Howto/LinearMixedIntegerProgramming")] // TODO: update link 39 [Creatable(CreatableAttribute.Categories.ExactAlgorithms)] 39 40 [StorableClass] 40 41 public class LinearProgrammingAlgorithm : BasicAlgorithm { … … 53 54 54 55 [Storable] 55 private readonly IFixedValueParameter< DoubleValue> relativeGapToleranceParam;56 private readonly IFixedValueParameter<PercentValue> relativeGapToleranceParam; 56 57 57 58 [Storable] … … 65 66 66 67 public IConstrainedValueParameter<ISolver> SolverParameter { 67 get { return solverParam; }68 set { solverParam = value; }68 get => solverParam; 69 set => solverParam = value; 69 70 } 70 71 … … 72 73 Parameters.Add(solverParam = 73 74 new ConstrainedValueParameter<ISolver>(nameof(Solver), "The solver used to solve the model.")); 74 Parameters.Add(relativeGapToleranceParam = new FixedValueParameter<DoubleValue>(nameof(RelativeGapTolerance), 75 "Limit for relative MIP gap.", new DoubleValue(MPSolverParameters.kDefaultRelativeMipGap))); 75 76 ISolver defaultSolver; 77 solverParam.ValidValues.Add(new BopSolver()); 78 solverParam.ValidValues.Add(defaultSolver = new CoinOrSolver()); 79 solverParam.ValidValues.Add(new CplexSolver()); 80 solverParam.ValidValues.Add(new GlopSolver()); 81 solverParam.ValidValues.Add(new GlpkSolver()); 82 solverParam.ValidValues.Add(new GurobiSolver()); 83 solverParam.ValidValues.Add(new ScipSolver()); 84 solverParam.Value = defaultSolver; 85 86 Parameters.Add(relativeGapToleranceParam = new FixedValueParameter<PercentValue>(nameof(RelativeGapTolerance), 87 "Limit for relative MIP gap.", new PercentValue(MPSolverParameters.kDefaultRelativeMipGap))); 76 88 Parameters.Add(timeLimitParam = new FixedValueParameter<TimeSpanValue>(nameof(TimeLimit), 77 89 "Limit for runtime. Set to zero for unlimited runtime.", new TimeSpanValue())); … … 92 104 93 105 Problem = new LinearProgrammingProblem(); 94 95 solverParam.ValidValues.Add(new CoinOrSolver());96 solverParam.ValidValues.Add(new CplexSolver());97 solverParam.ValidValues.Add(new GlpkSolver());98 solverParam.ValidValues.Add(new GurobiSolver());99 solverParam.ValidValues.Add(new ScipSolver());100 solverParam.ValidValues.Add(new BopSolver());101 solverParam.ValidValues.Add(new GlopSolver());102 106 } 103 107 … … 176 180 public override void Pause() { 177 181 base.Pause(); 178 Solver.Interrupt ();182 Solver.InterruptSolve(); 179 183 } 180 184 … … 190 194 public override void Stop() { 191 195 base.Stop(); 192 Solver.Interrupt(); 193 } 194 195 protected override void Initialize(CancellationToken cancellationToken) { 196 base.Initialize(cancellationToken); 196 Solver.InterruptSolve(); 197 197 } 198 198 -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/ProblemType.cs
r16372 r16373 22 22 namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Algorithms { 23 23 24 public enum LinearProgrammingType {24 public enum ProblemType { 25 25 LinearProgramming, 26 26 MixedIntegerProgramming -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IIncrementalSolver.cs
r16288 r16373 25 25 26 26 public interface IIncrementalSolver : ISolver { 27 bool Incrementality { get; set; }28 27 TimeSpan QualityUpdateInterval { get; set; } 28 bool SupportsQualityUpdate { get; } 29 29 } 30 30 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/ISolver.cs
r16288 r16373 26 26 27 27 public interface ISolver : IParameterizedNamedItem { 28 LinearProgrammingType LinearProgrammingType { get; set; }28 ProblemType ProblemType { get; set; } 29 29 bool SupportsPause { get; } 30 30 bool SupportsStop { get; } 31 31 32 void Interrupt();32 bool InterruptSolve(); 33 33 34 34 void Reset(); -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/IncrementalSolver.cs
r16288 r16373 23 23 using System.Linq; 24 24 using System.Threading; 25 using Google.OrTools.LinearSolver;26 25 using HeuristicLab.Analysis; 27 26 using HeuristicLab.Common; … … 35 34 [StorableClass] 36 35 public class IncrementalSolver : Solver, IIncrementalSolver { 37 38 [Storable]39 protected readonly IValueParameter<BoolValue> incrementalityParam;40 36 41 37 [Storable] … … 55 51 56 52 public IncrementalSolver() { 57 Parameters.Add(incrementalityParam = new ValueParameter<BoolValue>(nameof(Incrementality),58 "Advanced usage: incrementality from one solve to the next.",59 new BoolValue(MPSolverParameters.kDefaultIncrementality == MPSolverParameters.INCREMENTALITY_ON)));60 53 Parameters.Add(qualityUpdateIntervalParam = 61 54 new ValueParameter<TimeSpanValue>(nameof(QualityUpdateInterval), 62 "Time interval before solver is paused, resuls are retrieved and solver is resumed.", 63 new TimeSpanValue(new TimeSpan(0, 0, 10)))); 64 65 incrementalityParam.Value.ValueChanged += (sender, args) => { 66 if (((BoolValue)sender).Value) { 67 qualityUpdateIntervalParam.Value = new TimeSpanValue(qualityUpdateIntervalParam.Value.Value); 55 "Time interval before solver is paused, results are retrieved and solver is resumed. " + 56 "Set to zero for no intermediate results and faster solving.", new TimeSpanValue(new TimeSpan(0, 0, 10)))); 57 problemTypeParam.Value.ValueChanged += (sender, args) => { 58 if (SupportsQualityUpdate) { 59 if (!Parameters.Contains(qualityUpdateIntervalParam)) { 60 Parameters.Add(qualityUpdateIntervalParam); 61 } 68 62 } else { 69 qualityUpdateIntervalParam.Value = (TimeSpanValue)qualityUpdateIntervalParam.Value.AsReadOnly();63 Parameters.Remove(qualityUpdateIntervalParam); 70 64 } 71 65 }; … … 74 68 protected IncrementalSolver(IncrementalSolver original, Cloner cloner) 75 69 : base(original, cloner) { 76 pro grammingTypeParam = cloner.Clone(original.programmingTypeParam);70 problemTypeParam = cloner.Clone(original.problemTypeParam); 77 71 qualityUpdateIntervalParam = cloner.Clone(original.qualityUpdateIntervalParam); 78 incrementalityParam = cloner.Clone(original.incrementalityParam);79 72 if (original.qualityPerClock != null) 80 73 qualityPerClock = cloner.Clone(original.qualityPerClock); 81 74 } 82 75 83 public bool Incrementality { 84 get => incrementalityParam.Value.Value; 85 set => incrementalityParam.Value.Value = value; 86 } 76 public virtual bool SupportsQualityUpdate => true; 87 77 88 78 public TimeSpan QualityUpdateInterval { … … 91 81 } 92 82 83 protected virtual TimeSpan TimeLimit => QualityUpdateInterval; 84 93 85 public override void Solve(LinearProgrammingAlgorithm algorithm, CancellationToken cancellationToken) { 94 if (! Incrementality) {86 if (!SupportsQualityUpdate || QualityUpdateInterval == TimeSpan.Zero) { 95 87 base.Solve(algorithm, cancellationToken); 96 88 return; … … 101 93 102 94 if (!unlimitedRuntime) { 103 var wallTime = ((TimeSpanValue)algorithm.Results.SingleOrDefault(r => r.Name == "Wall Time")?.Value)?.Value; 104 if (wallTime.HasValue) { 105 timeLimit -= wallTime.Value; 106 } 95 timeLimit -= algorithm.ExecutionTime; 107 96 } 108 97 109 98 var iterations = (long)timeLimit.TotalMilliseconds / (long)QualityUpdateInterval.TotalMilliseconds; 110 99 var remaining = timeLimit - TimeSpan.FromMilliseconds(iterations * QualityUpdateInterval.TotalMilliseconds); 111 var validResultStatuses = new[] { ResultStatus.N OT_SOLVED, ResultStatus.FEASIBLE};100 var validResultStatuses = new[] { ResultStatus.NotSolved, ResultStatus.Feasible }; 112 101 113 102 while (unlimitedRuntime || iterations > 0) { 114 base.Solve(algorithm, QualityUpdateInterval, true); 103 if (cancellationToken.IsCancellationRequested) 104 return; 105 106 base.Solve(algorithm, TimeLimit); 115 107 UpdateQuality(algorithm); 116 108 117 var resultStatus = ((EnumValue<ResultStatus>)algorithm.Results[ "Result Status"].Value).Value;118 if (!validResultStatuses.Contains(resultStatus) || cancellationToken.IsCancellationRequested)109 var resultStatus = ((EnumValue<ResultStatus>)algorithm.Results[nameof(solver.ResultStatus)].Value).Value; 110 if (!validResultStatuses.Contains(resultStatus)) 119 111 return; 120 112 … … 124 116 125 117 if (remaining > TimeSpan.Zero) { 126 base.Solve(algorithm, remaining , true);118 base.Solve(algorithm, remaining); 127 119 UpdateQuality(algorithm); 128 120 } … … 132 124 if (!algorithm.Results.Exists(r => r.Name == "QualityPerClock")) { 133 125 qualityPerClock = new IndexedDataTable<double>("Quality per Clock"); 134 qpcRow = new IndexedDataRow<double>(" First-hit Graph Objective");135 bpcRow = new IndexedDataRow<double>(" First-hit GraphBound");126 qpcRow = new IndexedDataRow<double>("Objective Value"); 127 bpcRow = new IndexedDataRow<double>("Bound"); 136 128 algorithm.Results.AddOrUpdateResult("QualityPerClock", qualityPerClock); 137 129 } 138 130 139 var resultStatus = ((EnumValue<ResultStatus>)algorithm.Results[ "Result Status"].Value).Value;131 var resultStatus = ((EnumValue<ResultStatus>)algorithm.Results[nameof(solver.ResultStatus)].Value).Value; 140 132 141 if (new[] { ResultStatus.A BNORMAL, ResultStatus.NOT_SOLVED, ResultStatus.UNBOUNDED}.Contains(resultStatus))133 if (new[] { ResultStatus.Abnormal, ResultStatus.NotSolved, ResultStatus.Unbounded }.Contains(resultStatus)) 142 134 return; 143 135 144 var objective = ((DoubleValue)algorithm.Results[ "Best Objective Value"].Value).Value;145 var bound = ((DoubleValue)algorithm.Results["Best Objective Bound"].Value).Value;136 var objective = ((DoubleValue)algorithm.Results[$"Best{nameof(solver.ObjectiveValue)}"].Value).Value; 137 var bound = solver.IsMip ? ((DoubleValue)algorithm.Results[$"Best{nameof(solver.ObjectiveBound)}"].Value).Value : double.NaN; 146 138 var time = algorithm.ExecutionTime.TotalSeconds; 147 139 … … 151 143 qpcRow.Values.Add(Tuple.Create(time, objective)); 152 144 qualityPerClock.Rows.Add(qpcRow); 153 algorithm.Results.AddOrUpdateResult( "Best Solution FoundAt", new TimeSpanValue(TimeSpan.FromSeconds(time)));145 algorithm.Results.AddOrUpdateResult($"Best{nameof(solver.ObjectiveValue)}FoundAt", new TimeSpanValue(TimeSpan.FromSeconds(time))); 154 146 } 155 147 } else { … … 158 150 if (!objective.IsAlmost(previousBest)) { 159 151 qpcRow.Values.Add(Tuple.Create(time, objective)); 160 algorithm.Results.AddOrUpdateResult( "Best Solution FoundAt", new TimeSpanValue(TimeSpan.FromSeconds(time)));152 algorithm.Results.AddOrUpdateResult($"Best{nameof(solver.ObjectiveValue)}FoundAt", new TimeSpanValue(TimeSpan.FromSeconds(time))); 161 153 } 162 154 } 155 156 if (!solver.IsMip) 157 return; 163 158 164 159 if (!bpcRow.Values.Any()) { -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/Base/Solver.cs
r16288 r16373 34 34 35 35 [Storable] 36 protected IValueParameter<EnumValue< LinearProgrammingType>> programmingTypeParam;36 protected IValueParameter<EnumValue<ProblemType>> problemTypeParam; 37 37 38 38 protected LinearSolver solver; 39 39 40 [Storable] 41 protected IFixedValueParameter<TextValue> solverSpecificParametersParam; 42 40 43 public Solver() { 41 Parameters.Add(programmingTypeParam = 42 new ValueParameter<EnumValue<LinearProgrammingType>>(nameof(LinearProgrammingType), 43 new EnumValue<LinearProgrammingType>())); 44 Parameters.Add(problemTypeParam = 45 new ValueParameter<EnumValue<ProblemType>>(nameof(ProblemType), new EnumValue<ProblemType>())); 46 Parameters.Add(solverSpecificParametersParam = 47 new FixedValueParameter<TextValue>(nameof(SolverSpecificParameters), new TextValue())); 44 48 } 45 49 … … 51 55 protected Solver(Solver original, Cloner cloner) 52 56 : base(original, cloner) { 53 programmingTypeParam = cloner.Clone(original.programmingTypeParam); 57 problemTypeParam = cloner.Clone(original.problemTypeParam); 58 solverSpecificParametersParam = cloner.Clone(original.solverSpecificParametersParam); 54 59 } 55 60 56 public LinearProgrammingType LinearProgrammingType {57 get => pro grammingTypeParam.Value.Value;58 set => pro grammingTypeParam.Value.Value = value;61 public ProblemType ProblemType { 62 get => problemTypeParam.Value.Value; 63 set => problemTypeParam.Value.Value = value; 59 64 } 60 65 66 public TextValue SolverSpecificParameters => solverSpecificParametersParam.Value; 67 68 public virtual bool SupportsPause => true; 69 public virtual bool SupportsStop => true; 61 70 protected virtual OptimizationProblemType OptimizationProblemType { get; } 62 public virtual bool SupportsPause => false;63 public virtual bool SupportsStop => false;64 71 65 72 public override IDeepCloneable Clone(Cloner cloner) => new Solver(this, cloner); … … 67 74 public void Dispose() => solver?.Dispose(); 68 75 69 public void Interrupt() => solver.Stop();76 public bool InterruptSolve() => solver?.InterruptSolve() ?? false; 70 77 71 78 public virtual void Reset() { … … 78 85 79 86 public virtual void Solve(LinearProgrammingAlgorithm algorithm) => 80 Solve(algorithm, algorithm.TimeLimit , false);87 Solve(algorithm, algorithm.TimeLimit); 81 88 82 public virtual void Solve(LinearProgrammingAlgorithm algorithm, TimeSpan timeLimit , bool incrementality) {89 public virtual void Solve(LinearProgrammingAlgorithm algorithm, TimeSpan timeLimit) { 83 90 string libraryName = null; 84 91 if (this is IExternalSolver externalSolver) … … 86 93 87 94 if (solver == null) { 88 solver = LinearSolver.CreateSolver(OptimizationProblemType, Name,89 libraryName , s => algorithm.Problem.ProblemDefinition.BuildModel(s));95 solver = new LinearSolver(OptimizationProblemType, s => algorithm.Problem.ProblemDefinition.BuildModel(s), Name, 96 libraryName); 90 97 } 91 98 … … 97 104 solver.Scaling = algorithm.Scaling; 98 105 solver.LpAlgorithm = algorithm.LpAlgorithm; 99 solver.Incrementality = incrementality; 106 solver.Incrementality = true; 107 108 if (!solver.SetSolverSpecificParameters(SolverSpecificParameters.Value)) 109 throw new ArgumentException("Solver specific parameters could not be set."); 100 110 101 111 solver.Solve(); 102 112 103 113 algorithm.Problem.ProblemDefinition.Analyze(solver.Solver, algorithm.Results); 104 algorithm.Results.AddOrUpdateResult("Result Status", new EnumValue<ResultStatus>(solver.ResultStatus)); 105 algorithm.Results.AddOrUpdateResult("Best Objective Value", 114 algorithm.Results.AddOrUpdateResult(nameof(solver.ResultStatus), 115 new EnumValue<ResultStatus>(solver.ResultStatus)); 116 algorithm.Results.AddOrUpdateResult($"Best{nameof(solver.ObjectiveValue)}", 106 117 new DoubleValue(solver.ObjectiveValue ?? double.NaN)); 107 algorithm.Results.AddOrUpdateResult("Best Objective Bound", 108 new DoubleValue(solver.ObjectiveBound ?? double.NaN)); 109 algorithm.Results.AddOrUpdateResult("Absolute Gap", new DoubleValue(solver.AbsoluteGap ?? double.NaN)); 110 algorithm.Results.AddOrUpdateResult("Relative Gap", new DoubleValue(solver.RelativeGap ?? double.NaN)); 111 algorithm.Results.AddOrUpdateResult("Number of Constraints", new IntValue(solver.NumberOfConstraints)); 112 algorithm.Results.AddOrUpdateResult("Number of Variables", new IntValue(solver.NumberOfVariables)); 113 algorithm.Results.AddOrUpdateResult("Number of Nodes", new DoubleValue(solver.NumberOfNodes)); 114 algorithm.Results.AddOrUpdateResult("Iterations", new DoubleValue(solver.Iterations)); 115 algorithm.Results.AddOrUpdateResult("Solver Version", new StringValue(solver.SolverVersion)); 116 algorithm.Results.AddOrUpdateResult("Wall Time", new TimeSpanValue(solver.WallTime ?? TimeSpan.Zero)); 118 119 if (solver.IsMip) { 120 algorithm.Results.AddOrUpdateResult($"Best{nameof(solver.ObjectiveBound)}", 121 new DoubleValue(solver.ObjectiveBound ?? double.NaN)); 122 algorithm.Results.AddOrUpdateResult(nameof(solver.AbsoluteGap), 123 new DoubleValue(solver.AbsoluteGap ?? double.NaN)); 124 algorithm.Results.AddOrUpdateResult(nameof(solver.RelativeGap), 125 new PercentValue(solver.RelativeGap ?? double.NaN)); 126 } 127 128 algorithm.Results.AddOrUpdateResult(nameof(solver.NumberOfConstraints), new IntValue(solver.NumberOfConstraints)); 129 algorithm.Results.AddOrUpdateResult(nameof(solver.NumberOfVariables), new IntValue(solver.NumberOfVariables)); 130 131 if (solver.IsMip) { 132 algorithm.Results.AddOrUpdateResult(nameof(solver.NumberOfNodes), new DoubleValue(solver.NumberOfNodes)); 133 } 134 135 algorithm.Results.AddOrUpdateResult(nameof(solver.Iterations), new DoubleValue(solver.Iterations)); 136 algorithm.Results.AddOrUpdateResult(nameof(solver.SolverVersion), new StringValue(solver.SolverVersion)); 117 137 } 118 138 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/BopSolver.cs
r16288 r16373 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; 25 using HeuristicLab.Data; 24 26 using HeuristicLab.MathematicalOptimization.LinearProgramming.Algorithms.Solvers.Base; 27 using HeuristicLab.Parameters; 25 28 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 26 29 … … 32 35 33 36 public BopSolver() { 34 Parameters.Remove(programmingTypeParam); 37 Parameters.Remove(problemTypeParam); 38 Parameters.Add(new FixedValueParameter<StringValue>(nameof(ProblemType), new StringValue("ZeroOneProgramming").AsReadOnly())); 39 SolverSpecificParameters.Value = 40 "# for file format, see Protocol Buffers text format (https://developers.google.com/protocol-buffers/docs/overview#whynotxml)" + Environment.NewLine + 41 "# for parameters, see https://github.com/google/or-tools/blob/v6.10/ortools/bop/bop_parameters.proto" + Environment.NewLine + 42 "# example:" + Environment.NewLine + 43 "# random_seed: 10" + Environment.NewLine; 35 44 } 36 45 … … 44 53 } 45 54 46 public override bool SupportsPause => true;47 48 public override bool SupportsStop => true;49 50 55 protected override OptimizationProblemType OptimizationProblemType => 51 OptimizationProblemType.BOP_INTEGER_PROGRAMMING;56 OptimizationProblemType.BopIntegerProgramming; 52 57 } 53 58 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CoinOrSolver.cs
r16288 r16373 22 22 using HeuristicLab.Common; 23 23 using HeuristicLab.Core; 24 using HeuristicLab.Data;25 24 using HeuristicLab.MathematicalOptimization.LinearProgramming.Algorithms.Solvers.Base; 26 25 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; … … 33 32 34 33 public CoinOrSolver() { 35 programmingTypeParam.Value.ValueChanged += (sender, args) => { 36 if (((EnumValue<LinearProgrammingType>)sender).Value == LinearProgrammingType.LinearProgramming) { 37 incrementalityParam.Value = new BoolValue(true); 38 incrementalityParam.Value.ValueChanged += (s, a) => { 39 if (((BoolValue)s).Value) { 40 qualityUpdateIntervalParam.Value = new TimeSpanValue(qualityUpdateIntervalParam.Value.Value); 41 } else { 42 qualityUpdateIntervalParam.Value = (TimeSpanValue)qualityUpdateIntervalParam.Value.AsReadOnly(); 43 } 44 }; 45 } else { 46 incrementalityParam.Value = (BoolValue)new BoolValue().AsReadOnly(); 47 } 48 }; 34 Parameters.Remove(solverSpecificParametersParam); 49 35 } 50 36 … … 58 44 } 59 45 46 public override bool SupportsPause => false; 47 48 public override bool SupportsQualityUpdate => ProblemType == ProblemType.LinearProgramming; 49 50 public override bool SupportsStop => false; 51 60 52 protected override OptimizationProblemType OptimizationProblemType => 61 LinearProgrammingType == LinearProgrammingType.LinearProgramming62 ? OptimizationProblemType.C LP_LINEAR_PROGRAMMING63 : OptimizationProblemType.C BC_MIXED_INTEGER_PROGRAMMING;53 ProblemType == ProblemType.LinearProgramming 54 ? OptimizationProblemType.ClpLinearProgramming 55 : OptimizationProblemType.CbcMixedIntegerProgramming; 64 56 } 65 57 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/CplexSolver.cs
r16288 r16373 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 36 37 Parameters.Add(libraryNameParam = new FixedValueParameter<FileValue>(nameof(LibraryName), 37 38 new FileValue { FileDialogFilter = FileDialogFilter, Value = Properties.Settings.Default.CplexLibraryName })); 39 SolverSpecificParameters.Value = 40 "CPLEX Parameter File Version 12.8.0" + Environment.NewLine + 41 "# for file format, see https://www.ibm.com/support/knowledgecenter/SSSA5P_12.8.0/ilog.odms.cplex.help/CPLEX/FileFormats/topics/PRM.html" + Environment.NewLine + 42 "# for parameters, see https://www.ibm.com/support/knowledgecenter/SSSA5P_12.8.0/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListTopical.html" + Environment.NewLine + 43 "# example:" + Environment.NewLine + 44 "# CPXPARAM_RandomSeed 10" + Environment.NewLine; 38 45 } 39 46 … … 48 55 49 56 protected override OptimizationProblemType OptimizationProblemType => 50 LinearProgrammingType == LinearProgrammingType.LinearProgramming51 ? OptimizationProblemType.C PLEX_LINEAR_PROGRAMMING52 : OptimizationProblemType.C PLEX_MIXED_INTEGER_PROGRAMMING;57 ProblemType == ProblemType.LinearProgramming 58 ? OptimizationProblemType.CplexLinearProgramming 59 : OptimizationProblemType.CplexMixedIntegerProgramming; 53 60 } 54 61 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlopSolver.cs
r16288 r16373 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 33 34 34 35 public GlopSolver() { 35 programmingTypeParam.Value = (EnumValue<LinearProgrammingType>)programmingTypeParam.Value.AsReadOnly(); 36 problemTypeParam.Value = (EnumValue<ProblemType>)problemTypeParam.Value.AsReadOnly(); 37 SolverSpecificParameters.Value = 38 "# for file format, see Protocol Buffers text format (https://developers.google.com/protocol-buffers/docs/overview#whynotxml)" + Environment.NewLine + 39 "# for parameters, see https://github.com/google/or-tools/blob/v6.10/ortools/glop/parameters.proto" + Environment.NewLine + 40 "# example:" + Environment.NewLine + 41 "# random_seed: 10" + Environment.NewLine; 36 42 } 37 43 … … 45 51 } 46 52 47 public override bool SupportsPause => true;48 49 public override bool SupportsStop => true;50 51 53 protected override OptimizationProblemType OptimizationProblemType => 52 OptimizationProblemType.GLOP_LINEAR_PROGRAMMING;54 OptimizationProblemType.GlopLinearProgramming; 53 55 } 54 56 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GlpkSolver.cs
r16288 r16373 34 34 35 35 public GlpkSolver() { 36 Parameters.Remove(solverSpecificParametersParam); 36 37 Parameters.Add(libraryNameParam = new FixedValueParameter<FileValue>(nameof(LibraryName), 37 38 new FileValue { FileDialogFilter = FileDialogFilter, Value = Properties.Settings.Default.GlpkLibraryName })); 38 39 programmingTypeParam.Value.ValueChanged += (sender, args) => {40 if (((EnumValue<LinearProgrammingType>)sender).Value == LinearProgrammingType.LinearProgramming) {41 incrementalityParam.Value = new BoolValue(true);42 incrementalityParam.Value.ValueChanged += (s, a) => {43 if (((BoolValue)s).Value) {44 qualityUpdateIntervalParam.Value = new TimeSpanValue(qualityUpdateIntervalParam.Value.Value);45 } else {46 qualityUpdateIntervalParam.Value = (TimeSpanValue)qualityUpdateIntervalParam.Value.AsReadOnly();47 }48 };49 } else {50 incrementalityParam.Value = (BoolValue)new BoolValue().AsReadOnly();51 }52 };53 39 } 54 40 … … 62 48 } 63 49 50 public override bool SupportsPause => ProblemType == ProblemType.LinearProgramming; // TODO: pause working for linear programs? 51 52 public override bool SupportsQualityUpdate => ProblemType == ProblemType.LinearProgramming; 53 64 54 protected override OptimizationProblemType OptimizationProblemType => 65 LinearProgrammingType == LinearProgrammingType.LinearProgramming66 ? OptimizationProblemType.G LPK_LINEAR_PROGRAMMING67 : OptimizationProblemType.G LPK_MIXED_INTEGER_PROGRAMMING;55 ProblemType == ProblemType.LinearProgramming 56 ? OptimizationProblemType.GlpkLinearProgramming 57 : OptimizationProblemType.GlpkMixedIntegerProgramming; 68 58 } 69 59 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/GurobiSolver.cs
r16288 r16373 20 20 #endregion 21 21 22 using System; 22 23 using HeuristicLab.Common; 23 24 using HeuristicLab.Core; … … 36 37 Parameters.Add(libraryNameParam = new FixedValueParameter<FileValue>(nameof(LibraryName), 37 38 new FileValue { FileDialogFilter = FileDialogFilter, Value = Properties.Settings.Default.GurobiLibraryName })); 39 SolverSpecificParameters.Value = 40 "# for file format, see http://www.gurobi.com/documentation/8.1/refman/prm_format.html" + Environment.NewLine + 41 "# for parameters, see http://www.gurobi.com/documentation/8.1/refman/parameters.html" + Environment.NewLine + 42 "# example:" + Environment.NewLine + 43 "# Seed 10" + Environment.NewLine; 38 44 } 39 45 40 46 protected GurobiSolver(GurobiSolver original, Cloner cloner) 41 47 : base(original, cloner) { 42 pro grammingTypeParam = cloner.Clone(original.programmingTypeParam);48 problemTypeParam = cloner.Clone(original.problemTypeParam); 43 49 } 44 50 … … 48 54 } 49 55 50 public override bool SupportsPause => true;51 52 public override bool SupportsStop => true;53 54 56 protected override OptimizationProblemType OptimizationProblemType => 55 LinearProgrammingType == LinearProgrammingType.LinearProgramming56 ? OptimizationProblemType.G UROBI_LINEAR_PROGRAMMING57 : OptimizationProblemType.G UROBI_MIXED_INTEGER_PROGRAMMING;57 ProblemType == ProblemType.LinearProgramming 58 ? OptimizationProblemType.GurobiLinearProgramming 59 : OptimizationProblemType.GurobiMixedIntegerProgramming; 58 60 } 59 61 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Algorithms/Solvers/ScipSolver.cs
r16288 r16373 20 20 #endregion 21 21 22 using System; 23 using System.Threading; 22 24 using HeuristicLab.Common; 23 25 using HeuristicLab.Core; … … 31 33 [Item("SCIP", "SCIP (http://scip.zib.de/) must be installed and licenced.")] 32 34 [StorableClass] 33 public class ScipSolver : ExternalSolver { 35 public class ScipSolver : ExternalIncrementalSolver { 36 37 private TimeSpan timeLimit = TimeSpan.Zero; 34 38 35 39 public ScipSolver() { 36 40 Parameters.Add(libraryNameParam = new FixedValueParameter<FileValue>(nameof(LibraryName), 37 41 new FileValue { FileDialogFilter = FileDialogFilter, Value = Properties.Settings.Default.ScipLibraryName })); 38 programmingTypeParam.Value = 39 (EnumValue<LinearProgrammingType>)new EnumValue<LinearProgrammingType>(LinearProgrammingType 40 .MixedIntegerProgramming).AsReadOnly(); 42 problemTypeParam.Value = 43 (EnumValue<ProblemType>)new EnumValue<ProblemType>(ProblemType.MixedIntegerProgramming).AsReadOnly(); 44 SolverSpecificParameters.Value = 45 "# for file format and parameters, see https://scip.zib.de/doc/html/PARAMETERS.php" + Environment.NewLine + 46 "# example:" + Environment.NewLine + 47 "# branching/random/seed = 10" + Environment.NewLine; 41 48 } 42 49 … … 50 57 } 51 58 52 public override bool SupportsPause => true; 59 protected override OptimizationProblemType OptimizationProblemType => 60 OptimizationProblemType.ScipMixedIntegerProgramming; 61 protected override TimeSpan TimeLimit => timeLimit += QualityUpdateInterval; 53 62 54 public override bool SupportsStop => true;55 56 protected override OptimizationProblemType OptimizationProblemType =>57 OptimizationProblemType.SCIP_MIXED_INTEGER_PROGRAMMING;63 public override void Solve(LinearProgrammingAlgorithm algorithm, CancellationToken cancellationToken) { 64 timeLimit = TimeSpan.Zero; 65 base.Solve(algorithm, cancellationToken); 66 } 58 67 } 59 68 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/ILinearProgrammingProblemDefinition.cs
r16288 r16373 27 27 public interface ILinearProgrammingProblemDefinition { 28 28 29 voidBuildModel(Solver solver);29 bool BuildModel(Solver solver); 30 30 31 31 void Analyze(Solver solver, ResultCollection results); -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblem.cs
r16288 r16373 21 21 22 22 using System.Drawing; 23 using Google.OrTools.LinearSolver;24 23 using HeuristicLab.Common; 25 24 using HeuristicLab.Common.Resources; … … 31 30 namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Problems { 32 31 33 [Item("Linear/Mixed Integer Programming Problem (LP/MIP)", " ")]32 [Item("Linear/Mixed Integer Programming Problem (LP/MIP)", "Represents a linear/mixed integer problem.")] 34 33 [Creatable(CreatableAttribute.Categories.CombinatorialProblems)] 35 34 [StorableClass] … … 56 55 private FixedValueParameter<LinearProgrammingProblemDefinitionScript> LinearProgrammingProblemScriptParameter => 57 56 (FixedValueParameter<LinearProgrammingProblemDefinitionScript>)Parameters["ProblemScript"]; 58 59 public void BuildModel(Solver solver) => ProblemDefinition.BuildModel(solver);60 57 61 58 public override IDeepCloneable Clone(Cloner cloner) { -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Problems/LinearProgrammingProblemDefinitionScript.cs
r16288 r16373 33 33 namespace HeuristicLab.MathematicalOptimization.LinearProgramming.Problems { 34 34 35 [Item(" Single-objective Problem Definition Script", "Script that defines the parameter vector and evaluates the solution for a programmableproblem.")]35 [Item("Linear/Mixed Integer Programming Problem Definition Script", "Script that defines the model and evaluates the solution for a linear/mixed integer programming problem.")] 36 36 [StorableClass] 37 37 public sealed class LinearProgrammingProblemDefinitionScript : Script, ILinearProgrammingProblemDefinition, IStorableContent { … … 144 144 } 145 145 146 public voidBuildModel(Solver solver) => CompiledProblemDefinition.BuildModel(solver);146 public bool BuildModel(Solver solver) => CompiledProblemDefinition.BuildModel(solver); 147 147 148 148 public void Analyze(Solver solver, ResultCollection results) => CompiledProblemDefinition.Analyze(solver, results); -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Templates/CompiledLinearProgrammingProblemDefinition.cs
r16288 r16373 16 16 private Variable x; 17 17 private Variable y; 18 18 19 19 public override void Initialize() { 20 20 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 21 21 // Add additional initialization code e.g. private variables that you need for evaluating 22 22 } 23 24 public voidBuildModel(Solver solver) {23 24 public bool BuildModel(Solver solver) { 25 25 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable 26 26 // Example model taken from https://developers.google.com/optimization/mip/integer_opt … … 32 32 // Define the objective 33 33 solver.Maximize(x + 10 * y); 34 return true; 34 35 } 35 36 36 37 public void Analyze(Solver solver, ResultCollection results) { 37 38 // Use vars.yourVariable to access variables in the variable store i.e. yourVariable … … 43 44 //results.AddOrUpdateResult("y", new DoubleValue(solver.LookupVariableOrNull("y").SolutionValue())); 44 45 } 45 46 46 47 // Implement further classes and methods 47 48 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Wrapper/DoubleParam.cs
r16372 r16373 26 26 27 27 // Limit for relative MIP gap. 28 R ELATIVE_MIP_GAP= 0,28 RelativeMipGap = 0, 29 29 30 30 // Advanced usage: tolerance for primal feasibility of basic … … 32 32 // tolerance of integer solutions for MIP or the tolerance used 33 33 // during presolve. 34 P RIMAL_TOLERANCE= 1,34 PrimalTolerance = 1, 35 35 36 36 // Advanced usage: tolerance for dual feasibility of basic solutions. 37 D UAL_TOLERANCE= 238 } ;37 DualTolerance = 2 38 } 39 39 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Wrapper/IncrementalityValues.cs
r16372 r16373 25 25 26 26 // Start solve from scratch. 27 I NCREMENTALITY_OFF= 0,27 IncrementalityOff = 0, 28 28 29 29 // Reuse results from previous solve as much as the underlying 30 30 // solver allows. 31 I NCREMENTALITY_ON= 132 } ;31 IncrementalityOn = 1 32 } 33 33 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Wrapper/IntegerParam.cs
r16372 r16373 26 26 27 27 // Advanced usage: presolve mode. 28 P RESOLVE= 1000,28 Presolve = 1000, 29 29 30 30 // Algorithm to solve linear programs. 31 L P_ALGORITHM= 1001,31 LpAlgorithm = 1001, 32 32 33 33 // Advanced usage: incrementality from one solve to the next. 34 I NCREMENTALITY= 1002,34 Incrementality = 1002, 35 35 36 36 // Advanced usage: enable or disable matrix scaling. 37 S CALING= 100338 } ;37 Scaling = 1003 38 } 39 39 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/LinearProgramming/Wrapper/LpAlgorithmValues.cs
r16372 r16373 26 26 PrimalSimplex = 11, 27 27 BarrierAlgorithm = 12 28 } ;28 } 29 29 } -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/Plugin.cs.frame
r16288 r16373 24 24 namespace HeuristicLab.MathematicalOptimization { 25 25 26 [Plugin("HeuristicLab.MathematicalOptimization", "Provides support for mathematical optimization based on Google OR-Tools", "3.3.15.$WCREV$")] 26 [Plugin("HeuristicLab.MathematicalOptimization", "Provides support for mathematical optimization based on Google OR-Tools. " + 27 "Requires the Microsoft Visual C++ 2017 Redistributable (x64) - 14.16.27012: https://aka.ms/vs/15/release/vc_redist.x64.exe", "3.3.15.$WCREV$")] 27 28 [PluginFile("HeuristicLab.MathematicalOptimization-3.3.dll", PluginFileType.Assembly)] 28 29 [PluginDependency("HeuristicLab.Analysis", "3.3")] … … 37 38 [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")] 38 39 [PluginDependency("HeuristicLab.Optimization", "3.3")] 39 [PluginDependency("HeuristicLab.OrTools", "6. 9")]40 [PluginDependency("HeuristicLab.OrTools", "6.10")] 40 41 [PluginDependency("HeuristicLab.Parameters", "3.3")] 41 42 [PluginDependency("HeuristicLab.Persistence", "3.3")] -
branches/2931_OR-Tools_LP_MIP/HeuristicLab.MathematicalOptimization/3.3/app.config
r16288 r16373 12 12 </setting> 13 13 <setting name="GurobiLibraryName" serializeAs="String"> 14 <value>gurobi8 0.dll</value>14 <value>gurobi81.dll</value> 15 15 </setting> 16 16 <setting name="CplexLibraryName" serializeAs="String"> -
branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views-3.3.csproj
r15171 r16373 18 18 <DebugType>full</DebugType> 19 19 <Optimize>false</Optimize> 20 <OutputPath>..\..\..\..\trunk\ sources\bin\</OutputPath>20 <OutputPath>..\..\..\..\trunk\bin\</OutputPath> 21 21 <DefineConstants>DEBUG;TRACE</DefineConstants> 22 22 <ErrorReport>prompt</ErrorReport> … … 41 41 <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 42 42 <SpecificVersion>False</SpecificVersion> 43 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>43 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Collections-3.3.dll</HintPath> 44 44 <Private>False</Private> 45 45 </Reference> 46 46 <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 47 47 <SpecificVersion>False</SpecificVersion> 48 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Common-3.3.dll</HintPath>48 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Common-3.3.dll</HintPath> 49 49 <Private>False</Private> 50 50 </Reference> 51 51 <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 52 52 <SpecificVersion>False</SpecificVersion> 53 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>53 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath> 54 54 <Private>False</Private> 55 55 </Reference> 56 56 <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 57 57 <SpecificVersion>False</SpecificVersion> 58 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Core-3.3.dll</HintPath>58 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Core-3.3.dll</HintPath> 59 59 <Private>False</Private> 60 60 </Reference> 61 61 <Reference Include="HeuristicLab.Core.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 62 62 <SpecificVersion>False</SpecificVersion> 63 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Core.Views-3.3.dll</HintPath>63 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Core.Views-3.3.dll</HintPath> 64 64 <Private>False</Private> 65 65 </Reference> 66 66 <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 67 67 <SpecificVersion>False</SpecificVersion> 68 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Data-3.3.dll</HintPath>68 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Data-3.3.dll</HintPath> 69 69 <Private>False</Private> 70 70 </Reference> 71 71 <Reference Include="HeuristicLab.Data.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 72 72 <SpecificVersion>False</SpecificVersion> 73 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Data.Views-3.3.dll</HintPath>73 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Data.Views-3.3.dll</HintPath> 74 74 <Private>False</Private> 75 75 </Reference> 76 76 <Reference Include="HeuristicLab.MainForm-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 77 77 <SpecificVersion>False</SpecificVersion> 78 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.MainForm-3.3.dll</HintPath>78 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.MainForm-3.3.dll</HintPath> 79 79 <Private>False</Private> 80 80 </Reference> 81 81 <Reference Include="HeuristicLab.MainForm.WindowsForms-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 82 82 <SpecificVersion>False</SpecificVersion> 83 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath>83 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.MainForm.WindowsForms-3.3.dll</HintPath> 84 84 <Private>False</Private> 85 85 </Reference> 86 86 <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 87 87 <SpecificVersion>False</SpecificVersion> 88 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>88 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Optimization-3.3.dll</HintPath> 89 89 <Private>False</Private> 90 90 </Reference> 91 91 <Reference Include="HeuristicLab.Optimization.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 92 92 <SpecificVersion>False</SpecificVersion> 93 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Optimization.Views-3.3.dll</HintPath>93 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Optimization.Views-3.3.dll</HintPath> 94 94 <Private>False</Private> 95 95 </Reference> 96 96 <Reference Include="HeuristicLab.Optimizer-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 97 97 <SpecificVersion>False</SpecificVersion> 98 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Optimizer-3.3.dll</HintPath>98 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Optimizer-3.3.dll</HintPath> 99 99 <Private>False</Private> 100 100 </Reference> 101 101 <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 102 102 <SpecificVersion>False</SpecificVersion> 103 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>103 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Parameters-3.3.dll</HintPath> 104 104 <Private>False</Private> 105 105 </Reference> 106 106 <Reference Include="HeuristicLab.Parameters.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 107 107 <SpecificVersion>False</SpecificVersion> 108 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Parameters.Views-3.3.dll</HintPath>108 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Parameters.Views-3.3.dll</HintPath> 109 109 <Private>False</Private> 110 110 </Reference> 111 111 <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 112 112 <SpecificVersion>False</SpecificVersion> 113 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>113 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath> 114 114 <Private>False</Private> 115 115 </Reference> 116 116 <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 117 117 <SpecificVersion>False</SpecificVersion> 118 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>118 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath> 119 119 <Private>False</Private> 120 120 </Reference> -
branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj
r15171 r16373 18 18 <DebugType>full</DebugType> 19 19 <Optimize>false</Optimize> 20 <OutputPath>..\..\..\..\trunk\ sources\bin\</OutputPath>20 <OutputPath>..\..\..\..\trunk\bin\</OutputPath> 21 21 <DefineConstants>DEBUG;TRACE</DefineConstants> 22 22 <ErrorReport>prompt</ErrorReport> … … 41 41 <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 42 42 <SpecificVersion>False</SpecificVersion> 43 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Collections-3.3.dll</HintPath>43 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Collections-3.3.dll</HintPath> 44 44 <Private>False</Private> 45 45 </Reference> 46 46 <Reference Include="HeuristicLab.Common-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 47 47 <SpecificVersion>False</SpecificVersion> 48 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Common-3.3.dll</HintPath>48 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Common-3.3.dll</HintPath> 49 49 <Private>False</Private> 50 50 </Reference> 51 51 <Reference Include="HeuristicLab.Common.Resources-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 52 52 <SpecificVersion>False</SpecificVersion> 53 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath>53 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Common.Resources-3.3.dll</HintPath> 54 54 <Private>False</Private> 55 55 </Reference> 56 56 <Reference Include="HeuristicLab.Core-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 57 57 <SpecificVersion>False</SpecificVersion> 58 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Core-3.3.dll</HintPath>58 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Core-3.3.dll</HintPath> 59 59 <Private>False</Private> 60 60 </Reference> 61 61 <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 62 62 <SpecificVersion>False</SpecificVersion> 63 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Data-3.3.dll</HintPath>63 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Data-3.3.dll</HintPath> 64 64 <Private>False</Private> 65 65 </Reference> 66 66 <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 67 67 <SpecificVersion>False</SpecificVersion> 68 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll</HintPath>68 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Encodings.IntegerVectorEncoding-3.3.dll</HintPath> 69 69 <Private>False</Private> 70 70 </Reference> 71 71 <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 72 72 <SpecificVersion>False</SpecificVersion> 73 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath>73 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Encodings.RealVectorEncoding-3.3.dll</HintPath> 74 74 <Private>False</Private> 75 75 </Reference> 76 76 <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 77 77 <SpecificVersion>False</SpecificVersion> 78 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll</HintPath>78 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll</HintPath> 79 79 <Private>False</Private> 80 80 </Reference> 81 81 <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 82 82 <SpecificVersion>False</SpecificVersion> 83 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Operators-3.3.dll</HintPath>83 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Operators-3.3.dll</HintPath> 84 84 <Private>False</Private> 85 85 </Reference> 86 86 <Reference Include="HeuristicLab.Optimization-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 87 87 <SpecificVersion>False</SpecificVersion> 88 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>88 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Optimization-3.3.dll</HintPath> 89 89 <Private>False</Private> 90 90 </Reference> 91 91 <Reference Include="HeuristicLab.Parameters-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 92 92 <SpecificVersion>False</SpecificVersion> 93 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath>93 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Parameters-3.3.dll</HintPath> 94 94 <Private>False</Private> 95 95 </Reference> 96 96 <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 97 97 <SpecificVersion>False</SpecificVersion> 98 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath>98 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Persistence-3.3.dll</HintPath> 99 99 <Private>False</Private> 100 100 </Reference> 101 101 <Reference Include="HeuristicLab.PluginInfrastructure-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 102 102 <SpecificVersion>False</SpecificVersion> 103 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>103 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath> 104 104 <Private>False</Private> 105 105 </Reference> 106 106 <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 107 107 <SpecificVersion>False</SpecificVersion> 108 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath>108 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Problems.DataAnalysis-3.4.dll</HintPath> 109 109 <Private>False</Private> 110 110 </Reference> 111 111 <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 112 112 <SpecificVersion>False</SpecificVersion> 113 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.dll</HintPath>113 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.dll</HintPath> 114 114 <Private>False</Private> 115 115 </Reference> 116 116 <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 117 117 <SpecificVersion>False</SpecificVersion> 118 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>118 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath> 119 119 <Private>False</Private> 120 120 </Reference> 121 121 <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 122 122 <SpecificVersion>False</SpecificVersion> 123 <HintPath>..\..\..\..\trunk\ sources\bin\HeuristicLab.Random-3.3.dll</HintPath>123 <HintPath>..\..\..\..\trunk\bin\HeuristicLab.Random-3.3.dll</HintPath> 124 124 <Private>False</Private> 125 125 </Reference>
Note: See TracChangeset
for help on using the changeset viewer.