Dynamic-Calibration/utils/YALMIP-master/extras/save_model_expansion.m

34 lines
1.7 KiB
Matlab
Executable File

function done = save_model_expansion(method,goal_vexity,F_graph,properties)
global ALREADY_MODELLED REMOVE_THESE_IN_THE_END ALREADY_MODELLED_INDEX
done = 0;
for variables = properties.models
save_place = find(variables == ALREADY_MODELLED_INDEX);
if ~isempty(save_place)%length(ALREADY_MODELLED)>=variables & ~isempty(ALREADY_MODELLED{variables})
% Ouch, we have already modelled this-one
if strcmpi(ALREADY_MODELLED{save_place}.method,method)
% Ok, already modelled using same approach
done = 1;
return
elseif strcmpi(ALREADY_MODELLED{save_place}.method,'graph') & (strcmpi(method,'callback') | strcmpi(method,'integer') | strcmpi(method,'exact'))
% Replace old graph model with exact model
REMOVE_THESE_IN_THE_END = [REMOVE_THESE_IN_THE_END ALREADY_MODELLED{save_place}.index];
ALREADY_MODELLED{save_place}.goal_vexity = goal_vexity;
ALREADY_MODELLED{save_place}.method = method;
ALREADY_MODELLED{save_place}.index = getlmiid(F_graph);
ALREADY_MODELLED{save_place}.properties = properties;
elseif ((strcmpi(ALREADY_MODELLED{save_place}.method,'integer') | strcmpi(ALREADY_MODELLED{save_place}.method,'exact') | strcmpi(ALREADY_MODELLED{save_place}.method,'callback')) & strcmpi(method,'graph'))
% Keep old stuff, we are done
done = 1;
return
end
else
ALREADY_MODELLED{end+1}.goal_vexity = goal_vexity;
ALREADY_MODELLED{end}.method = method;
ALREADY_MODELLED{end}.index = getlmiid(F_graph);
ALREADY_MODELLED{end}.properties = properties;
ALREADY_MODELLED_INDEX = [ALREADY_MODELLED_INDEX;variables];
end
end