39 lines
2.0 KiB
Matlab
Executable File
39 lines
2.0 KiB
Matlab
Executable File
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
|