Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/04/09 22:44:07 (15 years ago)
Author:
gkronber
Message:

implemented hard-coded GP with offspring selection for regression problems. #224 (Simple frontend for GP for non-expert users (similar to HeurisicLab.SGA))

Location:
branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/HeuristicLab.GP.StructureIdentification.csproj

    r1052 r1201  
    7272    <Compile Include="Constant.cs" />
    7373    <Compile Include="FunctionLibraryInjector.cs" />
     74    <Compile Include="OffspringSelectionGP.cs" />
     75    <Compile Include="OffSpringSelectionGpEditor.cs">
     76      <SubType>UserControl</SubType>
     77    </Compile>
     78    <Compile Include="OffSpringSelectionGpEditor.Designer.cs">
     79      <DependentUpon>OffSpringSelectionGpEditor.cs</DependentUpon>
     80    </Compile>
    7481    <Compile Include="StandardGpEditor.cs">
    7582      <SubType>UserControl</SubType>
     
    161168      <Name>HeuristicLab.Random</Name>
    162169    </ProjectReference>
     170    <ProjectReference Include="..\HeuristicLab.Selection.OffspringSelection\HeuristicLab.Selection.OffspringSelection.csproj">
     171      <Project>{205898D3-2717-4686-AF17-52409B7EC0C6}</Project>
     172      <Name>HeuristicLab.Selection.OffspringSelection</Name>
     173    </ProjectReference>
    163174    <ProjectReference Include="..\HeuristicLab.Selection\HeuristicLab.Selection.csproj">
    164175      <Project>{F7CF0571-25CB-43D5-8443-0843A1E2861A}</Project>
     
    171182  </ItemGroup>
    172183  <ItemGroup>
     184    <EmbeddedResource Include="OffSpringSelectionGpEditor.resx">
     185      <DependentUpon>OffSpringSelectionGpEditor.cs</DependentUpon>
     186    </EmbeddedResource>
    173187    <EmbeddedResource Include="StandardGpEditor.resx">
    174188      <DependentUpon>StandardGpEditor.cs</DependentUpon>
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/OffSpringSelectionGpEditor.Designer.cs

    r1156 r1201  
    7070      this.resetButton = new System.Windows.Forms.Button();
    7171      this.cloneEngineButton = new System.Windows.Forms.Button();
     72      this.selectionPressureTextBox = new System.Windows.Forms.TextBox();
     73      this.selectionPressureLabel = new System.Windows.Forms.Label();
    7274      this.tabControl.SuspendLayout();
    7375      this.parametersTabPage.SuspendLayout();
     
    101103      // parametersTabPage
    102104      //
     105      this.parametersTabPage.Controls.Add(this.selectionPressureTextBox);
     106      this.parametersTabPage.Controls.Add(this.selectionPressureLabel);
    103107      this.parametersTabPage.Controls.Add(this.viewProblemInitializationButton);
    104108      this.parametersTabPage.Controls.Add(this.setProblemInitializationButton);
     
    128132      //
    129133      this.viewProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    130       this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 208);
     134      this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 241);
    131135      this.viewProblemInitializationButton.Name = "viewProblemInitializationButton";
    132136      this.viewProblemInitializationButton.Size = new System.Drawing.Size(53, 20);
     
    139143      //
    140144      this.setProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
    141       this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 208);
     145      this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 241);
    142146      this.setProblemInitializationButton.Name = "setProblemInitializationButton";
    143147      this.setProblemInitializationButton.Size = new System.Drawing.Size(43, 20);
     
    150154      //
    151155      this.problemInitializationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    152       this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 208);
     156      this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 241);
    153157      this.problemInitializationTextBox.Name = "problemInitializationTextBox";
    154158      this.problemInitializationTextBox.ReadOnly = true;
     
    169173      //
    170174      this.elitesTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    171       this.elitesTextBox.Location = new System.Drawing.Point(218, 156);
     175      this.elitesTextBox.Location = new System.Drawing.Point(218, 182);
    172176      this.elitesTextBox.Name = "elitesTextBox";
    173177      this.elitesTextBox.Size = new System.Drawing.Size(186, 20);
     
    178182      this.problemInitializationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    179183      this.problemInitializationLabel.AutoSize = true;
    180       this.problemInitializationLabel.Location = new System.Drawing.Point(65, 211);
     184      this.problemInitializationLabel.Location = new System.Drawing.Point(65, 244);
    181185      this.problemInitializationLabel.Name = "problemInitializationLabel";
    182186      this.problemInitializationLabel.Size = new System.Drawing.Size(105, 13);
     
    188192      this.elitesLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    189193      this.elitesLabel.AutoSize = true;
    190       this.elitesLabel.Location = new System.Drawing.Point(65, 159);
     194      this.elitesLabel.Location = new System.Drawing.Point(66, 185);
    191195      this.elitesLabel.Name = "elitesLabel";
    192196      this.elitesLabel.Size = new System.Drawing.Size(35, 13);
     
    197201      //
    198202      this.mutationRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
    199       this.mutationRateTextBox.Location = new System.Drawing.Point(218, 130);
     203      this.mutationRateTextBox.Location = new System.Drawing.Point(218, 156);
    200204      this.mutationRateTextBox.Name = "mutationRateTextBox";
    201205      this.mutationRateTextBox.Size = new System.Drawing.Size(186, 20);
     
    206210      this.mutationRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
    207211      this.mutationRateLabel.AutoSize = true;
    208       this.mutationRateLabel.Location = new System.Drawing.Point(65, 133);
     212      this.mutationRateLabel.Location = new System.Drawing.Point(66, 159);
    209213      this.mutationRateLabel.Name = "mutationRateLabel";
    210214      this.mutationRateLabel.Size = new System.Drawing.Size(77, 13);
     
    331335      this.cloneEngineButton.Click += new System.EventHandler(this.cloneEngineButton_Click);
    332336      //
    333       // StandardGpEditor
     337      // selectionPressureTextBox
     338      //
     339      this.selectionPressureTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
     340      this.selectionPressureTextBox.Location = new System.Drawing.Point(218, 130);
     341      this.selectionPressureTextBox.Name = "selectionPressureTextBox";
     342      this.selectionPressureTextBox.Size = new System.Drawing.Size(186, 20);
     343      this.selectionPressureTextBox.TabIndex = 17;
     344      //
     345      // selectionPressureLabel
     346      //
     347      this.selectionPressureLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
     348      this.selectionPressureLabel.AutoSize = true;
     349      this.selectionPressureLabel.Location = new System.Drawing.Point(65, 133);
     350      this.selectionPressureLabel.Name = "selectionPressureLabel";
     351      this.selectionPressureLabel.Size = new System.Drawing.Size(145, 13);
     352      this.selectionPressureLabel.TabIndex = 16;
     353      this.selectionPressureLabel.Text = "Maximum &Selection Pressure:";
     354      //
     355      // OffspringSelectionGpEditor
    334356      //
    335357      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
     
    340362      this.Controls.Add(this.abortButton);
    341363      this.Controls.Add(this.executeButton);
    342       this.Name = "StandardGpEditor";
     364      this.Name = "OffspringSelectionGpEditor";
    343365      this.Size = new System.Drawing.Size(526, 419);
    344366      this.tabControl.ResumeLayout(false);
     
    376398    private HeuristicLab.Core.ScopeView scopeView;
    377399    private System.Windows.Forms.Button viewProblemInitializationButton;
     400    private System.Windows.Forms.TextBox selectionPressureTextBox;
     401    private System.Windows.Forms.Label selectionPressureLabel;
    378402  }
    379403}
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/OffSpringSelectionGpEditor.cs

    r1156 r1201  
    3434    private ChooseOperatorDialog chooseOperatorDialog;
    3535
    36     public OffspringSelectionGpEditor OffspringSelectionGpEditor {
    37       get { return (OffspringSelectionGpEditor)Item; }
     36    public OffspringSelectionGP OffspringSelectionGP {
     37      get { return (OffspringSelectionGP)Item; }
    3838      set { base.Item = value; }
    3939    }
     
    4242      InitializeComponent();
    4343    }
    44     public OffspringSelectionGpEditor(OffspringSelectionGpEditor osgp)
     44    public OffspringSelectionGpEditor(OffspringSelectionGP osgp)
    4545      : this() {
    46       OffspringSelectionGpEditor = osgp;
     46      OffspringSelectionGP = osgp;
    4747    }
    4848
    4949    protected override void RemoveItemEvents() {
    50       OffspringSelectionGpEditor.Engine.ExceptionOccurred -= new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
    51       OffspringSelectionGpEditor.Engine.Finished -= new EventHandler(Engine_Finished);
     50      OffspringSelectionGP.Engine.ExceptionOccurred -= new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
     51      OffspringSelectionGP.Engine.Finished -= new EventHandler(Engine_Finished);
    5252      scopeView.Scope = null;
    5353      base.RemoveItemEvents();
     
    5555    protected override void AddItemEvents() {
    5656      base.AddItemEvents();
    57       OffspringSelectionGpEditor.Engine.ExceptionOccurred += new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
    58       OffspringSelectionGpEditor.Engine.Finished += new EventHandler(Engine_Finished);
     57      OffspringSelectionGP.Engine.ExceptionOccurred += new EventHandler<ExceptionEventArgs>(Engine_ExceptionOccurred);
     58      OffspringSelectionGP.Engine.Finished += new EventHandler(Engine_Finished);
    5959      SetDataBinding();
    60       scopeView.Scope = OffspringSelectionGpEditor.Engine.GlobalScope;
     60      scopeView.Scope = OffspringSelectionGP.Engine.GlobalScope;
    6161    }
    6262
    6363    protected override void UpdateControls() {
    6464      base.UpdateControls();
    65       if (OffspringSelectionGpEditor == null) {
     65      if (OffspringSelectionGP == null) {
    6666        tabControl.Enabled = false;
    6767      } else {
    6868        tabControl.Enabled = true;
    69         problemInitializationTextBox.Text = OffspringSelectionGpEditor.ProblemInjector.GetType().Name;
     69        problemInitializationTextBox.Text = OffspringSelectionGP.ProblemInjector.GetType().Name;
    7070      }
    7171    }
    7272
    7373    private void SetDataBinding() {
    74       setRandomSeedRandomlyCheckBox.DataBindings.Add("Checked", OffspringSelectionGpEditor, "SetSeedRandomly");
    75       randomSeedTextBox.DataBindings.Add("Text", OffspringSelectionGpEditor, "Seed");
    76       populationSizeTextBox.DataBindings.Add("Text", OffspringSelectionGpEditor, "PopulationSize");
    77       maximumGenerationsTextBox.DataBindings.Add("Text", OffspringSelectionGpEditor, "MaxGenerations");
    78       mutationRateTextBox.DataBindings.Add("Text", OffspringSelectionGpEditor, "MutationRate");
    79       elitesTextBox.DataBindings.Add("Text", OffspringSelectionGpEditor, "Elites");
     74      setRandomSeedRandomlyCheckBox.DataBindings.Add("Checked", OffspringSelectionGP, "SetSeedRandomly");
     75      randomSeedTextBox.DataBindings.Add("Text", OffspringSelectionGP, "Seed");
     76      populationSizeTextBox.DataBindings.Add("Text", OffspringSelectionGP, "PopulationSize");
     77      maximumGenerationsTextBox.DataBindings.Add("Text", OffspringSelectionGP, "MaxGenerations");
     78      selectionPressureTextBox.DataBindings.Add("Text", OffspringSelectionGP, "SelectionPressureLimit");
     79      mutationRateTextBox.DataBindings.Add("Text", OffspringSelectionGP, "MutationRate");
     80      elitesTextBox.DataBindings.Add("Text", OffspringSelectionGP, "Elites");
    8081    }
    8182
    8283    #region Button Events
    8384    private void viewProblemInjectorButton_Click(object sender, EventArgs e) {
    84       IView view = OffspringSelectionGpEditor.ProblemInjector.CreateView();
     85      IView view = OffspringSelectionGP.ProblemInjector.CreateView();
    8586      if(view != null)
    8687        PluginManager.ControlManager.ShowControl(view);
     
    9091      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
    9192      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
    92         OffspringSelectionGpEditor.ProblemInjector = chooseOperatorDialog.Operator;
    93         problemInitializationTextBox.Text = OffspringSelectionGpEditor.ProblemInjector.GetType().Name;
     93        OffspringSelectionGP.ProblemInjector = chooseOperatorDialog.Operator;
     94        problemInitializationTextBox.Text = OffspringSelectionGP.ProblemInjector.GetType().Name;
    9495      }
    9596    }
     
    9798      executeButton.Enabled = false;
    9899      abortButton.Enabled = true;
    99       OffspringSelectionGpEditor.Engine.Execute();
     100      OffspringSelectionGP.Engine.Execute();
    100101    }
    101102    private void abortButton_Click(object sender, EventArgs e) {
    102       StandardGP.Engine.Abort();
     103      OffspringSelectionGP.Engine.Abort();
    103104    }
    104105    private void resetButton_Click(object sender, EventArgs e) {
    105       StandardGP.Engine.Reset();
     106      OffspringSelectionGP.Engine.Reset();
    106107    }
    107108    private void cloneEngineButton_Click(object sender, EventArgs e) {
    108       IEngine clone = (IEngine)StandardGP.Engine.Clone();
     109      IEngine clone = (IEngine)OffspringSelectionGP.Engine.Clone();
    109110      IEditor editor = ((IEditable)clone).CreateEditor();
    110111      PluginManager.ControlManager.ShowControl(editor);
     
    130131    }
    131132    #endregion
    132 
    133 
    134133  }
    135134}
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/OffspringSelectionGP.cs

    r1156 r1201  
    3434using HeuristicLab.Data;
    3535using HeuristicLab.Operators.Programmable;
     36using HeuristicLab.Selection.OffspringSelection;
    3637
    3738namespace HeuristicLab.GP.StructureIdentification {
     
    8687    }
    8788
    88     private IntData maxTreeSize;
     89    private IntData maxTreeSize = new IntData();
    8990    public int MaxTreeSize {
    9091      get { return maxTreeSize.Data; }
     
    9293    }
    9394
    94     private IntData maxTreeHeight;
     95    private IntData maxTreeHeight = new IntData();
    9596    public int MaxTreeHeight {
    9697      get { return maxTreeHeight.Data; }
     
    9899    }
    99100
    100     private DoubleData maxSelectionPressure;
    101     public double MaxSelectionPressure {
    102       get { return maxSelectionPressure.Data; }
    103       set { maxSelectionPressure.Data = value; }
     101    private DoubleData selectionPressureLimit = new DoubleData();
     102    public double SelectionPressureLimit {
     103      get { return selectionPressureLimit.Data; }
     104      set { selectionPressureLimit.Data = value; }
     105    }
     106
     107    private DoubleData comparisonFactor = new DoubleData();
     108    public double ComparisonFactor {
     109      get { return comparisonFactor.Data; }
     110      set { comparisonFactor.Data = value; }
     111    }
     112
     113    private DoubleData successRatioLimit = new DoubleData();
     114    public double SuccessRatioLimit {
     115      get { return successRatioLimit.Data; }
     116      set { successRatioLimit.Data = value; }
    104117    }
    105118
     
    120133      MutationRate = 0.15;
    121134      Elites = 1;
    122       MaxSelectionPressure = 300;
     135      SelectionPressureLimit = 300;
     136      ComparisonFactor = 1.0;
    123137      MaxTreeHeight = 10;
    124138      MaxTreeSize = 100;
     
    131145    private CombinedOperator CreateAlgorithm() {
    132146      CombinedOperator algo = new CombinedOperator();
    133       algo.Name = "StandardGP";
     147      algo.Name = "OffspringSelectionGP";
    134148      SequentialProcessor seq = new SequentialProcessor();
    135149      EmptyOperator problemInjectorPlaceholder = new EmptyOperator();
     
    139153      randomInjector.Name = "Random Injector";
    140154      VariableInjector globalInjector = CreateGlobalInjector();
    141       CombinedOperator initialization = CreateInialization();
     155      CombinedOperator initialization = CreateInitialization();
    142156      initialization.Name = "Initialization";
    143157      FunctionLibraryInjector funLibInjector = new FunctionLibraryInjector();
     
    160174      CombinedOperator manipulator = CreateManipulator();
    161175      manipulator.Name = "Manipulator";
    162       TournamentSelector selector = new TournamentSelector();
     176      CombinedOperator selector = CreateSelector();
    163177      selector.Name = "Selector";
    164       selector.GetVariableInfo("Selected").ActualName = "Parents";
    165       selector.GetVariableInfo("GroupSize").Local = false;
    166       selector.RemoveVariable("GroupSize");
    167       selector.GetVariableInfo("GroupSize").ActualName = "TournamentSize";
    168178      LeftReducer cleanUp = new LeftReducer();
    169179
     
    192202      VariableInjector injector = new VariableInjector();
    193203      injector.Name = "Global Injector";
     204      injector.AddVariable(new HeuristicLab.Core.Variable("ComparisonFactor", comparisonFactor));
     205      injector.AddVariable(new HeuristicLab.Core.Variable("Elites", elites));
     206      injector.AddVariable(new HeuristicLab.Core.Variable("EvaluatedSolutions", new IntData(0)));
    194207      injector.AddVariable(new HeuristicLab.Core.Variable("Generations", new IntData(0)));
     208      injector.AddVariable(new HeuristicLab.Core.Variable("Maximization", new BoolData(false)));
    195209      injector.AddVariable(new HeuristicLab.Core.Variable("MaxGenerations", maxGenerations));
    196       injector.AddVariable(new HeuristicLab.Core.Variable("MutationRate", mutationRate));
    197       injector.AddVariable(new HeuristicLab.Core.Variable("PopulationSize", populationSize));
    198       injector.AddVariable(new HeuristicLab.Core.Variable("Parents", parents));
    199       injector.AddVariable(new HeuristicLab.Core.Variable("Elites", elites));
    200       injector.AddVariable(new HeuristicLab.Core.Variable("Maximization", new BoolData(false)));
    201210      injector.AddVariable(new HeuristicLab.Core.Variable("MaxTreeHeight", maxTreeHeight));
    202211      injector.AddVariable(new HeuristicLab.Core.Variable("MaxTreeSize", maxTreeSize));
    203       injector.AddVariable(new HeuristicLab.Core.Variable("EvaluatedSolutions", new IntData(0)));
     212      injector.AddVariable(new HeuristicLab.Core.Variable("MutationRate", mutationRate));
     213      injector.AddVariable(new HeuristicLab.Core.Variable("Parents", parents));
     214      injector.AddVariable(new HeuristicLab.Core.Variable("PopulationSize", populationSize));
     215      injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(punishmentFactor)));
     216      injector.AddVariable(new HeuristicLab.Core.Variable("SelectionPressureLimit", selectionPressureLimit));
     217      injector.AddVariable(new HeuristicLab.Core.Variable("SuccessRatioLimit", successRatioLimit));
    204218      injector.AddVariable(new HeuristicLab.Core.Variable("TotalEvaluatedNodes", new DoubleData(0)));
    205       injector.AddVariable(new HeuristicLab.Core.Variable("PunishmentFactor", new DoubleData(punishmentFactor)));
    206219      injector.AddVariable(new HeuristicLab.Core.Variable("UseEstimatedTargetValue", new BoolData(useEstimatedTargetValue)));
    207220      return injector;
     
    249262    }
    250263
    251     private CombinedOperator CreateInialization() {
     264    private CombinedOperator CreateInitialization() {
    252265      CombinedOperator init = new CombinedOperator();
    253266      SequentialProcessor seq = new SequentialProcessor();
     
    268281      Counter evalCounter = new Counter();
    269282      evalCounter.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
    270 
     283      Sorter sorter = new Sorter();
     284      sorter.GetVariableInfo("Descending").ActualName = "Maximization";
     285      sorter.GetVariableInfo("Value").ActualName = "Quality";
    271286      seq.AddSubOperator(subScopesCreater);
    272287      seq.AddSubOperator(subScopesProc);
     288      seq.AddSubOperator(sorter);
    273289      subScopesProc.AddSubOperator(individualSeq);
    274290      individualSeq.AddSubOperator(treeCreater);
     
    282298    }
    283299
     300    private CombinedOperator CreateSelector() {
     301      CombinedOperator selector = new CombinedOperator();
     302      SequentialProcessor seq = new SequentialProcessor();
     303      seq.Name = "Selector";
     304      EmptyOperator emptyOp = new EmptyOperator();
     305      ProportionalSelector femaleSelector = new ProportionalSelector();
     306      femaleSelector.GetVariableInfo("Selected").ActualName = "Parents";
     307      femaleSelector.GetVariableValue<BoolData>("CopySelected", null, false).Data = true;
     308
     309      RandomSelector maleSelector = new RandomSelector();
     310      maleSelector.GetVariableInfo("Selected").ActualName = "Parents";
     311      maleSelector.GetVariableValue<BoolData>("CopySelected", null, false).Data = true;
     312      SequentialSubScopesProcessor seqSubScopesProc = new SequentialSubScopesProcessor();
     313      RightChildReducer rightChildReducer = new RightChildReducer();
     314      SubScopesMixer mixer = new SubScopesMixer();
     315
     316      seqSubScopesProc.AddSubOperator(femaleSelector);
     317      seqSubScopesProc.AddSubOperator(emptyOp);
     318
     319      seq.AddSubOperator(maleSelector);
     320      seq.AddSubOperator(seqSubScopesProc);
     321      seq.AddSubOperator(rightChildReducer);
     322      seq.AddSubOperator(mixer);
     323
     324      selector.OperatorGraph.AddOperator(seq);
     325      selector.OperatorGraph.InitialOperator = seq;
     326      return selector;
     327    }
     328
    284329    private CombinedOperator CreateMainLoop() {
    285330      CombinedOperator main = new CombinedOperator();
    286331      SequentialProcessor seq = new SequentialProcessor();
     332      SequentialProcessor offspringSelectionSeq = new SequentialProcessor();
     333      SequentialSubScopesProcessor subScopesProc = new SequentialSubScopesProcessor();
     334      EmptyOperator emptyOp = new EmptyOperator();
     335      OffspringSelector offspringSelector = new OffspringSelector();
     336
     337      OperatorExtractor selector = new OperatorExtractor();
     338      selector.Name = "Selector (extr.)";
     339      selector.GetVariableInfo("Operator").ActualName = "Selector";
     340
    287341      CombinedOperator childCreater = CreateChildCreater();
    288342      childCreater.Name = "Create children";
     
    314368      Counter counter = new Counter();
    315369      counter.GetVariableInfo("Value").ActualName = "Generations";
    316       LessThanComparator comparator = new LessThanComparator();
    317       comparator.GetVariableInfo("LeftSide").ActualName = "Generations";
    318       comparator.GetVariableInfo("RightSide").ActualName = "MaxGenerations";
    319       comparator.GetVariableInfo("Result").ActualName = "GenerationsCondition";
    320       ConditionalBranch cond = new ConditionalBranch();
    321       cond.GetVariableInfo("Condition").ActualName = "GenerationsCondition";
    322 
    323       seq.AddSubOperator(childCreater);
     370      LessThanComparator selPresComparator = new LessThanComparator();
     371      selPresComparator.GetVariableInfo("LeftSide").ActualName = "SelectionPressure";
     372      selPresComparator.GetVariableInfo("RightSide").ActualName = "SelectionPressureLimit";
     373      selPresComparator.GetVariableInfo("Result").ActualName = "SelectionPressureCondition";
     374      LessThanComparator generationsComparator = new LessThanComparator();
     375      generationsComparator.GetVariableInfo("LeftSide").ActualName = "Generations";
     376      generationsComparator.GetVariableInfo("RightSide").ActualName = "MaxGenerations";
     377      generationsComparator.GetVariableInfo("Result").ActualName = "GenerationsCondition";
     378      ConditionalBranch selPresCondition = new ConditionalBranch();
     379      selPresCondition.GetVariableInfo("Condition").ActualName = "SelectionPressureCondition";
     380      ConditionalBranch generationsCondition = new ConditionalBranch();
     381      generationsCondition.GetVariableInfo("Condition").ActualName = "GenerationsCondition";
     382
     383      subScopesProc.AddSubOperator(emptyOp);
     384      subScopesProc.AddSubOperator(childCreater);
     385
     386      offspringSelector.AddSubOperator(offspringSelectionSeq);
     387
     388      offspringSelectionSeq.AddSubOperator(selector);
     389      offspringSelectionSeq.AddSubOperator(subScopesProc);
     390      offspringSelectionSeq.AddSubOperator(offspringSelector);
     391
     392      seq.AddSubOperator(offspringSelectionSeq);
    324393      seq.AddSubOperator(replacement);
    325394      seq.AddSubOperator(solutionStorer);
     
    331400      seq.AddSubOperator(validationQualityLogger);
    332401      seq.AddSubOperator(counter);
    333       seq.AddSubOperator(comparator);
    334       seq.AddSubOperator(cond);
    335       cond.AddSubOperator(seq);
     402      seq.AddSubOperator(selPresComparator);
     403      seq.AddSubOperator(generationsComparator);
     404      seq.AddSubOperator(selPresCondition);
     405      selPresCondition.AddSubOperator(generationsCondition);
     406      generationsCondition.AddSubOperator(seq);
    336407
    337408      main.OperatorGraph.AddOperator(seq);
     
    346417      SequentialProcessor bestSolutionProcessor = new SequentialProcessor();
    347418      MeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();
    348       trainingMapeEvaluator.Name = "ValidationMapeEvaluator";
     419      trainingMapeEvaluator.Name = "TrainingMapeEvaluator";
    349420      trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TrainingMAPE";
    350421      trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
     
    358429      progOperator.RemoveVariableInfo("Result");
    359430      progOperator.AddVariableInfo(new HeuristicLab.Core.VariableInfo("EvaluatedSolutions", "", typeof(IntData), VariableKind.In));
     431      progOperator.AddVariableInfo(new HeuristicLab.Core.VariableInfo("SelectionPressure", "", typeof(DoubleData), VariableKind.In));
    360432      progOperator.Code = @"
    361433int evalSolutions = EvaluatedSolutions.Data;
     434double selectionPressure = SelectionPressure.Data;
    362435scope.AddVariable(new Variable(""EvaluatedSolutions"", new IntData(evalSolutions)));
     436scope.AddVariable(new Variable(""SelectionPressure"", new DoubleData(selectionPressure)));
    363437";
    364438      solutionStorer.AddSubOperator(bestSolutionProcessor);
     
    405479      CombinedOperator childCreater = new CombinedOperator();
    406480      SequentialProcessor seq = new SequentialProcessor();
    407       OperatorExtractor selector = new OperatorExtractor();
    408       selector.Name = "Selector (extr.)";
    409       selector.GetVariableInfo("Operator").ActualName = "Selector";
    410       SequentialSubScopesProcessor seqScopesProc = new SequentialSubScopesProcessor();
    411       EmptyOperator emptyOpt = new EmptyOperator();
     481      OffspringAnalyzer analyzer = new OffspringAnalyzer();
    412482      SequentialProcessor selectedProc = new SequentialProcessor();
    413483      OperatorExtractor crossover = new OperatorExtractor();
     
    434504      sorter.GetVariableInfo("Descending").ActualName = "Maximization";
    435505      sorter.GetVariableInfo("Value").ActualName = "Quality";
    436 
    437 
    438       seq.AddSubOperator(selector);
    439       seq.AddSubOperator(seqScopesProc);
    440       seqScopesProc.AddSubOperator(emptyOpt);
    441       seqScopesProc.AddSubOperator(selectedProc);
     506      seq.AddSubOperator(analyzer);
     507      analyzer.AddSubOperator(selectedProc);
    442508      selectedProc.AddSubOperator(crossover);
    443509      selectedProc.AddSubOperator(individualProc);
     
    448514      individualSeqProc.AddSubOperator(validationEvaluator);
    449515      individualSeqProc.AddSubOperator(evalCounter);
    450       selectedProc.AddSubOperator(sorter);
     516      seq.AddSubOperator(sorter);
    451517
    452518      childCreater.OperatorGraph.AddOperator(seq);
     
    456522
    457523    public IEditor CreateEditor() {
    458       return new OffSpringSelectionGpEditor(this);
     524      return new OffspringSelectionGpEditor(this);
    459525    }
    460526
  • branches/CEDMA-Refactoring-Ticket419/HeuristicLab.GP.StructureIdentification/StandardGP.cs

    r1156 r1201  
    136136      randomInjector.Name = "Random Injector";
    137137      VariableInjector globalInjector = CreateGlobalInjector();
    138       CombinedOperator initialization = CreateInialization();
     138      CombinedOperator initialization = CreateInitialization();
    139139      initialization.Name = "Initialization";
    140140      FunctionLibraryInjector funLibInjector = new FunctionLibraryInjector();
     
    247247    }
    248248
    249     private CombinedOperator CreateInialization() {
     249    private CombinedOperator CreateInitialization() {
    250250      CombinedOperator init = new CombinedOperator();
    251251      SequentialProcessor seq = new SequentialProcessor();
     
    266266      Counter evalCounter = new Counter();
    267267      evalCounter.GetVariableInfo("Value").ActualName = "EvaluatedSolutions";
     268      Sorter sorter = new Sorter();
     269      sorter.GetVariableInfo("Descending").ActualName = "Maximization";
     270      sorter.GetVariableInfo("Value").ActualName = "Quality";
    268271
    269272      seq.AddSubOperator(subScopesCreater);
    270273      seq.AddSubOperator(subScopesProc);
     274      seq.AddSubOperator(sorter);
     275
    271276      subScopesProc.AddSubOperator(individualSeq);
    272277      individualSeq.AddSubOperator(treeCreater);
     
    344349      SequentialProcessor bestSolutionProcessor = new SequentialProcessor();
    345350      MeanAbsolutePercentageErrorEvaluator trainingMapeEvaluator = new MeanAbsolutePercentageErrorEvaluator();
    346       trainingMapeEvaluator.Name = "ValidationMapeEvaluator";
     351      trainingMapeEvaluator.Name = "TrainingMapeEvaluator";
    347352      trainingMapeEvaluator.GetVariableInfo("MAPE").ActualName = "TrainingMAPE";
    348353      trainingMapeEvaluator.GetVariableInfo("SamplesStart").ActualName = "TrainingSamplesStart";
Note: See TracChangeset for help on using the changeset viewer.