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); }; }
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; }