//public double[][] MainProcess()
        //{
        //    for (int i = 0; i < NumPattern; i++)
        //    {
        //        ANNModel.OutInputLayer = ArrPattern[i];
        //        DblActual_Forecast[1][i] = ANNModel.FeedforwardTraining();
        //    }

        //    DblActual_Forecast[0] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[0]);
        //    DblActual_Forecast[1] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[1]);

        //    return DblActual_Forecast;
        //}
        public double[][] MainProcessTrend()
        {
            double[] dblTempForecast;
            for (int i = 0; i < NumPattern; i++)
            {
                ANNModel.OutInputLayer = ArrPattern[i];
                dblTempForecast        = ANNModel.FeedforwardTraining();
                //Xử lý kết quả dự đoán từ 3 node về xu hướng xác định

                if (dblTempForecast[0] > dblTempForecast[1] && dblTempForecast[0] > dblTempForecast[2])
                {
                    DblActual_Forecast[1][i] = -1;// DOWNTREND
                }
                else if ((dblTempForecast[1] > dblTempForecast[2] && dblTempForecast[1] > dblTempForecast[0]))
                {
                    DblActual_Forecast[1][i] = 0;// NOTREND
                }
                else
                {
                    DblActual_Forecast[1][i] = 1;// UPTREND
                }
            }

            //DblActual_Forecast[0] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[0]);
            //DblActual_Forecast[1] = Preprocess.DenormalizeByMinMax(DblActual_Forecast[1]);

            return(DblActual_Forecast);
        }
Exemple #2
0
        /// <summary>
        /// Deserilization of run condition
        /// </summary>
        /// <param name="p"></param>
        public void ActivatePanel(ANNModel model)
        {
            //prepare graphs
            PrepareGraphs(model);

            //update model
            updateChartData(model.ActualV, model.PredictedV);
            this.zedModel.RestoreScale(zedModel.GraphPane);
        }
Exemple #3
0
        /// <summary>
        /// Deserilization of run condition
        /// </summary>
        /// <param name="p"></param>
        public void ActivatePanel(ActiveModelData data, ANNModel model)
        {
            SetParameters(data);

            //clear previous data if exist
            lossFunction.Clear();
            evalFunciton.Clear();
            actualData.Clear();
            predictedData.Clear();

            //prepare graphs
            PrepareGraphs(model);

            //update loss and eval
            for (int i = 0; i < model.LossData.Count; i++)
            {
                updateChartFitness(i, model.LossData[i], model.EvalData[i], false);
            }

            //update mdoel
            updateChartData(model.ActualT, model.PredictedT);
            zedFitness.RestoreScale(zedFitness.GraphPane);
            this.zedModel.RestoreScale(zedModel.GraphPane);
        }
        public void Show()
        {
            var page1 = new WizardPage();

            page1.hasBackButton   = false;
            page1.hasCancelButton = true;
            page1.hasNextButton   = true;
            page1.hasFinishButton = false;

            page1.cancelAction = () =>
            {
                page1.Close();
            };


            page1.Title             = "Neural Network Model Wizard";
            page1.HeaderTitle       = "Step 1 - Model Management";
            page1.HeaderDescription = "Select an Action";
            page1.FooterText        = "Click 'Next' to Continue.";

            var dl = c.GetDefaultContainer();

            dl.Width = Width;

            dl.CreateAndAddLabelRow2("Select an action:");

            dl.CreateAndAddEmptySpace();

            dl.CreateAndAddEmptySpace();

            var rl = new RadioButtonList {
                Orientation = Orientation.Vertical
            };

            rl.Spacing = new Size(10, 10);

            rl.Items.Add("Create and Train a New Model");
            rl.Items.Add("Load an Existing Model");

            rl.SelectedIndex = 0;

            page1.nextAction = () =>
            {
                switch (rl.SelectedIndex)
                {
                case 0:
                    CurrentModel = new ANNModel();
                    Application.Instance.Invoke(() => DisplayPage_LoadData());
                    break;

                case 1:
                    CurrentModel = new ANNModel();
                    Application.Instance.Invoke(() => DisplayPage_LoadModel());
                    break;
                }
                page1.Close();
            };

            dl.CreateAndAddControlRow(rl);

            var scrollable = new Scrollable {
                Content = dl, Border = BorderType.None, Size = new Size(Width, Height), ExpandContentHeight = true
            };

            page1.Init(Width, Height);
            page1.Topmost = false;
            page1.ContentContainer.Add(scrollable);
            page1.Show();
        }
 void Init()
 {
     nf           = SimObject.FlowSheet.FlowsheetOptions.NumberFormat;
     su           = SimObject.FlowSheet.FlowsheetOptions.SelectedUnitSystem;
     CurrentModel = new ANNModel();
 }
