Changeset 12840


Ignore:
Timestamp:
08/08/15 19:49:05 (4 years ago)
Author:
aballeit
Message:

#2283 Final

Location:
branches/HeuristicLab.Problems.GrammaticalOptimization
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/MainWindow.xaml

    r12833 r12840  
    102102                        </Grid.RowDefinitions>
    103103                        <ListBox Name="ListBoxRuns" Grid.Column="0" Width="100" ItemsSource="{Binding Runs}" SelectionChanged="ListBoxRuns_OnSelectionChanged"/>
    104                         <TabControl Grid.Column="1">
    105                             <TabItem Header="Quality-Chart">
     104                        <TabControl Name="ChartSelector" Grid.Column="1" SelectionChanged="Selector_OnSelectionChanged">
     105                            <TabItem Name="TabQualityChart" Header="Quality-Chart">
    106106                                <Grid>
    107107                                    <Grid.RowDefinitions>
     
    114114                                    <d3:ChartPlotter Grid.Column="1" x:Name="QualityChartPlotter" LegendVisible="False" EnableSmoothPanningForNumericAxes="True">
    115115                                        <d3:Header Content="Quality-Chart"/>
    116                                         <d3:VerticalAxisTitle Content="Quality" />
    117                                         <d3:HorizontalAxisTitle Content="Evaluation"/>
     116                                        <d3:VerticalAxisTitle Content="Qualität" />
     117                                        <d3:HorizontalAxisTitle Content="Evaluierungen"/>
    118118                                    </d3:ChartPlotter>
    119119                                </Grid>
    120120                            </TabItem>
    121                             <TabItem Header="SelectionIndicator-Chart">
     121                            <TabItem Name="TabSelectionIndicator" Header="SelectionIndicator-Chart">
    122122                                <Grid>
    123123                                    <Grid.RowDefinitions>
     
    128128                                        <ColumnDefinition Width="*"></ColumnDefinition>
    129129                                    </Grid.ColumnDefinitions>
    130                                     <d3:ChartPlotter Grid.Column="1" x:Name="SelectionChartPlotter" LegendVisible="False" EnableSmoothPanningForNumericAxes="True">
    131                                         <d3:Header Content="SelectionIndicator-Chart"/>
    132                                         <d3:VerticalAxisTitle Content="SelectionIndicator" />
    133                                         <d3:HorizontalAxisTitle Content="SelectedNodes"/>
     130                                    <d3:ChartPlotter Grid.Column="1" x:Name="SelectionChartPlotter" LegendVisible="False" EnableSmoothPanningForNumericAxes="True" >
     131                                        <d3:VerticalAxisTitle Content="Qualität" />
     132                                        <d3:HorizontalAxisTitle Content="Evaluierungen"/>
    134133                                    </d3:ChartPlotter>
    135134                                </Grid>
  • branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/MainWindow.xaml.cs

    r12833 r12840  
    55using System.Threading.Tasks;
    66using System.Windows.Documents;
     7using System.Windows.Media;
    78using System.Xml.Serialization;
    89using Evaluation.ViewModel;
     
    4344            CenterWindowOnScreen();
    4445            this.DataContext = vm = new EvaluationViewModel();
    45             vm.MaxLen = 23;
    46             vm.MaxIterations = 500000;
     46            vm.MaxLen = 17;
     47            vm.MaxIterations = 300000;
    4748            vm.NrRuns = 20;
    48             vm.MaxThreads = 5;
     49            vm.MaxThreads = 10;
    4950        }
    5051
     
    7273
    7374            ds.SetXMapping(x => x.Iteration);
    74             ds.SetYMapping(y => y.Quality);
     75            ds.SetYMapping(y => y.Quality / run.BestKnownQuality);
    7576
    7677            LineGraph graph = new LineGraph(ds);
     
    8283        private void DrawSelectionChart(Run run)
    8384        {
     85            // quality line
     86            List<FoundSolution> solutions = new List<FoundSolution>(run.FoundSolutions);
     87
     88            if (run.BestSolutionFoundAt < run.Evaluations)
     89            {
     90                solutions.Add(new FoundSolution(run.EndTime, run.Evaluations, run.BestQuality, run.BestSolution));
     91            }
     92
     93            var ds = new EnumerableDataSource<FoundSolution>(solutions);
     94
     95
     96            ds.SetXMapping(x => x.Iteration);
     97            ds.SetYMapping(y => y.Quality / run.BestKnownQuality);
     98
     99            LineGraph graph = new LineGraph(ds);
     100            graph.StrokeThickness = 2;
     101            graph.AddToPlotter(SelectionChartPlotter);
     102
     103            // selection indicator line
    84104            List<SelectionIndicator> selectionIndicators = new List<SelectionIndicator>(run.SelectionIndicators);
    85105
    86             var ds = new EnumerableDataSource<SelectionIndicator>(selectionIndicators);
    87 
    88             ds.SetXMapping(x => x.TotalSelections);
    89             ds.SetYMapping(y => y.Indicator);
    90 
    91             LineGraph graph = new LineGraph(ds);
    92 
     106            var dssi = new EnumerableDataSource<SelectionIndicator>(selectionIndicators);
     107
     108            dssi.SetXMapping(x => x.Evaluation);
     109            dssi.SetYMapping(y => y.Indicator);
     110
     111            graph = new LineGraph(dssi);
    93112            graph.StrokeThickness = 2;
     113            graph.Stroke = Brushes.Red;
    94114            graph.AddToPlotter(SelectionChartPlotter);
    95115        }
     
    182202                policyInstance = new BoltzmannExplorationPolicy(2);
    183203            }
    184             else if (policy == typeof (EpsGreedyPolicy))
     204            else if (policy == typeof(EpsGreedyPolicy))
    185205            {
    186206                policyInstance = new EpsGreedyPolicy(vm.Epsylon);
     
    228248            }
    229249            Task.Run(() =>
    230                 Parallel.For(0, vm.NrRuns, new ParallelOptions {MaxDegreeOfParallelism = vm.MaxThreads},
     250                Parallel.For(0, vm.NrRuns, new ParallelOptions { MaxDegreeOfParallelism = vm.MaxThreads },
    231251                    i => DoRun(vm.Runs[i])));
    232252        }
     
    434454        private void ComboBoxPolicies_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
    435455        {
    436             if (vm.SelectedPolicy == typeof (EpsGreedyPolicy))
     456            if (vm.SelectedPolicy == typeof(EpsGreedyPolicy))
    437457            {
    438458                TextBoxEpsylon.Visibility = Visibility.Visible;
     
    445465            }
    446466        }
     467
     468        private void Selector_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
     469        {
     470            if (ChartSelector.SelectedItem == TabSelectionIndicator)
     471            {
     472                if (vm.SelectedRun != null)
     473                {
     474                    if (vm.SelectedRun.RunState == RunState.Finished)
     475                    {
     476                        ClearSelectionChart();
     477                        DrawSelectionChart(vm.SelectedRun);
     478                    }
     479                }
     480            }
     481            else if (ChartSelector.SelectedItem == TabQualityChart)
     482            {
     483                if (vm.SelectedRun != null)
     484                {
     485                    if (vm.SelectedRun.RunState == RunState.Finished)
     486                    {
     487                        ClearQualityChart();
     488                        DrawQualityChart(vm.SelectedRun);
     489                    }
     490                }
     491            }
     492        }
    447493    }
    448494}
  • branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/Run.cs

    r12824 r12840  
    1 using HeuristicLab.Algorithms.Bandits;
     1using System.Diagnostics;
     2using HeuristicLab.Algorithms.Bandits;
    23using HeuristicLab.Algorithms.GrammaticalOptimization;
    34using HeuristicLab.Algorithms.MonteCarloTreeSearch;
     
    4142            RunState = RunState.NotStarted;
    4243            FoundSolutions = new List<FoundSolution>();
    43             CurrentSelectionIndicator = new SelectionIndicator(0, 0);
     44            CurrentSelectionIndicator = new SelectionIndicator(0, 0, 0);
    4445
    4546            BestKnownQuality = problem.BestKnownQuality(maxLen);
     
    6061            {
    6162                MonteCarloTreeSearch mcts = (MonteCarloTreeSearch)solver;
    62                 mcts.NodeSelected += mcts_NodeSelected;
    63             }
    64         }
    65 
    66         private void mcts_NodeSelected(int goodSelections, int totalSelections)
    67         {
    68             CurrentSelectionIndicator.GoodSelections = goodSelections;
    69             CurrentSelectionIndicator.TotalSelections = totalSelections;
    70             this.OnPropertyChanged("CurrentSelectionIndicator");
    71             //CurrentSelectionIndicator = new SelectionIndicator(goodSelections, totalSelections);
    72             //selectionIndicators.Add(CurrentSelectionIndicator);
     63                mcts.IterationFinished += mcts_IterationFinished;
     64            }
     65        }
     66
     67        private void mcts_IterationFinished(int goodSelections, int totalSelections)
     68        {
     69            //CurrentSelectionIndicator.GoodSelections = goodSelections;
     70            //CurrentSelectionIndicator.TotalSelections = totalSelections;
     71            //this.OnPropertyChanged("CurrentSelectionIndicator");
     72            CurrentSelectionIndicator = new SelectionIndicator(goodSelections, totalSelections, selectionIndicators.Count);
     73            selectionIndicators.Add(CurrentSelectionIndicator);
    7374        }
    7475
  • branches/HeuristicLab.Problems.GrammaticalOptimization/Evaluation/SelectionIndicator.cs

    r12824 r12840  
    1313           
    1414        }
    15         public SelectionIndicator(int goodSelections, int totalSelections)
     15        public SelectionIndicator(int goodSelections, int totalSelections, int evaluation)
    1616        {
    1717            GoodSelections = goodSelections;
    1818            TotalSelections = totalSelections;
     19            Evaluation = evaluation;
    1920        }
    2021
     
    2223        public int TotalSelections { get; set; }
    2324
     25        public int Evaluation { get; set; }
     26
    2427        public double Indicator { get { return Math.Round((double)GoodSelections / TotalSelections, 5); } }
    2528    }
  • branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.GeneticProgramming/StandardGP.cs

    r12827 r12840  
    3131      TournamentGroupSize = 4;
    3232      MutationRate = 0.15;
    33       MaxSolutionSize = 40;
     33      MaxSolutionSize = 201;
    3434      MaxSolutionDepth = 17;
    3535      this.saveAlg = saveAlg;
  • branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch.cs

    r12832 r12840  
    4343        }
    4444
    45         public event Action<int, int> NodeSelected;
    46 
    47         protected virtual void OnNodeSelectedChanged(int value, int selections)
    48         {
    49             RaiseNodeSelectedChanged(value, selections);
    50         }
    51 
    52         private void RaiseNodeSelectedChanged(int value, int selections)
    53         {
    54             var handler = NodeSelected;
     45        public event Action<int, int> IterationFinished;
     46
     47        protected virtual void OnIterationFinishedChanged(int value, int selections)
     48        {
     49            RaiseIterationFinishedChanged(value, selections);
     50        }
     51
     52        private void RaiseIterationFinishedChanged(int value, int selections)
     53        {
     54            var handler = IterationFinished;
    5555            if (handler != null) handler(value, selections);
    5656        }
     
    6666                goodSelections++;
    6767            }
    68 
    69             OnNodeSelectedChanged(goodSelections, selections);
    7068        }
    7169
     
    8886                        currentNode.GetChildActionInfos());
    8987                    currentNode = currentNode.children[currentActionIndex];
    90                     //selections++;
    91                     //CheckSelection(currentNode, selections);
     88                    selections++;
     89                    CheckSelection(currentNode, selections);
    9290                }
    9391
     
    10098                        currentNode.children[behaviourPolicy.SelectAction(random, currentNode.GetChildActionInfos())
    10199                            ];
    102                     //selections++;
    103                     //CheckSelection(currentNode, selections);
     100                    selections++;
     101                    CheckSelection(currentNode, selections);
    104102                }
    105103                if (currentNode.phrase.Length <= maxLen)
     
    108106                    OnSolutionEvaluated(simulatedPhrase, quality);
    109107
     108                    OnIterationFinishedChanged(goodSelections, selections);
    110109                    Propagate(currentNode, quality);
    111110                }
  • branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Algorithms.MonteCarloTreeSearch/MonteCarloTreeSearch_PruneLeaves.cs

    r12832 r12840  
    3535                        currentNode.GetChildActionInfos());
    3636                    currentNode = currentNode.children[currentActionIndex];
    37                     //selections++;
    38                     //CheckSelection(currentNode, selections);
     37                    selections++;
     38                    CheckSelection(currentNode, selections);
    3939                }
    4040
     
    5656                            currentNode.children[behaviourPolicy.SelectAction(random, currentNode.GetChildActionInfos())
    5757                                ];
    58                         //selections++;
    59                         //CheckSelection(currentNode, selections);
     58                        selections++;
     59                        CheckSelection(currentNode, selections);
    6060                    }
    6161                    else
     
    7171                    OnSolutionEvaluated(simulatedPhrase, quality);
    7272
     73                    OnIterationFinishedChanged(goodSelections, selections);
     74
    7375                    Propagate(currentNode, quality);
    7476                }
  • branches/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization/Problems/SantaFeAntProblem.cs

    r12815 r12840  
    217217        public void GenerateProblemSolutions(int maxLen)
    218218        {
    219             if (maxLen > 17)
    220             {
    221                 throw new NotImplementedException();
    222             }
    223219            solutions = new string[12];
    224220            solutions[0] = "?(m)(ll?(m)(r))mr";
Note: See TracChangeset for help on using the changeset viewer.