Changeset 7686
- Timestamp:
- 04/02/12 16:45:39 (13 years ago)
- Location:
- branches/IntegerVectorEncoding
- Files:
-
- 9 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/IntegerVectorEncoding
-
Property
svn:ignore
set to
*.suo
-
Property
svn:ignore
set to
-
branches/IntegerVectorEncoding/HeuristicLab 3.3.sln
r7681 r7686 5 5 ProjectSection(SolutionItems) = preProject 6 6 Build.cmd = Build.cmd 7 LocalTestRun.testrunconfig = LocalTestRun.testrunconfig8 7 PreBuildEvent.cmd = PreBuildEvent.cmd 9 8 EndProjectSection -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/DiscreteCrossover.cs
r7259 r7686 45 45 46 46 /// <summary> 47 /// Performs a discrete crossover operation of the twogiven parents.47 /// Performs a discrete crossover operation of any number of given parents. 48 48 /// </summary> 49 49 /// <exception cref="ArgumentException">Thrown when the vectors of the parents are of different length.</exception> 50 50 /// <param name="random">A random number generator.</param> 51 /// <param name="parent1">The first parent for the crossover operation.</param> 52 /// <param name="parent2">The second parent for the crossover operation.</param> 51 /// <param name="parents">The list of parents for the crossover operation.</param> 53 52 /// <returns>The newly created integer vector, resulting from the crossover operation.</returns> 54 public static IntegerVector Apply(IRandom random, IntegerVector parent1, IntegerVector parent2) { 55 if (parent1.Length != parent2.Length) 56 throw new ArgumentException("DiscreteCrossover: The parents are of different length."); 53 public static IntegerVector Apply(IRandom random, ItemArray<IntegerVector> parents) { 54 int length = parents[0].Length; 57 55 58 int length = parent1.Length; 59 int[] result = new int[length]; 56 for (int i = 0; i < parents.Length; i++) { 57 if (parents[i].Length != length) 58 throw new ArgumentException("DiscreteCrossover: The parents' vectors are of different length.", "parents"); 59 } 60 60 61 var result = new IntegerVector(length); 61 62 for (int i = 0; i < length; i++) { 62 if (random.NextDouble() < 0.5) 63 result[i] = parent1[i]; 64 else 65 result[i] = parent2[i]; 63 result[i] = parents[random.Next(parents.Length)][i]; 66 64 } 67 return new IntegerVector(result); 65 66 return result; 68 67 } 69 68 70 69 /// <summary> 71 /// Performs a discrete crossover operation for twogiven parent integer vectors.70 /// Performs a discrete crossover operation for any number of given parent integer vectors. 72 71 /// </summary> 73 /// <exception cref="ArgumentException">Thrown if there are not exactly two parents.</exception>74 72 /// <param name="random">A random number generator.</param> 75 /// <param name="parents">An array containing the twointeger vectors that should be crossed.</param>73 /// <param name="parents">An array containing integer vectors that should be crossed.</param> 76 74 /// <returns>The newly created integer vector, resulting from the crossover operation.</returns> 77 75 protected override IntegerVector Cross(IRandom random, ItemArray<IntegerVector> parents) { 78 if (parents.Length != 2) throw new ArgumentException("ERROR in DiscreteCrossover: The number of parents is not equal to 2"); 79 return Apply(random, parents[0], parents[1]); 76 return Apply(random, parents); 80 77 } 81 78 } -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Crossovers/MultiIntegerVectorCrossover.cs
r7681 r7686 25 25 using HeuristicLab.Common; 26 26 using HeuristicLab.Core; 27 using HeuristicLab.Data; 27 28 using HeuristicLab.Operators; 28 29 using HeuristicLab.Optimization; … … 42 43 } 43 44 45 public IValueLookupParameter<IntMatrix> BoundsParameter { 46 get { return (IValueLookupParameter<IntMatrix>)Parameters["Bounds"]; } 47 } 48 44 49 public ILookupParameter<ItemArray<IntegerVector>> ParentsParameter { 45 50 get { return (ILookupParameter<ItemArray<IntegerVector>>)Parameters["Parents"]; } … … 55 60 public MultiIntegerVectorCrossover() 56 61 : base() { 62 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (exclusive), and step size. If less rows are given the matrix is cycled.")); 57 63 Parameters.Add(new ScopeTreeLookupParameter<IntegerVector>("Parents", "The parent integer vector which should be crossed.")); 58 64 ParentsParameter.ActualName = "IntegerVector"; -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/HeuristicLab.Encodings.IntegerVectorEncoding-3.3.csproj
r6866 r7686 41 41 <DebugType>full</DebugType> 42 42 <Optimize>false</Optimize> 43 <OutputPath> $(SolutionDir)\bin\</OutputPath>43 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 44 44 <DefineConstants>DEBUG;TRACE</DefineConstants> 45 45 <ErrorReport>prompt</ErrorReport> … … 50 50 <DebugType>pdbonly</DebugType> 51 51 <Optimize>true</Optimize> 52 <OutputPath> $(SolutionDir)\bin\</OutputPath>52 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 53 53 <DefineConstants>TRACE</DefineConstants> 54 54 <ErrorReport>prompt</ErrorReport> … … 58 58 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' "> 59 59 <DebugSymbols>true</DebugSymbols> 60 <OutputPath> $(SolutionDir)\bin\</OutputPath>60 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 61 61 <DefineConstants>DEBUG;TRACE</DefineConstants> 62 62 <DebugType>full</DebugType> … … 66 66 </PropertyGroup> 67 67 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' "> 68 <OutputPath> $(SolutionDir)\bin\</OutputPath>68 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 69 69 <DefineConstants>TRACE</DefineConstants> 70 70 <Optimize>true</Optimize> … … 76 76 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 77 77 <DebugSymbols>true</DebugSymbols> 78 <OutputPath> $(SolutionDir)\bin\</OutputPath>78 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 79 79 <DefineConstants>DEBUG;TRACE</DefineConstants> 80 80 <DebugType>full</DebugType> … … 84 84 </PropertyGroup> 85 85 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> 86 <OutputPath> $(SolutionDir)\bin\</OutputPath>86 <OutputPath>..\..\..\..\trunk\sources\bin\</OutputPath> 87 87 <DefineConstants>TRACE</DefineConstants> 88 88 <Optimize>true</Optimize> … … 93 93 </PropertyGroup> 94 94 <ItemGroup> 95 <Reference Include="HeuristicLab.Collections-3.3"> 96 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Collections-3.3.dll</HintPath> 97 <Private>False</Private> 98 </Reference> 99 <Reference Include="HeuristicLab.Common-3.3"> 100 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Common-3.3.dll</HintPath> 101 <Private>False</Private> 102 </Reference> 103 <Reference Include="HeuristicLab.Core-3.3"> 104 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Core-3.3.dll</HintPath> 105 <Private>False</Private> 106 </Reference> 107 <Reference Include="HeuristicLab.Data-3.3"> 108 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Data-3.3.dll</HintPath> 109 <Private>False</Private> 110 </Reference> 111 <Reference Include="HeuristicLab.Operators-3.3"> 112 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Operators-3.3.dll</HintPath> 113 <Private>False</Private> 114 </Reference> 115 <Reference Include="HeuristicLab.Optimization-3.3"> 116 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath> 117 <Private>False</Private> 118 </Reference> 119 <Reference Include="HeuristicLab.Optimization.Operators-3.3"> 120 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization.Operators-3.3.dll</HintPath> 121 <Private>False</Private> 122 </Reference> 123 <Reference Include="HeuristicLab.Parameters-3.3"> 124 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Parameters-3.3.dll</HintPath> 125 <Private>False</Private> 126 </Reference> 127 <Reference Include="HeuristicLab.Persistence-3.3"> 128 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Persistence-3.3.dll</HintPath> 129 <Private>False</Private> 130 </Reference> 131 <Reference Include="HeuristicLab.PluginInfrastructure-3.3"> 132 <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath> 133 <Private>False</Private> 134 </Reference> 135 <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL"> 136 <SpecificVersion>False</SpecificVersion> 137 <Private>False</Private> 138 </Reference> 95 139 <Reference Include="System" /> 96 140 <Reference Include="System.Core"> … … 107 151 <ItemGroup> 108 152 <Compile Include="Creators\UniformRandomIntegerVectorCreator.cs" /> 153 <Compile Include="Crossovers\AverageCrossover.cs" /> 109 154 <Compile Include="Crossovers\DiscreteCrossover.cs"> 110 155 <SubType>Code</SubType> … … 114 159 <SubType>Code</SubType> 115 160 </Compile> 161 <Compile Include="Crossovers\UniformAllPositionsArithmeticCrossover.cs" /> 162 <Compile Include="Crossovers\UniformSomePositionsArithmeticCrossover.cs" /> 163 <Compile Include="Interfaces\IBoundedIntegerVectorOperator.cs" /> 116 164 <Compile Include="Interfaces\IIntegerVectorCreator.cs" /> 117 165 <Compile Include="Interfaces\IIntegerVectorCrossover.cs" /> … … 121 169 <Compile Include="IntegerVectorCrossover.cs" /> 122 170 <Compile Include="IntegerVectorManipulator.cs" /> 171 <Compile Include="Interfaces\IIntegerVectorStdDevStrategyParameterCreator.cs" /> 172 <Compile Include="Interfaces\IIntegerVectorStdDevStrategyParameterCrossover.cs" /> 173 <Compile Include="Interfaces\IIntegerVectorStdDevStrategyParameterManipulator.cs" /> 174 <Compile Include="Interfaces\IIntegerVectorStdDevStrategyParameterOperator.cs" /> 175 <Compile Include="Manipulators\RoundedNormalAllPositionsManipulator.cs" /> 176 <Compile Include="Manipulators\SelfAdaptiveRoundedNormalAllPositionsManipulator.cs" /> 177 <Compile Include="Manipulators\StdDevStrategyVectorCreator.cs" /> 178 <Compile Include="Manipulators\StdDevStrategyVectorCrossover.cs" /> 179 <Compile Include="Manipulators\StdDevStrategyVectorManipulator.cs" /> 123 180 <Compile Include="Manipulators\UniformOnePositionManipulator.cs"> 124 181 <SubType>Code</SubType> … … 129 186 <Compile Include="IntegerVectorCreator.cs" /> 130 187 <Compile Include="ShakingOperators\IntegerVectorShakingOperator.cs" /> 131 </ItemGroup>132 <ItemGroup>133 <ProjectReference Include="..\..\HeuristicLab.Collections\3.3\HeuristicLab.Collections-3.3.csproj">134 <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>135 <Name>HeuristicLab.Collections-3.3</Name>136 <Private>False</Private>137 </ProjectReference>138 <ProjectReference Include="..\..\HeuristicLab.Common\3.3\HeuristicLab.Common-3.3.csproj">139 <Project>{A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}</Project>140 <Name>HeuristicLab.Common-3.3</Name>141 <Private>False</Private>142 </ProjectReference>143 <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">144 <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>145 <Name>HeuristicLab.Core-3.3</Name>146 <Private>False</Private>147 </ProjectReference>148 <ProjectReference Include="..\..\HeuristicLab.Data\3.3\HeuristicLab.Data-3.3.csproj">149 <Project>{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}</Project>150 <Name>HeuristicLab.Data-3.3</Name>151 <Private>False</Private>152 </ProjectReference>153 <ProjectReference Include="..\..\HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj">154 <Project>{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}</Project>155 <Name>HeuristicLab.Operators-3.3</Name>156 <Private>False</Private>157 </ProjectReference>158 <ProjectReference Include="..\..\HeuristicLab.Optimization.Operators\3.3\HeuristicLab.Optimization.Operators-3.3.csproj">159 <Project>{25087811-F74C-4128-BC86-8324271DA13E}</Project>160 <Name>HeuristicLab.Optimization.Operators-3.3</Name>161 <Private>False</Private>162 </ProjectReference>163 <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">164 <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>165 <Name>HeuristicLab.Optimization-3.3</Name>166 <Private>False</Private>167 </ProjectReference>168 <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">169 <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>170 <Name>HeuristicLab.Parameters-3.3</Name>171 <Private>False</Private>172 </ProjectReference>173 <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">174 <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>175 <Name>HeuristicLab.Persistence-3.3</Name>176 <Private>False</Private>177 </ProjectReference>178 <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">179 <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>180 <Name>HeuristicLab.PluginInfrastructure-3.3</Name>181 <Private>False</Private>182 </ProjectReference>183 188 </ItemGroup> 184 189 <ItemGroup> -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/IntegerVectorCreator.cs
r7681 r7686 67 67 private void AfterDeserialization() { 68 68 if (!Parameters.ContainsKey("Bounds")) { 69 var min = ((IValueLookupParameter<IntValue>)Parameters["Minimum"]).Value as IntValue; 70 var max = ((IValueLookupParameter<IntValue>)Parameters["Maximum"]).Value as IntValue; 69 71 Parameters.Remove("Minimum"); 70 72 Parameters.Remove("Maximum"); 71 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (inclusive), and step size. If less rows are given the matrix is cycled.")); 73 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (exclusive), and step size. If less rows are given the matrix is cycled.")); 74 if (min != null && max != null) { 75 BoundsParameter.Value = new IntMatrix(new int[,] { { min.Value, max.Value, 1 } }); 76 } 72 77 } 73 78 } -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Manipulators/UniformOnePositionManipulator.cs
r7259 r7686 36 36 [Item("UniformOnePositionManipulator", " Uniformly distributed change of a single position of an integer vector. It is implemented as described in Michalewicz, Z. 1999. Genetic Algorithms + Data Structures = Evolution Programs. Third, Revised and Extended Edition, Spring-Verlag Berlin Heidelberg.")] 37 37 [StorableClass] 38 public class UniformOnePositionManipulator : IntegerVectorManipulator {38 public class UniformOnePositionManipulator : IntegerVectorManipulator, IBoundedIntegerVectorOperator { 39 39 /// <summary> 40 /// The lower bound of the values in the int vector.40 /// A matrix that specifies the bounds for each dimension in a separate row. The first column denotes the minimum, the second the maximum value, and the third column denotes the step size. 41 41 /// </summary> 42 public ValueLookupParameter<IntValue> MinimumParameter { 43 get { return (ValueLookupParameter<IntValue>)Parameters["Minimum"]; } 44 } 45 /// <summary> 46 /// The upper bound of the values in the int vector. 47 /// </summary> 48 public ValueLookupParameter<IntValue> MaximumParameter { 49 get { return (ValueLookupParameter<IntValue>)Parameters["Maximum"]; } 42 public IValueLookupParameter<IntMatrix> BoundsParameter { 43 get { return (IValueLookupParameter<IntMatrix>)Parameters["Bounds"]; } 50 44 } 51 45 … … 59 53 public UniformOnePositionManipulator() 60 54 : base() { 61 Parameters.Add(new ValueLookupParameter<IntValue>("Minimum", "Minimum of the sampling range for the vector element (included)")); 62 Parameters.Add(new ValueLookupParameter<IntValue>("Maximum", "Maximum of the sampling range for the vector element (excluded)")); 55 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (exclusive), and step size. If less rows are given the matrix is cycled.")); 63 56 } 64 57 … … 66 59 return new UniformOnePositionManipulator(this, cloner); 67 60 } 61 62 // BackwardsCompatibility3.3 63 #region Backwards compatible code, remove with 3.4 64 [StorableHook(HookType.AfterDeserialization)] 65 private void AfterDeserialization() { 66 if (!Parameters.ContainsKey("Bounds")) { 67 var min = ((IValueLookupParameter<IntValue>)Parameters["Minimum"]).Value as IntValue; 68 var max = ((IValueLookupParameter<IntValue>)Parameters["Maximum"]).Value as IntValue; 69 Parameters.Remove("Minimum"); 70 Parameters.Remove("Maximum"); 71 Parameters.Add(new ValueLookupParameter<IntMatrix>("Bounds", "The bounds matrix can contain one row for each dimension with three columns specifying minimum (inclusive), maximum (exclusive), and step size. If less rows are given the matrix is cycled.")); 72 if (min != null && max != null) { 73 BoundsParameter.Value = new IntMatrix(new int[,] { { min.Value, max.Value, 1 } }); 74 } 75 } 76 } 77 #endregion 68 78 69 79 /// <summary> … … 76 86 /// <param name="max">The maximum value of the sampling range for 77 87 /// the vector element to change (exclusive).</param> 78 public static void Apply(IRandom random, IntegerVector vector, IntValue min, IntValue max) { 88 public static void Apply(IRandom random, IntegerVector vector, IntMatrix bounds) { 89 if (bounds == null || bounds.Rows == 0 || bounds.Columns < 2) throw new ArgumentException("UniformOnePositionManipulator: Invalid bounds specified", "bounds"); 79 90 int index = random.Next(vector.Length); 80 vector[index] = random.Next(min.Value, max.Value); 91 int min = bounds[index % bounds.Rows, 0], max = bounds[index % bounds.Rows, 1], step = 1; 92 if (bounds.Columns > 2) step = bounds[index % bounds.Rows, 2]; 93 int value = (max - min) / step; 94 vector[index] = random.Next(value) * step + min; 81 95 } 82 96 … … 88 102 /// <param name="vector">The integer vector to manipulate.</param> 89 103 protected override void Manipulate(IRandom random, IntegerVector vector) { 90 if (MinimumParameter.ActualValue == null) throw new InvalidOperationException("UniformOnePositionManipulator: Parameter " + MinimumParameter.ActualName + " could not be found."); 91 if (MaximumParameter.ActualValue == null) throw new InvalidOperationException("UniformOnePositionManipulator: Parameter " + MaximumParameter.ActualName + " could not be found."); 92 Apply(random, vector, MinimumParameter.ActualValue, MaximumParameter.ActualValue); 104 if (BoundsParameter.ActualValue == null) throw new InvalidOperationException("UniformOnePositionManipulator: Parameter " + BoundsParameter.ActualName + " could not be found."); 105 Apply(random, vector, BoundsParameter.ActualValue); 93 106 } 94 107 } -
branches/IntegerVectorEncoding/HeuristicLab.Encodings.IntegerVectorEncoding/3.3/Plugin.cs.frame
r7259 r7686 37 37 [PluginDependency("HeuristicLab.Parameters", "3.3")] 38 38 [PluginDependency("HeuristicLab.Persistence", "3.3")] 39 [PluginDependency("HeuristicLab.Random", "3.3")] 39 40 public class HeuristicLabEncodingsIntegerVectorEncodingPlugin : PluginBase { 40 41 }
Note: See TracChangeset
for help on using the changeset viewer.