Exemple #6
0
        /// <summary>
        /// Initi props for charts
        /// </summary>
        public void PrepareGraphs(ANNModel model)
        {
            //clear prev. state
            zedModel.GraphPane.CurveList.Clear();

            //
            //
            predictedData             = new LineItem("Predicted", null, null, Color.Blue, ZedGraph.SymbolType.None, 1);
            predictedData.Symbol.Fill = new Fill(Color.Blue);
            predictedData.Symbol.Size = 1;
            //
            actualData             = new LineItem("Actual", null, null, Color.Red, ZedGraph.SymbolType.None, 1);
            actualData.Symbol.Fill = new Fill(Color.Red);
            actualData.Symbol.Size = 1;
            //
            if (model.OutputDim == 1)
            {
                predictedData             = new LineItem("Predicted", null, null, Color.Blue, ZedGraph.SymbolType.None, 1);
                predictedData.Symbol.Fill = new Fill(Color.Blue);
                predictedData.Symbol.Size = 1;
                //
                actualData             = new LineItem("Actual", null, null, Color.Red, ZedGraph.SymbolType.None, 1);
                actualData.Symbol.Fill = new Fill(Color.Red);
                actualData.Symbol.Size = 1;

                zedModel.GraphPane.YAxis.Scale.MaxAuto = true;
                zedModel.GraphPane.YAxis.Scale.MinAuto = true;

                zedModel.GraphPane.YAxis.MajorGrid.IsVisible = false;
                zedModel.GraphPane.XAxis.MajorGrid.IsVisible = false;

                zedModel.GraphPane.YAxis.Scale.MajorStepAuto = true;
                zedModel.GraphPane.YAxis.Scale.MinorStepAuto = true;

                zedModel.GraphPane.XAxis.Scale.MajorStep = 1;
                zedModel.GraphPane.XAxis.Scale.MinorStep = 0;
            }
            else
            {
                Classes = model.Classes;
                max     = model.Classes.Count - 1;

                predictedData             = new LineItem("Predicted", null, null, Color.Red, ZedGraph.SymbolType.Circle, 0);
                predictedData.Symbol.Fill = new Fill(Color.Red);
                predictedData.Symbol.Size = 5;


                actualData = new LineItem("Actual", null, null, Color.Blue, ZedGraph.SymbolType.Diamond, 0);
                actualData.Symbol.Border = new Border(Color.Blue, 0.5f);
                actualData.Symbol.Fill   = new Fill(Color.Blue);
                actualData.Symbol.Size   = 4;

                zedModel.GraphPane.YAxis.ScaleFormatEvent += YAxis_ScaleFormatEvent;

                //zedModel.GraphPane.XAxis.Scale.Min = 0;
                zedModel.GraphPane.YAxis.Scale.Min           = -0.1;
                zedModel.GraphPane.YAxis.Scale.Max           = max + 0.2;
                zedModel.GraphPane.YAxis.MajorGrid.DashOff   = 0;
                zedModel.GraphPane.YAxis.MajorGrid.IsVisible = true;
                zedModel.GraphPane.XAxis.MajorGrid.DashOff   = 0;
                zedModel.GraphPane.XAxis.MajorGrid.IsVisible = false;
                zedModel.GraphPane.YAxis.Scale.MajorStep     = 1;
                zedModel.GraphPane.YAxis.Scale.MinorStep     = 1;
                zedModel.GraphPane.XAxis.Scale.MajorStep     = 1;
                zedModel.GraphPane.XAxis.Scale.MinorStep     = 1;
            }

            zedModel.GraphPane.Title.Text                 = "ANN Iteration Simulation";
            zedModel.GraphPane.XAxis.Title.Text           = "Samples";
            zedModel.GraphPane.YAxis.Title.Text           = model.Label;
            zedModel.GraphPane.YAxis.MajorGrid.IsZeroLine = false;
            zedModel.GraphPane.CurveList.Add(actualData);
            zedModel.GraphPane.CurveList.Add(predictedData);
        }
Exemple #7
0
 public void Reset(ANNModel model)
 {
     ResetChart();
     PrepareGraphs(model);
 }
Exemple #8
0
 public void Reset(ANNModel model)
 {
     ResetChart();
     PrepareGraphs(model);
     SetParameters(ActiveModelData.GetDefaults());
 }
