Dynamic-Calibration/utils/YALMIP-master/modules/sos/selectSOSmodel.m

39 lines
2.0 KiB
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function options = selectSOSmodel(F,options,NonLinearParameterization,noRANK,IntegerData,UncertainData);
switch options.sos.model
case 0
constraint_classes = constraintclass(F);
noCOMPLICATING = ~any(ismember([7 8 9 10 12 13 14 15],constraint_classes));
if noCOMPLICATING & ~NonLinearParameterization & noRANK & ~IntegerData
options.sos.model = 1;
if options.verbose>0;disp('Using kernel representation (options.sos.model=1).');end
else
if NonLinearParameterization
if options.verbose>0;disp('Using image representation (options.sos.model=2). Nonlinear parameterization found');end
elseif ~noRANK
if options.verbose>0;disp('Using image representation (options.sos.model=2). SOS-rank constraint was found.');end
elseif IntegerData
if options.verbose>0;disp('Using image representation (options.sos.model=2). Integrality constraint was found.');end
elseif UncertainData
if options.verbose>0;disp('Using image representation (options.sos.model=2). Uncertain data was found.');end
else
if options.verbose>0;disp('Using image representation (options.sos.model=2). Integer data, KYPs or similar was found.');end
end
options.sos.model = 2;
end
case 1
if NonLinearParameterization
if options.verbose>0;disp('Switching to image model due to nonlinear parameterization (not supported in kernel model).');end
options.sos.model = 2;
end
if ~noRANK
if options.verbose>0;disp('Switching to image model due to SOS-rank constraints (not supported in kernel model).');end
options.sos.model = 2;
end
if IntegerData
if options.verbose>0;disp('Switching to image model due to integrality constraints (not supported in kernel model).');end
options.sos.model = 2;
end
case 3
otherwise
end