public void ReadLayout(Stream streamIn) { XmlSerializer reader = new XmlSerializer(typeof(Layout.Layout)); this.layout = (Layout.Layout)reader.Deserialize(streamIn); this.RelateObjects(this.Parent); this.Layout.OnHandWriter = new TextOutput(((SimulationManager)this.Parent).path); this.PrepareLayout(); streamIn.Close(); }
public void SetState(LayoutManager layoutManagerIn, SimulationManager managerIn) { Layout.Layout layout = layoutManagerIn.Layout; layoutManagerIn.CongestedNodes.Clear(); foreach (string node in this.congestedNodes) { layoutManagerIn.CongestedNodes.Add(layout.Nodes[node]); } this.layout.SetState(layoutManagerIn.Layout, managerIn); base.SetState(layoutManagerIn); }
private static PlotlyChart BuildPlotlyChart(string chartTitle, IEnumerable <Graph.Trace> traces) { PlotlyChart chart = Chart.Plot(traces); var layout = new Layout.Layout { title = chartTitle }; chart.WithLayout(layout); chart.Width = 800; chart.Height = 500; chart.WithXTitle("Date"); chart.WithYTitle("Value"); chart.WithLegend(true); return(chart); }
private static PlotlyChart BuildChart(string groupName, IEnumerable <Graph.Histogram> traces) { PlotlyChart chart = Chart.Plot(traces); var layout = new Layout.Layout { title = $"{groupName} RMSE", barmode = "overlay" }; chart.WithLayout(layout); chart.Width = 800; chart.Height = 500; chart.WithLegend(true); return(chart); }
/******** Variables ********/ /******** Functions ********/ public InfoState(GameStateManager gameStateManager) { this.gameStateManager = gameStateManager; Size formularSize = Program.mainForm.ClientSize; layout = new Layout.Layout(); Layout.Textbox infoBox = new Layout.Textbox("infoBox"); infoBox.anchor = Layout.Anchor.Center; infoBox.boxAdaptive = true; string infoString = "This is just a simple game to test the structure of such a project in C# \n" + "Written by Julian Heinzel \n" + "© 2015"; infoBox.text = infoString; layout.AddBox(infoBox); }
public void SetState(Unitload unitloadIn, SimulationManager managerIn) { Layout.Layout layout = managerIn.LayoutManager.Layout; unitloadIn.Alternates.Clear(); foreach (JobRoute jobRoute in this.alternates) { foreach (string operation in jobRoute.OperationNames) { jobRoute.Operations.Add(layout.Operations[operation]); } unitloadIn.Alternates.Add(jobRoute); } unitloadIn.Station = layout.Stations[this.station]; unitloadIn.Completed.Clear(); foreach (string operation in this.completed) { unitloadIn.Completed.Add(layout.Operations[operation]); } unitloadIn.Destination = layout.Stations[this.destination]; unitloadIn.Operation = layout.Operations[this.operation]; base.SetState(unitloadIn); }
/// <summary> /// Predict/Forecast based on time-series /// </summary> public void Forecast() { #region Load Data var predictedDataFrame = DataFrame.LoadCsv(CONFIRMED_DATASET_FILE); #endregion #region Display data // Top 5 Rows var topRows = predictedDataFrame.Head(5); Console.WriteLine("------- Head: Top Rows(5) -------"); topRows.PrettyPrint(); // Bottom 5 Rows var bottomRows = predictedDataFrame.Tail(5); Console.WriteLine("------- Tail: Bottom Rows(5) -------"); bottomRows.PrettyPrint(); // Description var description = predictedDataFrame.Description(); Console.WriteLine("------- Description -------"); description.PrettyPrint(); #endregion #region Visualization #region Number of Confirmed cases over Time // Number of confirmed cases over time var totalConfirmedDateColumn = predictedDataFrame.Columns[DATE_COLUMN]; var totalConfirmedColumn = predictedDataFrame.Columns[TOTAL_CONFIRMED_COLUMN]; var dates = new List <DateTime>(); var totalConfirmedCases = new List <string>(); for (int index = 0; index < totalConfirmedDateColumn.Length; index++) { dates.Add(Convert.ToDateTime(totalConfirmedDateColumn[index])); totalConfirmedCases.Add(totalConfirmedColumn[index].ToString()); } var title = "Number of Confirmed Cases over Time"; var confirmedTimeGraph = new Graph.Scattergl() { x = dates.ToArray(), y = totalConfirmedCases.ToArray(), mode = "lines+markers" }; var chart = Chart.Plot(confirmedTimeGraph); chart.WithTitle(title); // display(chart); #endregion #endregion #region Prediction #region Load Data - ML Context var context = new MLContext(); var data = context.Data.LoadFromTextFile <ConfirmedData>(CONFIRMED_DATASET_FILE, hasHeader: true, separatorChar: ','); #region Split dataset var totalRows = (int)data.GetColumn <float>("TotalConfirmed").ToList().Count; int numTrain = (int)(0.8 * totalRows); var confirmedAtSplit = (int)data.GetColumn <float>("TotalConfirmed").ElementAt(numTrain); var startingDate = data.GetColumn <DateTime>("Date").FirstOrDefault(); var dateAtSplit = data.GetColumn <DateTime>("Date").ElementAt(numTrain); IDataView trainData = context.Data.FilterRowsByColumn(data, "TotalConfirmed", upperBound: confirmedAtSplit); IDataView testData = context.Data.FilterRowsByColumn(data, "TotalConfirmed", lowerBound: confirmedAtSplit); var totalRowsTrain = (int)trainData.GetColumn <float>("TotalConfirmed").ToList().Count; var totalRowsTest = (int)testData.GetColumn <float>("TotalConfirmed").ToList().Count; Console.WriteLine($"Training dataset range : {startingDate.ToShortDateString()} to {dateAtSplit.ToShortDateString()}"); #endregion #endregion #region ML Pipeline var pipeline = context.Forecasting.ForecastBySsa( nameof(ConfirmedForecast.Forecast), nameof(ConfirmedData.TotalConfirmed), WINDOW_SIZE, SERIES_LENGTH, trainSize: numTrain, horizon: HORIZON, confidenceLevel: CONFIDENCE_LEVEL, confidenceLowerBoundColumn: nameof(ConfirmedForecast.LowerBoundConfirmed), confidenceUpperBoundColumn: nameof(ConfirmedForecast.UpperBoundConfirmed)); #endregion #region Train Model var model = pipeline.Fit(trainData); #endregion #region Evaluate IDataView predictions = model.Transform(testData); IEnumerable <float> actual = context.Data.CreateEnumerable <ConfirmedData>(testData, true) .Select(observed => observed.TotalConfirmed); IEnumerable <float> forecast = context.Data.CreateEnumerable <ConfirmedForecast>(predictions, true) .Select(prediction => prediction.Forecast[0]); var metrics = actual.Zip(forecast, (actualValue, forecastValue) => actualValue - forecastValue); var MAE = metrics.Average(error => Math.Abs(error)); // Mean Absolute Error var RMSE = Math.Sqrt(metrics.Average(error => Math.Pow(error, 2))); // Root Mean Squared Error Console.ForegroundColor = ConsoleColor.Cyan; Console.WriteLine("Evaluation Metrics"); Console.WriteLine("---------------------"); Console.WriteLine($"Mean Absolute Error: {MAE:F3}"); Console.WriteLine($"Root Mean Squared Error: {RMSE:F3}\n"); #endregion #region Save Model var forecastingEngine = model.CreateTimeSeriesEngine <ConfirmedData, ConfirmedForecast>(context); forecastingEngine.CheckPoint(context, MODEL_PATH); #endregion #region Prediction/Forecasting - 7 days var forecasts = forecastingEngine.Predict(); var forecastOuputs = context.Data.CreateEnumerable <ConfirmedData>(testData, reuseRowObject: false) .Take(HORIZON) .Select((ConfirmedData confirmedData, int index) => { float lowerEstimate = Math.Max(0, forecasts.LowerBoundConfirmed[index]); float estimate = forecasts.Forecast[index]; float upperEstimate = forecasts.UpperBoundConfirmed[index]; return(new ForecastOutput { ActualConfirmed = confirmedData.TotalConfirmed, Date = confirmedData.Date, Forecast = estimate, LowerEstimate = lowerEstimate, UpperEstimate = upperEstimate }); }); PrimitiveDataFrameColumn <DateTime> forecastDates = new PrimitiveDataFrameColumn <DateTime>("Date"); PrimitiveDataFrameColumn <float> actualConfirmedCases = new PrimitiveDataFrameColumn <float>("ActualConfirmed"); PrimitiveDataFrameColumn <float> forecastCases = new PrimitiveDataFrameColumn <float>("Forecast"); PrimitiveDataFrameColumn <float> lowerEstimates = new PrimitiveDataFrameColumn <float>("LowerEstimate"); PrimitiveDataFrameColumn <float> upperEstimates = new PrimitiveDataFrameColumn <float>("UpperEstimate"); foreach (var output in forecastOuputs) { forecastDates.Append(output.Date); actualConfirmedCases.Append(output.ActualConfirmed); forecastCases.Append(output.Forecast); lowerEstimates.Append(output.LowerEstimate); upperEstimates.Append(output.UpperEstimate); } Console.WriteLine("Total Confirmed Cases Forecast"); Console.WriteLine("---------------------"); var forecastDataFrame = new DataFrame(forecastDates, actualConfirmedCases, lowerEstimates, forecastCases, upperEstimates); forecastDataFrame.PrettyPrint(); Console.WriteLine(Environment.NewLine); Console.ForegroundColor = ConsoleColor.White; #endregion #region Prediction Visualization // var lastDate = // DateTime.Parse(dates.LastOrDefault()); var predictionStartDate = dateAtSplit.AddDays(-1); // lastDate.AddDays(1); var newDates = new List <DateTime>(); var fullDates = new List <DateTime>(); fullDates.AddRange(dates.Take(numTrain)); var fullTotalConfirmedCases = new List <string>(); fullTotalConfirmedCases.AddRange(totalConfirmedCases.Take(numTrain)); for (int index = 0; index < HORIZON; index++) { var nextDate = predictionStartDate.AddDays(index + 1); newDates.Add(nextDate); fullTotalConfirmedCases.Add(forecasts.Forecast[index].ToString()); } fullDates.AddRange(newDates); var layout = new Layout.Layout(); layout.shapes = new List <Graph.Shape> { new Graph.Shape { x0 = predictionStartDate.ToShortDateString(), x1 = predictionStartDate.ToShortDateString(), y0 = "0", y1 = "1", xref = 'x', yref = "paper", line = new Graph.Line() { color = "red", width = 2 } } }; var predictionChart = Chart.Plot( new[] { new Graph.Scattergl() { x = fullDates.ToArray(), y = fullTotalConfirmedCases.ToArray(), mode = "lines+markers" } }, layout ); predictionChart.WithTitle("Number of Confirmed Cases over Time"); // display(predictionChart); Graph.Scattergl[] scatters = { new Graph.Scattergl() { x = newDates, y = forecasts.UpperBoundConfirmed, fill = "tonexty", name = "Upper bound" }, new Graph.Scattergl() { x = newDates, y = forecasts.Forecast, fill = "tonexty", name = "Forecast" }, new Graph.Scattergl() { x = newDates, y = forecasts.LowerBoundConfirmed, fill = "tonexty", name = "Lower bound" } }; var predictionChart2 = Chart.Plot(scatters); chart.Width = 600; chart.Height = 600; // display(predictionChart2); #endregion #endregion }
/**** Functions ****/ public GameState() { layout = new Layout.Layout(); }
public async Task testPLot() { var url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"; var cols = new string[] { "sepal_length", "sepal_width", "petal_length", "petal_width", "flower_type" }; var df = await DataFrame.FromWebAsync(url, sep : ',', names : cols); //calculate two new columns into dataset df.AddCalculatedColumns(new string[] { "SepalArea", "PetalArea" }, (r, i) => { var aRow = new object[2]; aRow[0] = Convert.ToSingle(r["sepal_width"]) * Convert.ToSingle(r["sepal_length"]); aRow[1] = Convert.ToSingle(r["petal_width"]) * Convert.ToSingle(r["petal_length"]); return(aRow); }); var featuredDf = df["SepalArea", "PetalArea", "flower_type"]; var chart = Chart.Plot( new Scatter[] { new Scatter { x = df.Filter("flower_type", "Iris-virginica", FilterOperator.Equal)["SepalArea"], y = df.Filter("flower_type", "Iris-virginica", FilterOperator.Equal)["PetalArea"], mode = "markers", name = "Iris-virginica", marker = new Marker() { color = 2, colorscale = "Jet" } }, new Scatter { x = df.Filter("flower_type", "Iris-versicolor", FilterOperator.Equal)["SepalArea"], y = df.Filter("flower_type", "Iris-versicolor", FilterOperator.Equal)["PetalArea"], mode = "markers", name = "Iris-versicolor", marker = new Marker() { color = 2, colorscale = "Jet" } }, new Scatter { x = df.Filter("flower_type", "Iris-setosa", FilterOperator.Equal)["SepalArea"], y = df.Filter("flower_type", "Iris-setosa", FilterOperator.Equal)["PetalArea"], mode = "markers", name = "Iris-setosa", marker = new Marker() { color = 3, colorscale = "Jet" } }, } ); var layout = new Layout.Layout() { title = "Plot Sepal vs. Petal Area & color scale on flower type" }; chart.WithLayout(layout); chart.WithLegend(true); chart.WithLabels(new string[3] { "Iris-virginica", "Iris-versicolor", "Iris-setosa" }); chart.WithXTitle("Sepal Area"); chart.WithYTitle("Petal Area"); chart.Width = 800; chart.Height = 400; chart.Show(); }
/******** Functions ********/ public HighscoreState(GameStateManager gameStateManager) { this.gameStateManager = gameStateManager; timeRows = new List <string>(); rushRows = new List <string>(); // Creating layout. layout = new Layout.Layout(); // Vertical division. Layout.Box upperBox = new Layout.Box("upperBox"); upperBox.percentageSize = new SizeF(100, 20); upperBox.visible = false; Layout.Box lowerBox = new Layout.Box("lowerBox"); lowerBox.percentageSize = new SizeF(100, 80); lowerBox.location = new Point(0, (int)((float)lowerBox.parent.height / 10 * 2)); lowerBox.visible = false; // Horizontal division. Layout.Box leftBox = new Layout.Box("leftBox"); leftBox.parent = lowerBox; leftBox.percentageSize = new SizeF((float)33.3, 100); leftBox.anchor = Layout.Anchor.Left | Layout.Anchor.Top; leftBox.visible = false; Layout.Box centerBox = new Layout.Box("centerBox"); centerBox.parent = lowerBox; centerBox.percentageSize = new SizeF((float)33.3, 100); centerBox.anchor = Layout.Anchor.CenterX; centerBox.visible = false; Layout.Box rightBox = new Layout.Box("rightBox"); rightBox.parent = lowerBox; rightBox.percentageSize = new SizeF((float)33.3, 100); rightBox.anchor = Layout.Anchor.Right | Layout.Anchor.Top; rightBox.visible = false; // Lists. Layout.Textbox caption = new Layout.Textbox("caption"); caption.borderLine = new Pen(Brushes.Black, 3); caption.font = new Font("ARIAL", 60); caption.text = "Highscore"; caption.parent = upperBox; caption.anchor = Layout.Anchor.Center; Layout.Box leftList = new Layout.Box("leftList"); leftList.parent = leftBox; leftList.y = 100; leftList.width = 300; leftList.height = 400; leftList.anchor = Layout.Anchor.CenterX; Layout.Box centerList = new Layout.Box("centerList"); centerList.parent = centerBox; centerList.y = 100; centerList.width = 300; centerList.height = 400; centerList.anchor = Layout.Anchor.CenterX; // Captions. Layout.Textbox leftCaption = new Layout.Textbox("leftCaption"); leftCaption.parent = leftBox; leftCaption.text = "Time mode:"; leftCaption.x = leftList.x; Layout.Textbox centerCaption = new Layout.Textbox("centerCaption"); centerCaption.parent = centerBox; centerCaption.text = "Rush mode:"; centerCaption.x = centerList.x; // Adding all to layout. layout.AddBox(upperBox); layout.AddBox(lowerBox); layout.AddBox(leftBox); layout.AddBox(centerBox); layout.AddBox(rightBox); layout.AddBox(leftList); layout.AddBox(centerList); layout.AddBox(caption); layout.AddBox(leftCaption); layout.AddBox(centerCaption); }
private void Form1_Load(object sender, EventArgs e) { ElementsWrk = new Layout.Layout(this.panel1,toolStripStatusLabel1); newLaoutOrder = new Layout.LayoutOrder(this.panel1, toolStripStatusLabel1); TZOrder = new UchetUSP.Layout.LayoutOrderTZ(this.panel1, toolStripStatusLabel1); ColdStatistic = new Layout.LayoutColdStats(this.panel1, toolStripStatusLabel1); AssLayout = new UchetUSP.Layout.LayoutAss(this.panel1, toolStripStatusLabel1); if (String.Compare(Program.DocIdString, "0") == 0)//запускается в слуаче отсутствия номера передаваемого документа { if (ActiveStatus != 5) { ActiveStatus = 5; CheckDispose(); newLaoutOrder = new Layout.LayoutOrder(this.panel1, toolStripStatusLabel1); newLaoutOrder.LayoutMainForm(); } //TODO добавить данные о юзере setSizeForm(); UpdateMenu(); } else {//запускается в случае если передан номер документа if ((String.Compare(Program.EditRighsString, "1") == 0) && (!UchetUSP.AccessUser.AccessUser.GetEditRights(Program.DocIdString)))//разрешение на действие если пользователь имеет доступ и документ не был подписан { this.Visible = false; //запускается если ТЗ было оформлено if (SQLOracle.exist("USP_TZ_DATA", "ID_DOC = '" + Program.DocIdString + "'")) { //правильно ли передан 5ый параметр оснастки и кода устверждения if (Program.DocIdUtv.Length > 0) { //если код утверждения = 0 (разработка) if (String.Compare(Program.DocIdUtv[0].ToString(), "0") == 0) { if (ActiveStatus != 1) { ActiveStatus = 1; CheckDispose(); TZOrder = new Layout.LayoutOrderTZ(this.panel1, toolStripStatusLabel1); TZOrder.LayoutTZ(); TZOrder.loadTZForm(1); TZOrder.SetDataGridRowSelect(Program.DocIdString); } }//если код утверждения = 1 или 2 (архив или утвержденные) else if ((String.Compare(Program.DocIdUtv[0].ToString(), "2") == 0)||(String.Compare(Program.DocIdUtv[0].ToString(), "1") == 0)) { if (ActiveStatus != 1) { ActiveStatus = 1; CheckDispose(); TZOrder = new Layout.LayoutOrderTZ(this.panel1, toolStripStatusLabel1); TZOrder.LayoutTZ(); TZOrder.loadTZForm(3); TZOrder.SetDataGridRowSelect(Program.DocIdString); } } } } else { //если документ не оформлен using (CreateTZ NewTZForm = new CreateTZ(0,0, Program.DocIdString)) { NewTZForm.ShowDialog(); Application.Exit(); } } } else //запрет на действие (3ий параметр) { //если документ был оформлен if (SQLOracle.exist("USP_TZ_DATA", "ID_DOC = '" + Program.DocIdString + "'")) { if (ActiveStatus != 1) { ActiveStatus = 1; CheckDispose(); TZOrder = new Layout.LayoutOrderTZ(this.panel1, toolStripStatusLabel1); TZOrder.LayoutTZ(); TZOrder.loadTZForm(3); TZOrder.SetDataGridRowSelect(Program.DocIdString); } } else//если документ не был оформлен { if (ActiveStatus != 1) { ActiveStatus = 1; CheckDispose(); TZOrder = new Layout.LayoutOrderTZ(this.panel1, toolStripStatusLabel1); TZOrder.LayoutTZ(); TZOrder.loadTZForm(4); TZOrder.SetDataGridRowSelect(Program.DocIdString); } } } } }
private void удалитьЭлементToolStripMenuItem1_Click(object sender, EventArgs e) { if (AccessUser.AccessUser.GetRLType(1)) { if (ActiveStatus != 4) { ActiveStatus = 4; CheckDispose(); ElementsWrk = new Layout.Layout(this.panel1, toolStripStatusLabel1); ElmInform.ViewInform(ElementsWrk.LayoutElemUSP(3)); } } else { MessageBox.Show("У Вас нет прав изменения информации по количеству элементов на складе!"); } }
private void редактироватьToolStripMenuItem_Click(object sender, EventArgs e) { if (AccessUser.AccessUser.GetRLType(1)) { if (ActiveStatus != 3) { ActiveStatus = 3; CheckDispose(); ElementsWrk = new Layout.Layout(this.panel1, toolStripStatusLabel1); ElmInform.ViewInform(ElementsWrk.LayoutElemUSP(2)); } } else { MessageBox.Show("У Вас нет прав корректировки информации по элементам УСП!"); } }
private void общаяИнформацияПоЭлементамУСПToolStripMenuItem_Click(object sender, EventArgs e) { if (ActiveStatus != 2) { ActiveStatus = 2; CheckDispose(); ElementsWrk = new Layout.Layout(this.panel1,toolStripStatusLabel1); ElmInform.ViewInform(ElementsWrk.LayoutElemUSP(1)); } }