From 88eb4f4e0663db6ebd548b7d3ddce769f32c65cd Mon Sep 17 00:00:00 2001 From: Armin Wolf Date: Tue, 1 Aug 2017 19:34:09 +0200 Subject: [PATCH] Generator Generator fertig. Es fehlen noch die Fehlerfkt. --- .../{ => Algorithms}/BinomialCoeffizient.java | 4 +- .../{ => Algorithms}/FastElementSelector.java | 4 +- .../{ => Algorithms}/IntersectionCounter.java | 4 +- .../{ => Algorithms}/RandomLineSampler.java | 3 +- .../Algorithms/TheilSenEstimator.java | 2 - .../Presenter/Generator/DatasetGenerator.java | 43 +++++++++++++++++++ src/main/java/Presenter/Presenter.java | 13 +++++- src/main/java/View/MainFrame.java | 10 +++++ .../LeastMedianOfSquaresEstimatorTest.java | 2 +- 9 files changed, 76 insertions(+), 9 deletions(-) rename src/main/java/Presenter/{ => Algorithms}/BinomialCoeffizient.java (89%) rename src/main/java/Presenter/{ => Algorithms}/FastElementSelector.java (97%) rename src/main/java/Presenter/{ => Algorithms}/IntersectionCounter.java (99%) rename src/main/java/Presenter/{ => Algorithms}/RandomLineSampler.java (94%) create mode 100644 src/main/java/Presenter/Generator/DatasetGenerator.java diff --git a/src/main/java/Presenter/BinomialCoeffizient.java b/src/main/java/Presenter/Algorithms/BinomialCoeffizient.java similarity index 89% rename from src/main/java/Presenter/BinomialCoeffizient.java rename to src/main/java/Presenter/Algorithms/BinomialCoeffizient.java index a0c8583..0da693f 100644 --- a/src/main/java/Presenter/BinomialCoeffizient.java +++ b/src/main/java/Presenter/Algorithms/BinomialCoeffizient.java @@ -1,4 +1,6 @@ -package Presenter; +package Presenter.Algorithms; + +import Presenter.Presenter; import java.util.Collections; import java.util.LinkedList; diff --git a/src/main/java/Presenter/FastElementSelector.java b/src/main/java/Presenter/Algorithms/FastElementSelector.java similarity index 97% rename from src/main/java/Presenter/FastElementSelector.java rename to src/main/java/Presenter/Algorithms/FastElementSelector.java index d1d52f5..5a2a26f 100644 --- a/src/main/java/Presenter/FastElementSelector.java +++ b/src/main/java/Presenter/Algorithms/FastElementSelector.java @@ -1,4 +1,6 @@ -package Presenter; +package Presenter.Algorithms; + +import Presenter.Presenter; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/Presenter/IntersectionCounter.java b/src/main/java/Presenter/Algorithms/IntersectionCounter.java similarity index 99% rename from src/main/java/Presenter/IntersectionCounter.java rename to src/main/java/Presenter/Algorithms/IntersectionCounter.java index 93f706f..5c3ecfd 100644 --- a/src/main/java/Presenter/IntersectionCounter.java +++ b/src/main/java/Presenter/Algorithms/IntersectionCounter.java @@ -1,8 +1,10 @@ -package Presenter; +package Presenter.Algorithms; import Model.*; import Presenter.Comparators.YOrderLineComparatorBegin; import Presenter.Comparators.YOrderLineComparatorEnd; +import Presenter.Presenter; + import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; diff --git a/src/main/java/Presenter/RandomLineSampler.java b/src/main/java/Presenter/Algorithms/RandomLineSampler.java similarity index 94% rename from src/main/java/Presenter/RandomLineSampler.java rename to src/main/java/Presenter/Algorithms/RandomLineSampler.java index 731c37e..01a53df 100644 --- a/src/main/java/Presenter/RandomLineSampler.java +++ b/src/main/java/Presenter/Algorithms/RandomLineSampler.java @@ -1,6 +1,7 @@ -package Presenter; +package Presenter.Algorithms; import Model.Line; +import Presenter.Presenter; import java.util.ArrayList; import java.util.concurrent.ThreadLocalRandom; diff --git a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java index 9226c52..407c5e7 100644 --- a/src/main/java/Presenter/Algorithms/TheilSenEstimator.java +++ b/src/main/java/Presenter/Algorithms/TheilSenEstimator.java @@ -3,8 +3,6 @@ package Presenter.Algorithms; import Model.Interval; import Model.Line; import Model.Point; -import Presenter.BinomialCoeffizient; -import Presenter.FastElementSelector; import Presenter.Presenter; import java.util.*; diff --git a/src/main/java/Presenter/Generator/DatasetGenerator.java b/src/main/java/Presenter/Generator/DatasetGenerator.java new file mode 100644 index 0000000..ec7df2e --- /dev/null +++ b/src/main/java/Presenter/Generator/DatasetGenerator.java @@ -0,0 +1,43 @@ +package Presenter.Generator; + +import Model.Line; + +import java.util.LinkedList; +import java.util.Random; + +/** + * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. + * + * @Author: Armin Wolf + * @Email: a_wolf28@uni-muenster.de + * @Date: 01.08.2017. + */ +public class DatasetGenerator { + + + public DatasetGenerator(){} + + + public LinkedList generateDataset(){ + LinkedList lines = new LinkedList<>(); + Random random = new Random(); + random.setSeed(9999); + + double m = 1 + random.nextDouble(); + double b = random.nextDouble(); + + for (int i=1;i<101;i++){ + double y = (random.nextGaussian() * 100) % 100; + double signal = m * i + b; + signal *= -1; + + Line line = new Line(i, signal - y); + line.setId(i-1+""); + lines.add(line); + } + + return lines; + } + +} + diff --git a/src/main/java/Presenter/Presenter.java b/src/main/java/Presenter/Presenter.java index bbf7df1..61c2305 100644 --- a/src/main/java/Presenter/Presenter.java +++ b/src/main/java/Presenter/Presenter.java @@ -3,17 +3,18 @@ package Presenter; import Model.Arrangement; import Model.Interval; import Model.Line; -import Model.Point; +import Presenter.Algorithms.IntersectionCounter; import Presenter.Algorithms.LeastMedianOfSquaresEstimator; import Presenter.Algorithms.RepeatedMedianEstimator; import Presenter.Algorithms.TheilSenEstimator; +import Presenter.Generator.DatasetGenerator; import Presenter.Import.DataImporter; import View.MainFrame; -import java.util.List; import javax.swing.*; import java.io.File; import java.util.LinkedList; +import java.util.List; import java.util.Observable; import java.util.Observer; @@ -276,6 +277,14 @@ public class Presenter implements Observer { importer.run(); } + public void generateDataset(){ + DatasetGenerator generator = new DatasetGenerator(); + getModel().setLines((LinkedList) generator.generateDataset()); + calcArrangementNodes(); + getView().enableFunctionality(); + + } + /*************************************************************************************************************************** * Getter und Setter Methoden ***************************************************************************************************************************/ diff --git a/src/main/java/View/MainFrame.java b/src/main/java/View/MainFrame.java index 7fd575a..52932ac 100644 --- a/src/main/java/View/MainFrame.java +++ b/src/main/java/View/MainFrame.java @@ -29,6 +29,7 @@ public class MainFrame extends JFrame { private JButton arrangementButton; private JButton importButton; + private JButton generateButton; private OutputPanel output; private MenuPanel menupanel; @@ -135,6 +136,7 @@ public class MainFrame extends JFrame { private void setTitles() { this.setTitle("Algorithmen zur Berechnung von Ausgleichgeraden"); importButton.setText("Import"); + generateButton.setText("Generiere"); arrangementButton.setText("Dualraum"); } @@ -147,6 +149,7 @@ public class MainFrame extends JFrame { private void addComponents() { pane.add(arrangementButton); pane.add(importButton); + pane.add(generateButton); northPanel.add(menupanel); northPanel.add(pane); @@ -214,6 +217,7 @@ public class MainFrame extends JFrame { //Buttons arrangementButton = new JButton(); importButton = new JButton(); + generateButton = new JButton(); } private void setIcons(){ @@ -284,6 +288,12 @@ public class MainFrame extends JFrame { }); }); + generateButton.addActionListener((ActionEvent e) -> { + SwingUtilities.invokeLater(() -> { + getPresenter().generateDataset(); + }); + }); + } public void enableFunctionality(){ diff --git a/src/test/java/Presenter/Algorithms/LeastMedianOfSquaresEstimatorTest.java b/src/test/java/Presenter/Algorithms/LeastMedianOfSquaresEstimatorTest.java index 7a3d874..b115460 100644 --- a/src/test/java/Presenter/Algorithms/LeastMedianOfSquaresEstimatorTest.java +++ b/src/test/java/Presenter/Algorithms/LeastMedianOfSquaresEstimatorTest.java @@ -8,7 +8,7 @@ import static org.junit.Assert.assertTrue; import Model.Line; import Model.Point; import Model.Interval; -import Presenter.IntersectionCounter; + import java.util.ArrayList; import java.util.LinkedList; import org.junit.Before;