2222
2323% Edit the above text to modify the response to help ma_LvdMainGUI
2424
25- % Last Modified by GUIDE v2.5 14-Oct-2018 14:43:52
25+ % Last Modified by GUIDE v2.5 14-Oct-2018 15:17:09
2626
2727% Begin initialization code - DO NOT EDIT
2828gui_Singleton = 1 ;
@@ -895,31 +895,227 @@ function optimSettingsMenu_Callback(hObject, eventdata, handles)
895895% hObject handle to optimSettingsMenu (see GCBO)
896896% eventdata reserved - to be defined in a future version of MATLAB
897897% handles structure with handles and user data (see GUIDATA)
898+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
898899
900+ parallelOptim = lvdData .settings .optUsePara ;
901+ if (parallelOptim == true )
902+ set(handles .optUseParaMenu , ' Checked' , ' on' );
903+ else
904+ set(handles .optUseParaMenu , ' Checked' , ' off' );
905+ end
899906
900907% --------------------------------------------------------------------
901908function optAlgorithmMenu_Callback(hObject , eventdata , handles )
902909% hObject handle to optAlgorithmMenu (see GCBO)
903910% eventdata reserved - to be defined in a future version of MATLAB
904911% handles structure with handles and user data (see GUIDATA)
912+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
905913
914+ optAlgo = lvdData .settings .optAlgo ;
915+ switch optAlgo
916+ case LvdOptimAlgorithmEnum .InteriorPoint
917+ set(handles .optInteriorPointAlgoMenu , ' Checked' , ' on' );
918+ set(handles .optSqpAlgoMenu , ' Checked' , ' off' );
919+ set(handles .optActiveSetAlgoMenu , ' Checked' , ' off' );
920+ case LvdOptimAlgorithmEnum .SQP
921+ set(handles .optInteriorPointAlgoMenu , ' Checked' , ' off' );
922+ set(handles .optSqpAlgoMenu , ' Checked' , ' on' );
923+ set(handles .optActiveSetAlgoMenu , ' Checked' , ' off' );
924+ case LvdOptimAlgorithmEnum .ActiveSet
925+ set(handles .optInteriorPointAlgoMenu , ' Checked' , ' off' );
926+ set(handles .optSqpAlgoMenu , ' Checked' , ' off' );
927+ set(handles .optActiveSetAlgoMenu , ' Checked' , ' on' );
928+ otherwise
929+ error(' Unknown optimization algorithm when setting menu checkmark.' );
930+ end
906931
907932% --------------------------------------------------------------------
908933function optUseParaMenu_Callback(hObject , eventdata , handles )
909934% hObject handle to optUseParaMenu (see GCBO)
910935% eventdata reserved - to be defined in a future version of MATLAB
911936% handles structure with handles and user data (see GUIDATA)
912-
937+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
938+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
939+
940+ if strcmp(get(gcbo , ' Checked' ),' on' )
941+ set(gcbo , ' Checked' , ' off' );
942+ lvdData.settings.optUsePara = false ;
943+ writeOutput(' Parallel optimization mode disabled.' ,' append' );
944+ else
945+ set(gcbo , ' Checked' , ' on' );
946+ lvdData.settings.optUsePara = true ;
947+
948+ drawnow ;
949+ p = gcp(' nocreate' );
950+ if (isempty(p ))
951+ try
952+ h = msgbox(' Attempting to start parallel computing workers. Please wait...' );
953+ pp= parpool(' local' ,feature(' numCores' ));
954+ pp.IdleTimeout = 99999 ; % we don't want the pool to shutdown
955+ if (isvalid(h ))
956+ close(h );
957+ end
958+ writeOutput(' Parallel optimization mode enabled.' ,' append' );
959+ catch ME % #ok<NASGU>
960+ if (ishandle(h ))
961+ close(h );
962+ end
963+ msgbox(' Parallel mode start failed. Optimization will run in serial.' );
964+ end
965+ else
966+ writeOutput(' Parallel optimization mode enabled.' ,' append' );
967+ end
968+ end
913969
914970% --------------------------------------------------------------------
915971function integrationAbsTolMenu_Callback(hObject , eventdata , handles )
916972% hObject handle to integrationAbsTolMenu (see GCBO)
917973% eventdata reserved - to be defined in a future version of MATLAB
918974% handles structure with handles and user data (see GUIDATA)
919-
975+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
976+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
977+
978+ input_str = sprintf([' Enter the desired integration absolute error tolerance:\n ' ,...
979+ ' (Minimum = 1E-14, Maximum = 1E-2)\n ' ,...
980+ ' (This will influence script execution speed.)' ]);
981+ str = inputdlg(input_str , ' Absolute Error Tolerance' , [1 75 ], {num2str(lvdData .settings .intAbsTol ,' %6.6E ' )});
982+ if (isempty(str ))
983+ return ;
984+ end
985+
986+ str = str{1 };
987+
988+ if (checkStrIsNumeric(str ) && str2double(str ) >= 1E- 14 && str2double(str ) <= 1E-2 )
989+ writeOutput(sprintf(' Setting integration absolute error tolerance to %s .' , str ),' append' );
990+
991+ lvdData.settings.intAbsTol = str2double(str );
992+
993+ runScript(handles , lvdData );
994+ lvd_processData(handles );
995+ else
996+ writeOutput(sprintf(' Could not set the desired integration absolute error tolerance. "%s " is an invalid entry.' , str ),' append' );
997+ beep ;
998+ end
920999
9211000% --------------------------------------------------------------------
9221001function integrationRelTolMenu_Callback(hObject , eventdata , handles )
9231002% hObject handle to integrationRelTolMenu (see GCBO)
9241003% eventdata reserved - to be defined in a future version of MATLAB
9251004% handles structure with handles and user data (see GUIDATA)
1005+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1006+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1007+
1008+ input_str = sprintf([' Enter the desired integration relative error tolerance:\n ' ,...
1009+ ' (Minimum = 1E-14, Maximum = 1E-2)\n ' ,...
1010+ ' (This will influence script execution speed.)' ]);
1011+ str = inputdlg(input_str , ' Relative Error Tolerance' , [1 75 ], {num2str(lvdData .settings .intRelTol ,' %6.6E ' )});
1012+ if (isempty(str ))
1013+ return ;
1014+ end
1015+
1016+ str = str{1 };
1017+
1018+ if (checkStrIsNumeric(str ) && str2double(str ) >= 1E- 14 && str2double(str ) <= 1E-2 )
1019+ writeOutput(sprintf(' Setting integration relative error tolerance to %s .' , str ),' append' );
1020+
1021+ lvdData.settings.intRelTol = str2double(str );
1022+
1023+ runScript(handles , lvdData );
1024+ lvd_processData(handles );
1025+ else
1026+ writeOutput(sprintf(' Could not set the desired integration relative error tolerance. "%s " is an invalid entry.' , str ),' append' );
1027+ beep ;
1028+ end
1029+
1030+ % --------------------------------------------------------------------
1031+ function intMinAltitudeMenu_Callback(hObject , eventdata , handles )
1032+ % hObject handle to intMinAltitudeMenu (see GCBO)
1033+ % eventdata reserved - to be defined in a future version of MATLAB
1034+ % handles structure with handles and user data (see GUIDATA)
1035+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1036+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1037+
1038+ input_str = sprintf([' Enter the desired minimum integration altitude (km):\n ' ,...
1039+ ' (Minimum = -Inf km, Maximum = 0 km)\n ' , ...
1040+ ' (Script execution stops if the vehicle reaches this altitude.)' ]);
1041+ str = inputdlg(input_str , ' Minimum Integration Altitude' , [1 75 ], {fullAccNum2Str(lvdData .settings .minAltitude )});
1042+ if (isempty(str ))
1043+ return ;
1044+ end
1045+
1046+ str = str{1 };
1047+
1048+ if (checkStrIsNumeric(str ) && str2double(str ) >= - Inf && str2double(str ) <= 0.0 )
1049+ writeOutput(sprintf(' Setting minimum integration altitude to %s km.' , str ),' append' );
1050+
1051+ lvdData.settings.minAltitude = str2double(str );
1052+
1053+ runScript(handles , lvdData );
1054+ lvd_processData(handles );
1055+ else
1056+ writeOutput(sprintf(' Could not set the desired minimum integration altitude. "%s " is an invalid entry.' , str ),' append' );
1057+ beep ;
1058+ end
1059+
1060+ % --------------------------------------------------------------------
1061+ function intMaxSimTimeMenu_Callback(hObject , eventdata , handles )
1062+ % hObject handle to intMaxSimTimeMenu (see GCBO)
1063+ % eventdata reserved - to be defined in a future version of MATLAB
1064+ % handles structure with handles and user data (see GUIDATA)
1065+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1066+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1067+
1068+ input_str = sprintf([' Enter the desired maximum simulation time (sec):\n ' ,...
1069+ ' (Minimum = 0.0 sec, Maximum = Inf sec)\n ' , ...
1070+ ' (Script execution stops if the duration of the mission exceeds this value.)' ]);
1071+ str = inputdlg(input_str , ' Maximum Simulation Time' , [1 75 ], {fullAccNum2Str(lvdData .settings .simMaxDur )});
1072+ if (isempty(str ))
1073+ return ;
1074+ end
1075+
1076+ str = str{1 };
1077+
1078+ if (checkStrIsNumeric(str ) && str2double(str ) >= 0 && str2double(str ) <= Inf )
1079+ writeOutput(sprintf(' Setting maximum simulation time to %s sec.' , str ),' append' );
1080+
1081+ lvdData.settings.simMaxDur = str2double(str );
1082+
1083+ runScript(handles , lvdData );
1084+ lvd_processData(handles );
1085+ else
1086+ writeOutput(sprintf(' Could not set the desired maximum simulation time. "%s " is an invalid entry.' , str ),' append' );
1087+ beep ;
1088+ end
1089+
1090+ % --------------------------------------------------------------------
1091+ function optInteriorPointAlgoMenu_Callback(hObject , eventdata , handles )
1092+ % hObject handle to optInteriorPointAlgoMenu (see GCBO)
1093+ % eventdata reserved - to be defined in a future version of MATLAB
1094+ % handles structure with handles and user data (see GUIDATA)
1095+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1096+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1097+
1098+ lvdData.settings.optAlgo = LvdOptimAlgorithmEnum .InteriorPoint ;
1099+ writeOutput(' Optimization algorithm changed to interior point.' ,' append' );
1100+
1101+ % --------------------------------------------------------------------
1102+ function optSqpAlgoMenu_Callback(hObject , eventdata , handles )
1103+ % hObject handle to optSqpAlgoMenu (see GCBO)
1104+ % eventdata reserved - to be defined in a future version of MATLAB
1105+ % handles structure with handles and user data (see GUIDATA)
1106+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1107+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1108+
1109+ lvdData.settings.optAlgo = LvdOptimAlgorithmEnum .SQP ;
1110+ writeOutput(' Optimization algorithm changed to SQP.' ,' append' );
1111+
1112+ % --------------------------------------------------------------------
1113+ function optActiveSetAlgoMenu_Callback(hObject , eventdata , handles )
1114+ % hObject handle to optActiveSetAlgoMenu (see GCBO)
1115+ % eventdata reserved - to be defined in a future version of MATLAB
1116+ % handles structure with handles and user data (see GUIDATA)
1117+ lvdData = getappdata(handles .ma_LvdMainGUI ,' lvdData' );
1118+ writeOutput = getappdata(handles .ma_LvdMainGUI ,' write_to_output_func' );
1119+
1120+ lvdData.settings.optAlgo = LvdOptimAlgorithmEnum .ActiveSet ;
1121+ writeOutput(' Optimization algorithm changed to active set.' ,' append' );
0 commit comments