diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java index 69d3c177179c33f5b99c24b959d20fb0d65a06ac..4b3e3dcfe75e101862d4dd7b387bdaf6e4b71206 100644 --- a/src/main/java/com/application/DB/Constants.java +++ b/src/main/java/com/application/DB/Constants.java @@ -33,7 +33,7 @@ public final class Constants { public static final double CONFIDENCE_INTERVAL = 0.95; // Non linear regression - public static final double ADJUST_REGRESSION = 2.5; + public static final double ADJUST_REGRESSION = 5.0; // Current sawmill settings; public static final String PROJECT_ID = "sf-drying-optimization"; diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java index e68a03d0ef2fc42cb12737f470226075885266cb..3a802dfee23114246d091ce2837f17ecb302da9b 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -16,6 +16,7 @@ import org.jblas.Solve; import java.util.*; +import static com.application.DB.Constants.ADJUST_REGRESSION; import static com.application.DB.Constants.CONFIDENCE_INTERVAL; public class LineChartFunctionality { @@ -61,7 +62,7 @@ public class LineChartFunctionality { for (Map.Entry<Integer, ArrayList<Double>> entry : multiMap.entrySet()) { //System.out.printf("\nIndex: \t%s\t\t\tkWh: \t%s\n", entry.getKey(), entry.getValue()); - System.out.println("entry: "+entry); + //System.out.println("entry: "+entry); //if(entry.getValue().size()>1){ SummaryStatistics stats = new SummaryStatistics(); for (double val : entry.getValue()) { @@ -75,7 +76,7 @@ public class LineChartFunctionality { //System.out.println(String.format("Mean: %f", stats.getMean())); double lower = stats.getMean() - ci; double upper = stats.getMean() + ci; - System.out.println(String.format("Confidence Interval "+CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper)); + //System.out.println(String.format("Confidence Interval "+CONFIDENCE_INTERVAL*100+"%%: %f, %f", lower, upper)); // Deletes entries if they are out of bounds with the confidence interval entry.getValue().removeIf(value -> Double.compare(value, lower) < 0 || Double.compare(value, upper) > 0); @@ -172,9 +173,13 @@ public class LineChartFunctionality { Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceXAxis = statistics(endOfGraphPointsXAxis); Map<Integer, ArrayList<Double>> endOfGraphPointsConfidenceYaxis = statistics(endOfGraphPointsYAxis); - System.out.println(endOfGraphPointsConfidenceXAxis); + System.out.println("X-axis:"+ endOfGraphPointsConfidenceXAxis); + System.out.println("X-axis size: "+ endOfGraphPointsConfidenceXAxis.size()); + System.out.println("------------"); + System.out.println("Y-axis:"+ endOfGraphPointsConfidenceYaxis); + System.out.println("Y-axis size: "+ endOfGraphPointsConfidenceYaxis.size()); + System.out.println("------------"); - System.out.println("Size of list: "+ endOfGraphPointsConfidenceXAxis.size()); dataPointsXAxis = 0; for (Map.Entry<Integer, ArrayList<Double>> entry : endOfGraphPointsConfidenceXAxis.entrySet()) { @@ -274,10 +279,22 @@ public class LineChartFunctionality { ))); */ + /* regressionSeries.getData().add(new XYChart.Data<String, Number>( String.valueOf(i), getCubicNonLinearRegression(confidenceIntervalData,i) )); + + */ + regressionSeries.getData().add(new XYChart.Data<String, Number>( + String.valueOf(i), + getNonLinearRegression( + confidenceIntervalData, + Math.sqrt(Math.pow(simpleRegression.getIntercept(),2)), + simpleRegression.getSlope(), + i, + getDataPointsXAxis() + ))); } updateLineChart(regressionSeries); //lineChart.setOpacity(1); @@ -358,10 +375,10 @@ public class LineChartFunctionality { } - public static double getNonLinearRegression(Map<Integer, ArrayList<Double>> confidenceIntervalData, double y0, double alpha, double beta, double j, double n) { + public static double getNonLinearRegression(Map<Integer, ArrayList<Double>> confidenceIntervalData, double y0, double alpha, double j, double n) { //return Math.exp(intercept+slope*i)/(1+Math.exp(intercept+slope*i)); - /* + double beta = 0.0; //double n = confidenceIntervalData.size(); for (Map.Entry<Integer, ArrayList<Double>> entry : confidenceIntervalData.entrySet()) { @@ -372,20 +389,28 @@ public class LineChartFunctionality { } } - */ + beta = getDataPointsYAxis()+y0; + //System.out.println("Beta: " +beta); + //System.out.println("y0: "+y0); + + //System.out.println("maxYValue: " + maxYValue); //System.out.println("j*n: "+j/n); //double p_t = (((beta * y0))/(y0 +((beta- y0)*Math.exp(-alpha*j/n/(ADJUST_REGRESSION)))))-y0; //Beste til nå - double p_t = (((beta * y0))/(y0 +((beta- y0)*Math.exp(-alpha*(j-n)))))-y0; //Beste til nå + double p_t = (((beta * y0))/(y0 +((beta- y0)*Math.exp(-alpha*j/n/((alpha/10))))))-y0; //Beste til nå + //double p_t = (((beta * y0))/(y0 +((beta- y0)*Math.exp(-alpha*(j-n)))))-y0; //Beste til nå + /* System.out.println("---------------------------"); System.out.println("y0: " + y0); System.out.println("Alpha: " + alpha); System.out.println("Beta: " + beta); //System.out.println(p_t); + */ + return p_t; diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 6ab4831dd66da4fccc84037685eb5903cc3b99f8..12ab7699ea382eb7614e21f001a11a3e43fd31e4 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -8,6 +8,7 @@ import com.application.GUI.LineChartFunctionality; import javafx.application.Application; import javafx.application.Platform; +import javafx.geometry.Pos; import javafx.scene.chart.LineChart; import javafx.scene.control.*; import javafx.scene.image.Image; @@ -42,6 +43,7 @@ public class Main extends Application { private HBox logoBar; private VBox sideBar; private MenuBar menuBar; + private HBox bottomBar; private static TextField treeSpeciesText; private static TextField dimensionsText; @@ -74,6 +76,7 @@ public class Main extends Application { this.logoBar = new HBox(); this.sideBar = new VBox(); this.menuBar = new MenuBar(); + this.bottomBar = new HBox(); } /** @@ -90,6 +93,7 @@ public class Main extends Application { this.menuBar = createMenuBar(); this.sideBar = createSideBar(); this.logoBar = createLogoBar(); + this.bottomBar = createBottomBar(); LineChart<String, Number> lineChart = LineChartFunctionality.getLineChart(); @@ -98,6 +102,7 @@ public class Main extends Application { this.logoBar.setId("logoBar"); this.menuBar.setId("menuBar"); this.sideBar.setId("sideBar"); + this.bottomBar.setId("bottomBar"); lineChart.setId("lineChart"); @@ -112,6 +117,7 @@ public class Main extends Application { root.setTop(this.topBar); root.setLeft(this.sideBar); root.setCenter(lineChart); + root.setBottom(this.bottomBar); VBox.setVgrow(this.logoBar, Priority.ALWAYS); @@ -306,6 +312,17 @@ public class Main extends Application { return new HBox(imageViewM, region1, imageViewTitle, region2); } + private HBox createBottomBar(){ + HBox hBox = new HBox(); + hBox.setId("bottomBar"); + Button button = new Button("Test"); + button.setId("bottomBarButtons"); + //button.setAlignment(Pos.CENTER_RIGHT); + hBox.getChildren().addAll(button); + hBox.getStylesheets().add(getClass().getResource("/com.application/CSS/styleSheet.css").toExternalForm()); + return hBox; + } + diff --git a/src/main/resources/com.application/CSS/styleSheet.css b/src/main/resources/com.application/CSS/styleSheet.css index 70d9445d4fce81779c39abcc8e07c3b966ab826c..7480586c4a83eba4ce23254f6e83e665888b9879 100644 --- a/src/main/resources/com.application/CSS/styleSheet.css +++ b/src/main/resources/com.application/CSS/styleSheet.css @@ -23,6 +23,7 @@ */ #sideBar { -fx-pref-width: 250; + -fx-pref-height: infinity; } #sideBarLabel { @@ -74,6 +75,23 @@ -fx-text-fill: white; } +/* + BottomBar styling + */ +#bottomBar { + -fx-pref-width: infinity; + -fx-pref-height: 50; +} + +#bottomBarButtons { + -fx-alignment: center-right; + -fx-tile-alignment: center-right; + -fx-text-fill: rgba(12, 76, 81, 1); + -fx-background-color: red; + -fx-pref-width: 50; + -fx-pref-height: 25; +} + /* Input popup window */ diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class index 3b053db686018b72a73f6e868c762198503a508d..dafe01bf2607e10a09113e86a08ad59fcac4307c 100644 Binary files a/target/classes/com/application/DB/Constants.class and b/target/classes/com/application/DB/Constants.class differ diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class index 7fed56545a4d3c4f04d50dafc1845a293cbaba83..b5ae7ee8bdacb878f62fafbaa3bc24911ff09375 100644 Binary files a/target/classes/com/application/GUI/LineChartFunctionality.class and b/target/classes/com/application/GUI/LineChartFunctionality.class differ diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index 4384032845900a265d6cb708dec38d4859ef4179..bbd12e82197545541306e3ec5c8db9559fde98b6 100644 Binary files a/target/classes/com/application/Main$1WorkerThread.class and b/target/classes/com/application/Main$1WorkerThread.class differ diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index 96ea17c1cd09d33cda6b1ce803c8c62b301f044a..e329d02c168a11cda60cf107ae80c2494383cbeb 100644 Binary files a/target/classes/com/application/Main.class and b/target/classes/com/application/Main.class differ