Systems Theory and Automatic Control

ADMITestimate
ADMIT documentation: ADMITestimate

ADMITestimate

ADMITestimate estimates the variables of interest

OPTRESULT = ADMITestimate(OPTINFO, [OPTIONS])
OPTRESULT = ADMITestimate(FILENAME,[OPTIONS])

Initiates estimation procedure to obtain an outer-estimate of the
feasible region. Current implementation employs the outer-bounding
procedure and the bisectioning procedure.
The first input is either a variable OPTINFO (see ADMITcompose),
that contains all the information needed for the estimation procedures,
or it is a string FILENAME with file FILENAME.mat containing OPTINFO.
OPTIONS is a valid ADMIToptions object. It can be provided either
directly as a second parameter, or in the same file FILENAME.mat, if it
was the first input. If none provided, default options are used.

Inputs
  [...]     : square brackets notify that input is optional.
  OPTINFO   : valid ADMITinfo object
  FILENAME  : name of the .mat file containing valid optInfo object
  OPTIONS   : valid ADMIToptions object

Returns
  OPTRESULT : ADMITresults object that contains complete information
              about the performed estimation procedures in this function.
              This object can be used then to plot the estimated data
              (both single estimated bounds as a result of outer-bounding
              procedure and bisectioning subregions) and to extract the
              estimated data for further use as input data (see
              ADMITimportData).

Examples

opt = ADMITproject();
% Estimate intersection of a circle and a hyperbole
opt = opt + ADMITconstraint('a^2 + b^2 <= 2') + ...
            ADMITconstraint('a := [-10,10]') + ...
            ADMITconstraint('b := [-10,10]') + ...
            ADMITconstraint('a*b >= 0.5');
opt = opt + ADMITvariable('a := {ofInterest}') + ...
            ADMITvariable('b := {ofInterest}')          
ops = ADMITsetOptions('ESTIMATE.outerBounding.iterations',1,...
                      'ESTIMATE.outerBounding.useOptimization',0,...
                      'ESTIMATE.bisectioning.use',0,...
                      'ESTIMATE.bisectioning.splitDepth',5,...
                      'ESTIMATE.presolve.only',1,...
                      'ESTIMATE.presolve.mode',3,...
                      'DISPLAY.verboseLevel',1)
[optInfo,opt] = ADMITcompose(opt,ops)
% 1) perform outerbounding and plot results
optResult = ADMITestimate(optInfo,ops)
ADMITplot(optResult);
% 2) perform bisectioning using results from outer-bounding; 
%    results are plotted dynamically.
optInfo = ADMITcompose(optInfo,'setBounds',optResult,ops)
ops = ADMITsetOptions(ops,'ESTIMATE.outerBounding.use',0,...
                          'ESTIMATE.bisectioning.use',1);
optResult = ADMITestimate(optInfo,ops)
% 3) plot solution set
hold on
plot(sqrt(2)*cos(0:0.01:2*pi),sqrt(2)*sin(0:0.01:2*pi),'linewidth',2)
a = [-2:0.01:2];
plot(a,0.5./a,'linewidth',2)
ylim([-2,2])
xlim([-2,2])
hold off