예제 #1
0
        public AppLogic(MainWindow form)
        {
            owner_form = form;

            rawExperimentPlot = new DynamicsPlotModel();
            AoAExperimentPlot = new DynamicsPlotModel();
            AoAPsoPlot        = new OptHistoryPlotModel();

            rawExperiment     = new RawModelExperiment();
            aoaEvalExperiment = new AoAEvalExperiment();
            aoaPSOContext     = new AoAPsoOptimization(reportAoAPso);

            startRawCommand         = new CommandHandler();
            startRawCommand._action =
                () => AsyncStartAction(ref rawTask, doSimulRaw, startRawCommand);
            startRawCommand._canExecute =
                () => canStartByTask(ref rawTask);

            startAoAEvalCommand         = new CommandHandler();
            startAoAEvalCommand._action =
                () => AsyncStartAction(ref aoaEvalTask, doSimulAoA, startAoAEvalCommand);
            startAoAEvalCommand._canExecute =
                () => canStartByTask(ref aoaEvalTask);

            startAoAPSOCommand         = new CommandHandler();
            startAoAPSOCommand._action =
                () =>
            {
                if (startOptimizeAoAPso())
                {
                    AoAPsoPlot.clean();
                }
            };
            startAoAPSOCommand._canExecute = () => { return(true); };

            stopAoAPSOCommand         = new CommandHandler();
            stopAoAPSOCommand._action =
                () => AsyncStartAction(ref stopPsoTask, stopOptimizeAoAPso, stopAoAPSOCommand);
            stopAoAPSOCommand._canExecute = () => canStartByTask(ref stopPsoTask);

            exportAoAParamsCommand         = new CommandHandler();
            exportAoAParamsCommand._action =
                () =>
            {
                if (best_aoa_params != null)
                {
                    aoaEvalExperiment.AoA_params = new List <float>(best_aoa_params);
                }
                aoaEvalExperiment.InputLowerBounds  = new List <float>(aoaPSOContext.InputLowerBounds);
                aoaEvalExperiment.InputUpperBounds  = new List <float>(aoaPSOContext.InputUpperBounds);
                aoaEvalExperiment.OutputLowerBounds = new List <float>(aoaPSOContext.OutputLowerBounds);
                aoaEvalExperiment.OutputUpperBounds = new List <float>(aoaPSOContext.OutputUpperBounds);
            };
            exportAoAParamsCommand._canExecute = () => { return(true); };
        }
예제 #2
0
            public AoAGridExperiment(GridReport reporter)
            {
                report_dlg            = reporter;
                opt                   = new AoAPsoOptimization(reporter_internal);
                opt.sas               = 0.0f; // we'll only use aerodynamic control
                opt.aerodynamics      = AeroModel.StockAero;
                opt.dt                = 0.05f;
                opt.experiment_length = 6.0f;

                // default spans
                Cl1_min   = 0.0f;
                Cl1_max   = 200.0f;
                Cl1_count = 6;

                Cl2_min   = -10.0f;
                Cl2_max   = 10.0f;
                Cl2_count = 6;

                Cm1_min   = -10.0f;
                Cm1_max   = 5.0f;
                Cm1_count = 15;

                Cm2_min   = 0.2f;
                Cm2_max   = 10.0f;
                Cm2_count = 10;

                // array inits
                phys_space_points[0] = Cl1_points;
                phys_space_points[1] = Cl2_points;
                phys_space_points[2] = Cm1_points;
                phys_space_points[3] = Cm2_points;

                matrix_space_points[0] = A00_points;
                matrix_space_points[1] = B0_points;
                matrix_space_points[2] = A10_points;
                matrix_space_points[3] = B1_points;
            }