Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 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);
 }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        /******** 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);
        }
Ejemplo n.º 6
0
 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
        }
Ejemplo n.º 8
0
        /**** Functions ****/

        public GameState()
        {
            layout = new Layout.Layout();
        }
Ejemplo n.º 9
0
        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();
        }
Ejemplo n.º 10
0
        /******** 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);
        }
Ejemplo n.º 11
0
        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);
                        }

                    }

                }

            }
        }
Ejemplo n.º 12
0
        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("У Вас нет прав изменения информации по количеству элементов на складе!");
            }
        }
Ejemplo n.º 13
0
        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("У Вас нет прав корректировки информации по элементам УСП!");
            }
        }
Ejemplo n.º 14
0
        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));

            }
        }