Exemple #9
0
 public void Run(ANNModel model, ActiveModelData setData, Action <int, float, float, (List <List <float> >, List <List <float> >, List <List <float> >), (List <List <float> >, List <List <float> >, List <List <float> >)> report, CancellationToken token)
Exemple #10
0
        //public void LoadDataSet(double[][] trainingSet)
        //{
        //    NumPattern = trainingSet.Length;
        //    ArrActual = new double[NumPattern][];
        //    ArrPredict = new double[NumPattern][];
        //    ArrPattern = new double[NumPattern][];

        //    for (int i = 0; i < NumPattern; i++)
        //    {
        //        ArrActual[i] = trainingSet[i][ANNParameterBUS.InputNode];

        //        ArrPattern[i] = new double[ANNParameterBUS.InputNode];
        //        for (int j = 0; j < ANNParameterBUS.InputNode; j++)
        //        {
        //            ArrPattern[i][j] = trainingSet[i][j];
        //        }
        //    }

        //    ANNModel = new ANNModelBUS();
        //}

        //public void Main()
        //{
        //    //Khởi tạo bộ trọng số ngẫu nhiên cho mô hình
        //    ANNModel.InitialWeight();
        //    TSCFDCostFunction();

        //    int loop = 1;
        //    bool bContinue = true;

        //    MeasureBUS measureBUS = new MeasureBUS();

        //    while (bContinue)
        //    {
        //        for (int i = 0; i < NumPattern; i++)
        //        {
        //            ANNModel.OutInputLayer = ArrPattern[i];
        //            ArrPredict[i] = ANNModel.FeedforwardTraining();
        //        }

        //        Error = measureBUS.NMSE(ArrActual, ArrPredict);

        //        if (Error <= 0.01 || loop >= ANNParameterBUS.MaxEpoch)
        //        {
        //            bContinue = false;
        //            ANNModel.SaveModelFile();
        //            //ghi nhận độ lỗi và số vòng lặp của quá trình train
        //            ANNModel.SaveError_MaxLoop(Error, loop);
        //        }
        //        else
        //        {
        //            for (int i = 0; i < NumPattern; i++)
        //            {
        //                ANNModel.OutInputLayer = ArrPattern[i];
        //                ANNModel.FeedforwardTraining();
        //                ANNModel.ErrorBackpropagationTraining(ArrDesiredValue[i]);
        //            }
        //        }

        //        loop++;
        //    }
        //}

        public void Main(int measureType)
        {
            //Khởi tạo bộ trọng số ngẫu nhiên cho mô hình
            ANNModel.InitialWeight();
            //TSCFDCostFunction();

            int  loop      = 1;
            bool bContinue = true;

            MeasureBUS measureBUS = new MeasureBUS();

            while (bContinue)
            {
                for (int i = 0; i < NumPattern; i++)
                {
                    ANNModel.OutInputLayer = ArrPattern[i];
                    ArrPredicts[i]         = ANNModel.FeedforwardTraining();
                }

                switch (measureType)
                {
                case MSE:
                    Convert2CaculateErrorMeasure();
                    Error = measureBUS.MSE(ArrTempActuals, ArrTempPredicts);
                    break;

                case NMSE:
                    Convert2CaculateErrorMeasure();
                    Error = measureBUS.NMSE(ArrTempActuals, ArrTempPredicts);
                    break;

                case RMSE:
                    Convert2CaculateErrorMeasure();
                    Error = measureBUS.RMSE(ArrTempActuals, ArrTempPredicts);
                    break;

                case SIGN:
                    Convert2CaculateErrorMeasure();
                    Error = measureBUS.Sign(ArrTempActuals, ArrTempPredicts);
                    break;
                }

                bool bResult = CompareError_Accurancy(Error, ANNParameterBUS.Accuracy, measureType);
                if (bResult == true || loop >= ANNParameterBUS.MaxEpoch)
                {
                    bContinue = false;
                    ANNModel.SaveModelFile();
                    //ghi nhận độ lỗi và số vòng lặp của quá trình train
                    ANNModel.SaveError_MaxLoop(Error, loop);
                }
                else
                {
                    for (int i = 0; i < NumPattern; i++)
                    {
                        ANNModel.OutInputLayer = ArrPattern[i];
                        ANNModel.FeedforwardTraining();
                        ANNModel.ErrorBackpropagationTraining(ArrActuals[i]);
                    }
                }

                loop++;
            }
        }