Changeset 7505 for branches/GeneralizedQAP
- Timestamp:
- 02/22/12 22:43:09 (13 years ago)
- Location:
- branches/GeneralizedQAP
- Files:
-
- 38 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/GeneralizedQAP/GeneralizedQAP.sln
r7465 r7505 26 26 EndProject 27 27 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.TSPLIB-3.3", "HeuristicLab.Problems.Instances.TSPLIB\3.3\HeuristicLab.Problems.Instances.TSPLIB-3.3.csproj", "{CE0F99D6-1C56-48A9-9B68-3E5B833703EF}" 28 EndProject 29 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.Instances.CordeauGQAP-3.3", "HeuristicLab.Problems.Instances.CordeauGQAP\3.3\HeuristicLab.Problems.Instances.CordeauGQAP-3.3.csproj", "{1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}" 28 30 EndProject 29 31 Global … … 112 114 {CE0F99D6-1C56-48A9-9B68-3E5B833703EF}.Release|x64.ActiveCfg = Release|Any CPU 113 115 {CE0F99D6-1C56-48A9-9B68-3E5B833703EF}.Release|x86.ActiveCfg = Release|Any CPU 116 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 117 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|Any CPU.Build.0 = Debug|Any CPU 118 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|x64.ActiveCfg = Debug|x64 119 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|x64.Build.0 = Debug|x64 120 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|x86.ActiveCfg = Debug|x86 121 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Debug|x86.Build.0 = Debug|x86 122 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|Any CPU.ActiveCfg = Release|Any CPU 123 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|Any CPU.Build.0 = Release|Any CPU 124 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x64.ActiveCfg = Release|x64 125 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x64.Build.0 = Release|x64 126 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x86.ActiveCfg = Release|x86 127 {1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}.Release|x86.Build.0 = Release|x86 114 128 EndGlobalSection 115 129 GlobalSection(SolutionProperties) = preSolution -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemInstanceProviderView.Designer.cs
r7448 r7505 45 45 /// </summary> 46 46 private void InitializeComponent() { 47 this.instancesComboBox = new System.Windows.Forms.ComboBox();48 47 this.loadButton = new System.Windows.Forms.Button(); 49 48 this.label2 = new System.Windows.Forms.Label(); 49 this.instancesComboBox = new System.Windows.Forms.ComboBox(); 50 50 this.SuspendLayout(); 51 //52 // instancesComboBox53 //54 this.instancesComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)55 | System.Windows.Forms.AnchorStyles.Right)));56 this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;57 this.instancesComboBox.FormattingEnabled = true;58 this.instancesComboBox.Location = new System.Drawing.Point(54, 0);59 this.instancesComboBox.Name = "instancesComboBox";60 this.instancesComboBox.Size = new System.Drawing.Size(475, 21);61 this.instancesComboBox.TabIndex = 5;62 this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged);63 51 // 64 52 // loadButton … … 82 70 this.label2.Text = "Instance:"; 83 71 // 72 // instancesComboBox 73 // 74 this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; 75 this.instancesComboBox.FormattingEnabled = true; 76 this.instancesComboBox.Location = new System.Drawing.Point(54, 0); 77 this.instancesComboBox.Name = "instancesComboBox"; 78 this.instancesComboBox.Size = new System.Drawing.Size(475, 21); 79 this.instancesComboBox.TabIndex = 7; 80 this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.comboBox_DataSourceChanged); 81 // 84 82 // ProblemInstanceProviderView 85 83 // 86 84 this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 87 85 this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 86 this.Controls.Add(this.instancesComboBox); 88 87 this.Controls.Add(this.loadButton); 89 88 this.Controls.Add(this.label2); 90 this.Controls.Add(this.instancesComboBox);91 89 this.Name = "ProblemInstanceProviderView"; 92 90 this.Size = new System.Drawing.Size(610, 21); … … 98 96 #endregion 99 97 100 private System.Windows.Forms.ComboBox instancesComboBox;101 98 private System.Windows.Forms.Button loadButton; 102 99 private System.Windows.Forms.Label label2; 100 private System.Windows.Forms.ComboBox instancesComboBox; 103 101 104 102 } -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemInstanceProviderView.cs
r7470 r7505 28 28 29 29 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views { 30 [View(" GeneralizedQuadraticAssignmentProblemView")]30 [View("ProblemInstanceProviderView")] 31 31 [Content(typeof(IProblemInstanceProvider), IsDefaultView = true)] 32 32 public partial class ProblemInstanceProviderView : AsynchronousContentView { … … 60 60 var instance = (IInstanceDescriptor)instancesComboBox.SelectedItem; 61 61 if (!Content.FeedConsumer(instance)) { 62 MessageBox.Show("This problem does not support the instance " + instance.Name + ".", "Cannot load instance");62 MessageBox.Show("This problem does not support loading the instance " + instance.Name + ".", "Cannot load instance"); 63 63 } 64 64 } … … 69 69 comboBox.Items.Clear(); 70 70 } 71 72 private void instancesComboBox_ToolTipRequired(object sender, ToolTipRequiredEventArgs e) { 73 var instance = (IInstanceDescriptor)instancesComboBox.SelectedItem; 74 e.ToolTip = instance.Description; 75 } 71 76 } 72 77 } -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment.Views/3.3/ProblemView.cs
r7482 r7505 93 93 94 94 protected virtual string GetProviderToolTip(IProblemInstanceProvider provider) { 95 return provider.Name 96 + Environment.NewLine 97 + provider.WebLink.ToString() 98 + Environment.NewLine + Environment.NewLine 99 + provider.ReferencePublication; 95 if (provider.WebLink != null) { 96 return provider.Name 97 + Environment.NewLine 98 + provider.WebLink.ToString() 99 + Environment.NewLine + Environment.NewLine 100 + provider.ReferencePublication; 101 } else { 102 return provider.Name 103 + Environment.NewLine + Environment.NewLine 104 + provider.ReferencePublication; 105 } 100 106 } 101 107 -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Evaluators/GQAPNMoveEvaluator.cs
r7419 r7505 20 20 #endregion 21 21 22 using System.Collections.Generic;23 22 using System.Linq; 24 23 using HeuristicLab.Common; … … 32 31 33 32 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 34 [Item(" GQAPNMoveEvaluator", "Evaluates an n-move.")]33 [Item("N-Move Evaluator", "Evaluates an N-Move.")] 35 34 [StorableClass] 36 35 public class GQAPNMoveEvaluator : SingleSuccessorOperator, IGQAPNMoveEvaluator, IAssignmentAwareGQAPOperator, … … 159 158 var slack = (DoubleArray)capacities.Clone(); 160 159 var oldSlack = (DoubleArray)slack.Clone(); 161 Dictionary<int, int> moving = new Dictionary<int, int>(); 162 for (int i = 0; i < moves; i++) moving.Add(move.Equipments[i], move.Locations[i]); 163 164 for (int i = 0; i < moves; i++) { 165 int equip = move.Equipments[i]; 166 int newLoc = move.Locations[i]; 160 bool first = true; 161 foreach (var kvp in move.NewAssignments) { 162 int equip = kvp.Key; 163 int newLoc = kvp.Value; 167 164 moveInstallationQuality -= installationCosts[equip, assignment[equip]]; 168 165 moveInstallationQuality += installationCosts[equip, newLoc]; 169 166 for (int j = 0; j < assignment.Length; j++) { 170 if (!mov ing.ContainsKey(j)) {167 if (!move.NewAssignments.ContainsKey(j)) { 171 168 moveFlowDistanceQuality += weights[equip, j] * distances[newLoc, assignment[j]]; 172 169 moveFlowDistanceQuality -= weights[equip, j] * distances[assignment[equip], assignment[j]]; 173 170 moveFlowDistanceQuality += weights[j, equip] * distances[assignment[j], newLoc]; 174 171 moveFlowDistanceQuality -= weights[j, equip] * distances[assignment[j], assignment[equip]]; 175 if ( i == 0) { // only once for each untouched equipment deduct the demand from the capacity172 if (first) { // only once for each untouched equipment deduct the demand from the capacity 176 173 slack[assignment[j]] -= demands[j]; 177 174 oldSlack[assignment[j]] -= demands[j]; 178 175 } 179 176 } else { 180 moveFlowDistanceQuality += weights[equip, j] * distances[newLoc, mov ing[j]];177 moveFlowDistanceQuality += weights[equip, j] * distances[newLoc, move.NewAssignments[j]]; 181 178 moveFlowDistanceQuality -= weights[equip, j] * distances[assignment[equip], assignment[j]]; 182 179 } 183 180 } 181 first = false; 184 182 slack[newLoc] -= demands[equip]; 185 183 oldSlack[assignment[equip]] -= demands[equip]; -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3.csproj
r7478 r7505 134 134 <Compile Include="Moves\GQAPMoveGenerator.cs" /> 135 135 <Compile Include="Moves\GQAPNMoveGenerator.cs" /> 136 <Compile Include="Moves\NMoveAbsoluteAttribute.cs" /> 136 137 <Compile Include="Moves\NMoveMaker.cs" /> 138 <Compile Include="Moves\NMoveTabuChecker.cs" /> 139 <Compile Include="Moves\NMoveTabuMaker.cs" /> 137 140 <Compile Include="Moves\StochasticNMoveMultiMoveGenerator.cs" /> 138 141 <Compile Include="Moves\StochasticNMoveSingleMoveGenerator.cs" /> -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Moves/GQAPNMoveGenerator.cs
r7419 r7505 30 30 31 31 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 32 [Item(" GQAPNMoveGenerator", "Base class for move operators that generate n-move moves.")]32 [Item("N-Move Generator", "Base class for move operators that generate N-Move moves.")] 33 33 [StorableClass] 34 34 public abstract class GQAPNMoveGenerator : GQAPMoveGenerator, IGQAPNMoveOperator { -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Moves/NMove.cs
r7407 r7505 21 21 22 22 using System; 23 using System.Collections.Generic; 23 24 using HeuristicLab.Common; 24 25 using HeuristicLab.Core; … … 27 28 28 29 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 29 [Item(" n-move", "An n-move describes moving n equipments to nlocations.")]30 [Item("N-Move", "An N-Move describes the relocation of n equipments to n different locations.")] 30 31 [StorableClass] 31 32 public class NMove : Item { 32 33 [Storable] 33 public int[] Equipments { get; private set; } 34 [Storable] 35 public int[] Locations { get; private set; } 34 public Dictionary<int, int> NewAssignments { get; private set; } 36 35 [Storable] 37 36 public IntegerVector OriginalVector { get; private set; } 38 37 39 public int N { get { return Equipments.Length; } }38 public int N { get { return NewAssignments.Count; } } 40 39 41 40 [StorableConstructor] … … 43 42 protected NMove(NMove original, Cloner cloner) 44 43 : base(original, cloner) { 45 Equipments = (int[])original.Equipments.Clone(); 46 Locations = (int[])original.Locations.Clone(); 44 NewAssignments = new Dictionary<int, int>(original.NewAssignments); 47 45 if (original.OriginalVector != null) 48 46 OriginalVector = cloner.Clone(original.OriginalVector); … … 55 53 if (locations == null) throw new ArgumentNullException("locations", "NMove: Locations must not be null."); 56 54 if (equipments.Length != locations.Length) throw new ArgumentException("NMove: Length of equipments and locations is not identical."); 57 Equipments = equipments; 58 Locations = locations; 55 NewAssignments = new Dictionary<int, int>(); 56 for (int i = 0; i < equipments.Length; i++) 57 NewAssignments[equipments[i]] = locations[i]; 59 58 OriginalVector = originalVector; 60 59 } -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Moves/NMoveMaker.cs
r7419 r7505 30 30 31 31 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 32 [Item("N MoveMaker", "Performs an n-move.")]32 [Item("N-Move Maker", "Performs an N-Move.")] 33 33 [StorableClass] 34 34 public class NMoveMaker : SingleSuccessorOperator, IAssignmentAwareGQAPOperator, IQualityAwareGQAPOperator, IMoveQualityAwareGQAPOperator, IGQAPNMoveOperator, IMoveMaker { … … 97 97 98 98 public static void Apply(IntegerVector vector, NMove move) { 99 for (int i = 0; i < move.N; i++) { 100 vector[move.Equipments[i]] = move.Locations[i]; 101 } 99 foreach (var kvp in move.NewAssignments) 100 vector[kvp.Key] = kvp.Value; 102 101 } 103 102 -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Moves/StochasticNMoveMultiMoveGenerator.cs
r7419 r7505 30 30 31 31 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 32 [Item("Stochastic n-move MultiMoveGenerator", "Randomly samples a number of n-moves.")]32 [Item("Stochastic N-Move MultiMoveGenerator", "Randomly samples a number of N-Moves.")] 33 33 [StorableClass] 34 34 public class StochasticNMoveMultiMoveGenerator : GQAPNMoveGenerator, ICapacitiesAwareGQAPOperator, IStochasticOperator, IMultiMoveGenerator { -
branches/GeneralizedQAP/HeuristicLab.Problems.GeneralizedQuadraticAssignment/3.3/Moves/StochasticNMoveSingleMoveGenerator.cs
r7419 r7505 30 30 31 31 namespace HeuristicLab.Problems.GeneralizedQuadraticAssignment { 32 [Item("Stochastic n-move SingleMoveGenerator", "Randomly samples a single n-move.")]32 [Item("Stochastic N-Move SingleMoveGenerator", "Randomly samples a single N-Move.")] 33 33 [StorableClass] 34 34 public class StochasticNMoveSingleMoveGenerator : GQAPNMoveGenerator, ICapacitiesAwareGQAPOperator, IStochasticOperator, ISingleMoveGenerator { -
branches/GeneralizedQAP/HeuristicLab.Problems.Instances/3.3/HeuristicLab.Problems.Instances-3.3.csproj
r7466 r7505 56 56 <Compile Include="IInstanceDescriptor.cs" /> 57 57 <Compile Include="Instances\ICVRPInstance.cs" /> 58 <Compile Include="Instances\IGQAPInstance.cs" /> 58 59 <Compile Include="Instances\IQAPInstance.cs" /> 59 60 <Compile Include="Instances\ITSPInstance.cs" /> -
branches/GeneralizedQAP/UnitTests/ElloumiCTAPInstanceProviderTest.cs
r7470 r7505 1 using System; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 22 using System; 2 23 using System.Text; 3 24 using HeuristicLab.Problems.Instances.ElloumiCTAP; -
branches/GeneralizedQAP/UnitTests/QAPLIBInstanceProviderTest.cs
r7470 r7505 1 using System; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 22 using System; 2 23 using System.Text; 3 24 using HeuristicLab.Problems.Instances.QAPLIB; -
branches/GeneralizedQAP/UnitTests/TSPLIBInstanceProviderTest.cs
r7470 r7505 1 using System; 1 #region License Information 2 /* HeuristicLab 3 * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 4 * 5 * This file is part of HeuristicLab. 6 * 7 * HeuristicLab is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 * 12 * HeuristicLab is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 #endregion 21 22 using System; 2 23 using System.Text; 3 24 using HeuristicLab.Problems.Instances.TSPLIB; -
branches/GeneralizedQAP/UnitTests/UnitTests.csproj
r7470 r7505 97 97 </ItemGroup> 98 98 <ItemGroup> 99 <Compile Include="CordeauGQAPInstanceProviderTest.cs" /> 99 100 <Compile Include="ElloumiCTAPInstanceProviderTest.cs" /> 100 101 <Compile Include="QAPLIBInstanceProviderTest.cs" /> … … 111 112 <Project>{C739E6D2-5680-4804-A810-8017DA0C238F}</Project> 112 113 <Name>HeuristicLab.Problems.GeneralizedQuadraticAssignment-3.3</Name> 114 </ProjectReference> 115 <ProjectReference Include="..\HeuristicLab.Problems.Instances.CordeauGQAP\3.3\HeuristicLab.Problems.Instances.CordeauGQAP-3.3.csproj"> 116 <Project>{1F2718DA-BF13-40EE-A7FD-EEDB4912E64E}</Project> 117 <Name>HeuristicLab.Problems.Instances.CordeauGQAP-3.3</Name> 113 118 </ProjectReference> 114 119 <ProjectReference Include="..\HeuristicLab.Problems.Instances.ElloumiCTAP\3.3\HeuristicLab.Problems.Instances.ElloumiCTAP-3.3.csproj">
Note: See TracChangeset
for help on using the changeset viewer.