- Timestamp:
- 11/28/11 13:47:28 (13 years ago)
- Location:
- branches/RegressionBenchmarks
- Files:
-
- 4 deleted
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/RegressionBenchmarks
- Property svn:ignore
-
old new 4 4 *.suo 5 5 *.vsp 6 Doxygen 6 7 Google.ProtocolBuffers-0.9.1.dll 7 8 HeuristicLab 3.3.5.1.ReSharper.user 8 9 HeuristicLab 3.3.6.0.ReSharper.user 9 10 HeuristicLab.4.5.resharper.user 11 HeuristicLab.ExtLibs.6.0.ReSharper.user 10 12 HeuristicLab.resharper.user 11 13 ProtoGen.exe … … 16 18 bin 17 19 protoc.exe 18 HeuristicLab.ExtLibs.6.0.ReSharper.user19 Doxygen
-
- Property svn:mergeinfo changed
- Property svn:ignore
-
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Analyzers/SymbolicDataAnalysisVariableFrequencyAnalyzer.cs
r6811 r7085 23 23 using System.Collections.Generic; 24 24 using System.Linq; 25 using HeuristicLab.Analysis; 25 26 using HeuristicLab.Common; 26 27 using HeuristicLab.Core; 27 28 using HeuristicLab.Data; 28 29 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 29 using HeuristicLab.Operators;30 30 using HeuristicLab.Optimization; 31 31 using HeuristicLab.Parameters; 32 32 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 33 using HeuristicLab.Analysis;34 33 35 34 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { … … 139 138 double totalNumberOfSymbols = variableFrequencies.Values.Sum(); 140 139 141 foreach (var pair in variableFrequencies )140 foreach (var pair in variableFrequencies.OrderBy(p => p.Key, new NaturalStringComparer())) 142 141 yield return new KeyValuePair<string, double>(pair.Key, pair.Value / totalNumberOfSymbols); 143 142 } -
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Formatters/SymbolicDataAnalysisExpressionLatexFormatter.cs
r6803 r7085 20 20 #endregion 21 21 22 using System; 23 using System.Collections.Generic; 24 using System.Linq; 22 25 using System.Text; 23 using System.Linq; 26 using HeuristicLab.Common; 27 using HeuristicLab.Core; 28 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding; 24 29 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; 25 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;26 using System.Collections.Generic;27 using System;28 using HeuristicLab.Core;29 using HeuristicLab.Common;30 30 31 31 namespace HeuristicLab.Problems.DataAnalysis.Symbolic { … … 58 58 constants.Clear(); 59 59 strBuilder.AppendLine("% needs \\usepackage{amsmath}"); 60 strBuilder.AppendLine("\\begin{align}"); 60 strBuilder.AppendLine("\\begin{align*}"); 61 strBuilder.AppendLine("\\nonumber"); 61 62 strBuilder.AppendLine(FormatRecursively(symbolicExpressionTree.Root)); 62 strBuilder.AppendLine("\\end{align }");63 strBuilder.AppendLine("\\end{align*}"); 63 64 return strBuilder.ToString(); 64 65 } … … 89 90 private void FormatBegin(ISymbolicExpressionTreeNode node, StringBuilder strBuilder) { 90 91 if (node.Symbol is Addition) { 91 strBuilder.Append(@" \left(");92 strBuilder.Append(@" "); 92 93 } else if (node.Symbol is Subtraction) { 93 94 if (node.SubtreeCount == 1) { 94 strBuilder.Append(@"- \left(");95 strBuilder.Append(@"- "); 95 96 } else { 96 strBuilder.Append(@" \left(");97 strBuilder.Append(@" "); 97 98 } 98 99 } else if (node.Symbol is Multiplication) { … … 108 109 strBuilder.Append(@" \cfrac{1}{" + node.SubtreeCount + @"}"); 109 110 } 110 strBuilder.Append(@" \left(");111 strBuilder.Append(@" "); 111 112 } else if (node.Symbol is Logarithm) { 112 strBuilder.Append(@"\log \left(");113 strBuilder.Append(@"\log "); 113 114 } else if (node.Symbol is Exponential) { 114 strBuilder.Append(@"\exp \left(");115 strBuilder.Append(@"\exp "); 115 116 } else if (node.Symbol is Sine) { 116 strBuilder.Append(@"\sin \left(");117 strBuilder.Append(@"\sin "); 117 118 } else if (node.Symbol is Cosine) { 118 strBuilder.Append(@"\cos \left(");119 strBuilder.Append(@"\cos "); 119 120 } else if (node.Symbol is Tangent) { 120 strBuilder.Append(@"\tan \left(");121 strBuilder.Append(@"\tan "); 121 122 } else if (node.Symbol is GreaterThan) { 122 strBuilder.Append(@" \left(");123 strBuilder.Append(@" "); 123 124 } else if (node.Symbol is LessThan) { 124 strBuilder.Append(@" \left(");125 strBuilder.Append(@" "); 125 126 } else if (node.Symbol is And) { 126 strBuilder.Append(@" \left( \left(");127 strBuilder.Append(@" "); 127 128 } else if (node.Symbol is Or) { 128 strBuilder.Append(@" \left( \left(");129 strBuilder.Append(@" "); 129 130 } else if (node.Symbol is Not) { 130 strBuilder.Append(@" \neg \left(");131 strBuilder.Append(@" \neg "); 131 132 } else if (node.Symbol is IfThenElse) { 132 strBuilder.Append(@" \left( \operatorname{if} \left(0 < ");133 strBuilder.Append(@" \operatorname{if} 0 < "); 133 134 } else if (node.Symbol is Constant) { 134 135 strBuilder.Append("c_{" + constants.Count + "} "); … … 137 138 } else if (node.Symbol is LaggedVariable) { 138 139 var laggedVarNode = node as LaggedVariableTreeNode; 139 strBuilder.Append("c_{" + constants.Count + "} " + laggedVarNode.VariableName); 140 if (!laggedVarNode.Weight.IsAlmost(1.0)) { 141 strBuilder.Append("c_{" + constants.Count + "} \\cdot "); 142 constants.Add(laggedVarNode.Weight); 143 } 144 strBuilder.Append(EscapeLatexString(laggedVarNode.VariableName)); 140 145 strBuilder.Append(LagToString(currentLag + laggedVarNode.Lag)); 141 constants.Add(laggedVarNode.Weight); 142 } else if (node.Symbol is HeuristicLab.Problems.DataAnalysis.Symbolic.Variable) {146 147 } else if (node.Symbol is Variable) { 143 148 var varNode = node as VariableTreeNode; 144 strBuilder.Append("c_{" + constants.Count + "} " + varNode.VariableName); 149 if (!varNode.Weight.IsAlmost((1.0))) { 150 strBuilder.Append("c_{" + constants.Count + "} \\cdot "); 151 constants.Add(varNode.Weight); 152 } 153 strBuilder.Append(EscapeLatexString(varNode.VariableName)); 145 154 strBuilder.Append(LagToString(currentLag)); 146 constants.Add(varNode.Weight);147 155 } else if (node.Symbol is ProgramRootSymbol) { 148 156 } else if (node.Symbol is Defun) { … … 151 159 } else if (node.Symbol is InvokeFunction) { 152 160 var invokeNode = node as InvokeFunctionTreeNode; 153 strBuilder.Append(invokeNode.Symbol.FunctionName + @" \left(");161 strBuilder.Append(invokeNode.Symbol.FunctionName + @" "); 154 162 } else if (node.Symbol is StartSymbol) { 155 163 strBuilder.Append("Result & = "); … … 158 166 strBuilder.Append(" ARG+" + argSym.ArgumentIndex + " "); 159 167 } else if (node.Symbol is Derivative) { 160 strBuilder.Append(@" \cfrac{d \left(");168 strBuilder.Append(@" \cfrac{d "); 161 169 } else if (node.Symbol is TimeLag) { 162 170 var laggedNode = node as ILaggedTreeNode; 163 171 currentLag += laggedNode.Lag; 164 172 } else if (node.Symbol is Power) { 165 strBuilder.Append(@" \left(");173 strBuilder.Append(@""); 166 174 } else if (node.Symbol is Root) { 167 strBuilder.Append(@" \left(");175 strBuilder.Append(@""); 168 176 } else if (node.Symbol is Integral) { 169 177 // actually a new variable for t is needed in all subtrees (TODO) 170 178 var laggedTreeNode = node as ILaggedTreeNode; 171 strBuilder.Append(@"\sum_{t=" + (laggedTreeNode.Lag + currentLag) + @"}^0 \left(");179 strBuilder.Append(@"\sum_{t=" + (laggedTreeNode.Lag + currentLag) + @"}^0 "); 172 180 } else if (node.Symbol is VariableCondition) { 173 181 var conditionTreeNode = node as VariableConditionTreeNode; 174 string p = @"1 / \left( 1 + \exp \left(- c_{" + constants.Count + "} ";182 string p = @"1 / 1 + \exp - c_{" + constants.Count + "} "; 175 183 constants.Add(conditionTreeNode.Slope); 176 p += @" \cdot \left(" + conditionTreeNode.VariableName + LagToString(currentLag) + " - c_{" + constants.Count + @"} \right) \right) \right)";184 p += @" \cdot " + EscapeLatexString(conditionTreeNode.VariableName) + LagToString(currentLag) + " - c_{" + constants.Count + @"} "; 177 185 constants.Add(conditionTreeNode.Threshold); 178 strBuilder.Append(@" \left(" + p + @"\cdot ");186 strBuilder.Append(@" " + p + @"\cdot "); 179 187 } else { 180 188 throw new NotImplementedException("Export of " + node.Symbol + " is not implemented."); … … 208 216 strBuilder.Append(@" < "); 209 217 } else if (node.Symbol is And) { 210 strBuilder.Append(@" > 0 \right) \land \left(");218 strBuilder.Append(@" > 0 \land "); 211 219 } else if (node.Symbol is Or) { 212 strBuilder.Append(@" > 0 \right) \lor \left(");220 strBuilder.Append(@" > 0 \lor "); 213 221 } else if (node.Symbol is Not) { 214 222 throw new InvalidOperationException(); 215 223 } else if (node.Symbol is IfThenElse) { 216 strBuilder.Append(@" \right) , \left(");224 strBuilder.Append(@" , "); 217 225 } else if (node.Symbol is ProgramRootSymbol) { 218 226 strBuilder.Append(@"\\" + Environment.NewLine); … … 223 231 strBuilder.Append(@"\\" + Environment.NewLine + " & "); 224 232 } else if (node.Symbol is Power) { 225 strBuilder.Append(@" \right) ^ { \operatorname{round} \left(");233 strBuilder.Append(@" ^ { \operatorname{round} "); 226 234 } else if (node.Symbol is Root) { 227 strBuilder.Append(@" \right) ^ { \left( \cfrac{1}{ \operatorname{round} \left(");235 strBuilder.Append(@" ^ { \cfrac{1}{ \operatorname{round} "); 228 236 } else if (node.Symbol is VariableCondition) { 229 237 var conditionTreeNode = node as VariableConditionTreeNode; 230 string p = @"1 / \left( 1 + \exp \left(- c_{" + constants.Count + "} ";238 string p = @"1 / 1 + \exp - c_{" + constants.Count + "} "; 231 239 constants.Add(conditionTreeNode.Slope); 232 p += @" \cdot \left(" + conditionTreeNode.VariableName + LagToString(currentLag) + " - c_{" + constants.Count + @"} \right) \right) \right)";240 p += @" \cdot " + EscapeLatexString(conditionTreeNode.VariableName) + LagToString(currentLag) + " - c_{" + constants.Count + @"} "; 233 241 constants.Add(conditionTreeNode.Threshold); 234 strBuilder.Append(@" + \left( 1 - " + p + @" \right)\cdot ");242 strBuilder.Append(@" + 1 - " + p + @" \cdot "); 235 243 } else { 236 244 throw new NotImplementedException("Export of " + node.Symbol + " is not implemented."); … … 240 248 private void FormatEnd(ISymbolicExpressionTreeNode node, StringBuilder strBuilder) { 241 249 if (node.Symbol is Addition) { 242 strBuilder.Append(@" \right)");250 strBuilder.Append(@" "); 243 251 } else if (node.Symbol is Subtraction) { 244 strBuilder.Append(@" \right)");252 strBuilder.Append(@" "); 245 253 } else if (node.Symbol is Multiplication) { 246 254 } else if (node.Symbol is Division) { … … 252 260 } 253 261 } else if (node.Symbol is Average) { 254 strBuilder.Append(@" \right)");262 strBuilder.Append(@" "); 255 263 } else if (node.Symbol is Logarithm) { 256 strBuilder.Append(@" \right)");264 strBuilder.Append(@" "); 257 265 } else if (node.Symbol is Exponential) { 258 strBuilder.Append(@" \right)");266 strBuilder.Append(@" "); 259 267 } else if (node.Symbol is Sine) { 260 strBuilder.Append(@" \right)");268 strBuilder.Append(@" "); 261 269 } else if (node.Symbol is Cosine) { 262 strBuilder.Append(@" \right)");270 strBuilder.Append(@" "); 263 271 } else if (node.Symbol is Tangent) { 264 strBuilder.Append(@" \right)");272 strBuilder.Append(@" "); 265 273 } else if (node.Symbol is GreaterThan) { 266 strBuilder.Append(@" \right)");274 strBuilder.Append(@" "); 267 275 } else if (node.Symbol is LessThan) { 268 strBuilder.Append(@" \right)");276 strBuilder.Append(@" "); 269 277 } else if (node.Symbol is And) { 270 strBuilder.Append(@" > 0 \right) \right)");278 strBuilder.Append(@" > 0 "); 271 279 } else if (node.Symbol is Or) { 272 strBuilder.Append(@" > 0 \right) \right)");280 strBuilder.Append(@" > 0 "); 273 281 } else if (node.Symbol is Not) { 274 strBuilder.Append(@" \right)");282 strBuilder.Append(@" "); 275 283 } else if (node.Symbol is IfThenElse) { 276 strBuilder.Append(@" \right) \right)");284 strBuilder.Append(@" "); 277 285 } else if (node.Symbol is Constant) { 278 286 } else if (node.Symbol is LaggedVariable) { 279 } else if (node.Symbol is HeuristicLab.Problems.DataAnalysis.Symbolic.Variable) {287 } else if (node.Symbol is Variable) { 280 288 } else if (node.Symbol is ProgramRootSymbol) { 281 289 // output all constant values … … 290 298 } else if (node.Symbol is Defun) { 291 299 } else if (node.Symbol is InvokeFunction) { 292 strBuilder.Append(@" \right)");300 strBuilder.Append(@" "); 293 301 } else if (node.Symbol is StartSymbol) { 294 302 } else if (node.Symbol is Argument) { 295 303 } else if (node.Symbol is Derivative) { 296 strBuilder.Append(@" \right)}{dt} ");304 strBuilder.Append(@" }{dt} "); 297 305 } else if (node.Symbol is TimeLag) { 298 306 var laggedNode = node as ILaggedTreeNode; 299 307 currentLag -= laggedNode.Lag; 300 308 } else if (node.Symbol is Power) { 301 strBuilder.Append(@" \right)} ");309 strBuilder.Append(@" } "); 302 310 } else if (node.Symbol is Root) { 303 strBuilder.Append(@" \right) } \right)} ");311 strBuilder.Append(@" } } "); 304 312 } else if (node.Symbol is Integral) { 305 313 var laggedTreeNode = node as ILaggedTreeNode; 306 strBuilder.Append(@" \right)");314 strBuilder.Append(@" "); 307 315 } else if (node.Symbol is VariableCondition) { 308 316 strBuilder.Append(@"\left) "); … … 311 319 } 312 320 } 321 313 322 private string LagToString(int lag) { 314 323 if (lag < 0) { … … 316 325 } else if (lag > 0) { 317 326 return "(t+" + lag + ")"; 318 } else return "(t)"; 327 } else return ""; 328 } 329 330 private string EscapeLatexString(string s) { 331 return s.Replace(@"_", @"\_"); 319 332 } 320 333 } -
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/Grammars/TypeCoherentExpressionGrammar.cs
r6819 r7085 138 138 139 139 AddAllowedChildSymbol(powerSymbols, variableSymbol, 0); 140 AddAllowedChildSymbol(powerSymbols, laggedVariable, 0); 140 141 AddAllowedChildSymbol(powerSymbols, constant, 1); 141 142 … … 187 188 public void ConfigureAsDefaultClassificationGrammar() { 188 189 Symbols.Where(s => s is Average).First().Enabled = false; 190 Symbols.Where(s => s is VariableCondition).First().Enabled = false; 189 191 Symbols.Where(s => s.Name == TrigonometricFunctionsName).First().Enabled = false; 190 192 Symbols.Where(s => s.Name == ExponentialFunctionsName).First().Enabled = false; -
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.csproj
r6888 r7085 121 121 <Compile Include="Analyzers\SymbolicDataAnalysisVariableFrequencyAnalyzer.cs" /> 122 122 <Compile Include="Analyzers\SymbolicDataAnalysisAlleleFrequencyAnalyzer.cs" /> 123 <Compile Include="SymbolicDataAnalysisExpressionFullTreeCreator.cs" /> 123 <Compile Include="Creators\MultiSymbolicDataAnalysisExpressionCreator.cs" /> 124 <Compile Include="Creators\SymbolicDataAnalysisExpressionFullTreeCreator.cs" /> 125 <Compile Include="Creators\SymbolicDataAnalysisExpressionGrowTreeCreator.cs" /> 126 <Compile Include="Creators\SymbolicDataAnalysisExpressionRampedHalfAndHalfTreeCreator.cs" /> 127 <Compile Include="Creators\SymbolicDataAnalysisExpressionTreeCreator.cs" /> 124 128 <Compile Include="Plugin.cs" /> 125 <Compile Include="SymbolicDataAnalysisExpressionGrowTreeCreator.cs" />126 <Compile Include="SymbolicDataAnalysisExpressionRampedHalfAndHalfTreeCreator.cs" />127 129 <Compile Include="SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs" /> 128 130 <Compile Include="Formatters\SymbolicDataAnalysisExpressionLatexFormatter.cs" /> … … 131 133 <Compile Include="Interfaces\ISymbolicDataAnalysisExpressionTreeInterpreter.cs" /> 132 134 <Compile Include="Interfaces\ISymbolicDataAnalysisProblem.cs" /> 133 <Compile Include="SymbolicDataAnalysisExpressionTreeCreator.cs" />134 135 <Compile Include="SymbolicDataAnalysisModel.cs"> 135 136 <SubType>Code</SubType> -
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisExpressionTreeILEmittingInterpreter.cs
r6849 r7085 584 584 //to determine the relative amounts of the true and false branch see http://en.wikipedia.org/wiki/Logistic_function 585 585 case OpCodes.VariableCondition: { 586 throw new Not ImplementedException();587 } 588 default: throw new NotSupportedException( );586 throw new NotSupportedException("Interpretation of symbol " + currentInstr.dynamicNode.Symbol.Name + " is not supported by the SymbolicDataAnalysisTreeILEmittingInterpreter"); 587 } 588 default: throw new NotSupportedException("Interpretation of symbol " + currentInstr.dynamicNode.Symbol.Name + " is not supported by the SymbolicDataAnalysisTreeILEmittingInterpreter"); 589 589 } 590 590 } -
branches/RegressionBenchmarks/HeuristicLab.Problems.DataAnalysis.Symbolic/3.4/SymbolicDataAnalysisProblem.cs
r7044 r7085 36 36 [StorableClass] 37 37 public abstract class SymbolicDataAnalysisProblem<T, U, V> : HeuristicOptimizationProblem<U, V>, IDataAnalysisProblem<T>, ISymbolicDataAnalysisProblem, IStorableContent 38 where T : class, IDataAnalysisProblemData38 where T : class, IDataAnalysisProblemData 39 39 where U : class, ISymbolicDataAnalysisEvaluator<T> 40 40 where V : class, ISymbolicDataAnalysisSolutionCreator { … … 171 171 Parameters.Add(new FixedValueParameter<PercentValue>(RelativeNumberOfEvaluatedSamplesParameterName, RelativeNumberOfEvaluatedSamplesParameterDescription, new PercentValue(1))); 172 172 173 SolutionCreatorParameter.Hidden = true;174 173 SymbolicExpressionTreeInterpreterParameter.Hidden = true; 175 174 MaximumFunctionArgumentsParameter.Hidden = true; … … 204 203 Operators.Add(new SymbolicDataAnalysisVariableFrequencyAnalyzer()); 205 204 Operators.Add(new MinAverageMaxSymbolicExpressionTreeLengthAnalyzer()); 205 Operators.Add(new SymbolicExpressionTreeLengthAnalyzer()); 206 206 ParameterizeOperators(); 207 207 }
Note: See TracChangeset
for help on using the changeset viewer.