Skip to content

Commit 3a1cd4b

Browse files
committed
LVD:
1) Rewrote the OptimizationVarsNearBounds validator 2) UI for new settings menu options
1 parent 90c375a commit 3a1cd4b

3 files changed

Lines changed: 120 additions & 52 deletions

File tree

helper_methods/ksptot_ma/launch_vehicle_designer/classes/Validation/validators/@OptimizationVariablesNearBoundsValidator/OptimizationVariablesNearBoundsValidator.m

Lines changed: 70 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -32,56 +32,16 @@
3232
return;
3333
end
3434

35-
lv = obj.lvdData.launchVehicle;
36-
[lvVars,~] = lv.getActiveOptVars();
37-
useLv = false;
38-
if(not(isempty(lvVars)))
39-
inds = find(ismember(vars,lvVars));
40-
if(not(isempty(inds)))
41-
if(ismember(inds,warnInd))
42-
useLv = true;
43-
end
44-
end
45-
end
46-
47-
48-
initStateModel = obj.lvdData.initStateModel;
49-
initStateModelOptVars = initStateModel.getAllOptVars();
50-
useInitState = false;
51-
if(not(isempty(initStateModelOptVars)))
52-
inds = zeros(size(vars));
53-
for(i=1:length(initStateModelOptVars))
54-
inds = inds | ismember(vars,initStateModelOptVars(i));
55-
end
56-
57-
inds = find(inds);
58-
if(not(isempty(inds)))
59-
if(any(ismember(inds,warnInd)))
60-
useInitState = true;
61-
end
62-
end
63-
end
64-
6535
eventNums = [];
66-
67-
numEvents = obj.lvdData.script.getTotalNumOfEvents();
68-
for(i=1:numEvents)
69-
event = obj.lvdData.script.getEventForInd(i);
70-
[tf, eVars] = event.hasActiveOptVars();
36+
useLv = false;
37+
useIs = false;
38+
for(i=1:length(warnInd))
39+
var = vars(warnInd(i));
7140

72-
if(tf)
73-
inds = zeros(size(vars));
74-
for(j=1:length(eVars))
75-
inds = inds | ismember(vars,eVars(j));
76-
end
77-
78-
inds = find(inds);
79-
if(not(isempty(inds)))
80-
if(ismember(inds,warnInd))
81-
eventNums(end+1) = i; %#ok<AGROW>
82-
end
83-
end
84-
end
41+
evtNum = getEventNumberForVar(var, obj.lvdData);
42+
useLv = useLv | isVarInLaunchVehicle(var, obj.lvdData);
43+
useIs = useIs | isVarInInitialState(var, obj.lvdData);
44+
eventNums = horzcat(eventNums,evtNum); %#ok<AGROW>
8545
end
8646

8747
if(not(isempty(eventNums)))
@@ -91,21 +51,80 @@
9151
end
9252

9353
combStrCell = {};
54+
9455
if(useLv)
9556
combStrCell{end+1} = 'Launch Vehicle';
9657
end
9758

98-
if(useInitState)
59+
if(useIs)
9960
combStrCell{end+1} = 'Initial State';
10061
end
10162

63+
if(not(isempty(eventStr)))
64+
combStrCell{end+1} = eventStr;
65+
end
66+
10267
combStr = strjoin(combStrCell,', ');
10368
if(not(isempty(combStr)))
104-
combStr = sprintf('%s, ',combStr);
69+
combStr = sprintf('%s',combStr);
10570
end
10671

107-
str = sprintf('Variables are near optimization bounds on some events (Events: %s%s)', combStr, eventStr);
72+
str = sprintf('Variables are near optimization bounds on some events (Events: %s)', combStr);
10873
warnings(end+1) = LaunchVehicleDataValidationWarning(str);
10974
end
11075
end
76+
end
77+
78+
function evtNum = getEventNumberForVar(var, lvdData)
79+
evtNum = [];
80+
81+
numEvents = lvdData.script.getTotalNumOfEvents();
82+
for(i=1:numEvents)
83+
event = lvdData.script.getEventForInd(i);
84+
85+
[~, eVars] = event.hasActiveOptVars();
86+
87+
for(j=1:length(eVars))
88+
eVar = eVars(j);
89+
90+
if(strcmpi(class(var), class(eVar)) && var == eVar)
91+
evtNum = i;
92+
break;
93+
end
94+
end
95+
96+
if(not(isempty(evtNum)))
97+
break;
98+
end
99+
end
100+
end
101+
102+
function tf = isVarInLaunchVehicle(var, lvdData)
103+
lv = lvdData.launchVehicle;
104+
[lvVars,~] = lv.getActiveOptVars();
105+
106+
tf = false;
107+
for(i=1:length(lvVars))
108+
lvVar = lvVars(i);
109+
110+
if(var == lvVar)
111+
tf = true;
112+
break;
113+
end
114+
end
115+
end
116+
117+
function tf = isVarInInitialState(var, lvdData)
118+
initStateModel = lvdData.initStateModel;
119+
initStateModelOptVars = initStateModel.getAllOptVars();
120+
121+
tf = false;
122+
for(i=1:length(initStateModelOptVars))
123+
isVar = initStateModelOptVars(i);
124+
125+
if(var == isVar)
126+
tf = true;
127+
break;
128+
end
129+
end
111130
end
3.3 KB
Binary file not shown.

kspTOT_MissionArchitect/LaunchVehicleDesigner/ma_LvdMainGUI.m

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
% Edit the above text to modify the response to help ma_LvdMainGUI
2424

25-
% Last Modified by GUIDE v2.5 08-Oct-2018 14:27:31
25+
% Last Modified by GUIDE v2.5 14-Oct-2018 14:43:52
2626

2727
% Begin initialization code - DO NOT EDIT
2828
gui_Singleton = 1;
@@ -874,3 +874,52 @@ function ma_LvdMainGUI_CloseRequestFcn(hObject, eventdata, handles)
874874

875875
delete(hObject);
876876
end
877+
878+
879+
% --------------------------------------------------------------------
880+
function settingsMenu_Callback(hObject, eventdata, handles)
881+
% hObject handle to settingsMenu (see GCBO)
882+
% eventdata reserved - to be defined in a future version of MATLAB
883+
% handles structure with handles and user data (see GUIDATA)
884+
885+
886+
% --------------------------------------------------------------------
887+
function integrationSettingsMenu_Callback(hObject, eventdata, handles)
888+
% hObject handle to integrationSettingsMenu (see GCBO)
889+
% eventdata reserved - to be defined in a future version of MATLAB
890+
% handles structure with handles and user data (see GUIDATA)
891+
892+
893+
% --------------------------------------------------------------------
894+
function optimSettingsMenu_Callback(hObject, eventdata, handles)
895+
% hObject handle to optimSettingsMenu (see GCBO)
896+
% eventdata reserved - to be defined in a future version of MATLAB
897+
% handles structure with handles and user data (see GUIDATA)
898+
899+
900+
% --------------------------------------------------------------------
901+
function optAlgorithmMenu_Callback(hObject, eventdata, handles)
902+
% hObject handle to optAlgorithmMenu (see GCBO)
903+
% eventdata reserved - to be defined in a future version of MATLAB
904+
% handles structure with handles and user data (see GUIDATA)
905+
906+
907+
% --------------------------------------------------------------------
908+
function optUseParaMenu_Callback(hObject, eventdata, handles)
909+
% hObject handle to optUseParaMenu (see GCBO)
910+
% eventdata reserved - to be defined in a future version of MATLAB
911+
% handles structure with handles and user data (see GUIDATA)
912+
913+
914+
% --------------------------------------------------------------------
915+
function integrationAbsTolMenu_Callback(hObject, eventdata, handles)
916+
% hObject handle to integrationAbsTolMenu (see GCBO)
917+
% eventdata reserved - to be defined in a future version of MATLAB
918+
% handles structure with handles and user data (see GUIDATA)
919+
920+
921+
% --------------------------------------------------------------------
922+
function integrationRelTolMenu_Callback(hObject, eventdata, handles)
923+
% hObject handle to integrationRelTolMenu (see GCBO)
924+
% eventdata reserved - to be defined in a future version of MATLAB
925+
% handles structure with handles and user data (see GUIDATA)

0 commit comments

Comments
 (0)