sample

sample is used to draw samples on a parameter in an optimizer object and then concatenate all sampled models.

Syntax

Model = sample(UncertainModel) % Draw 1 sample
Model = sample(UncertainModel) % Draw N samples and concatenate all models

Examples

The following model represents a linear model (in x) with a normally distributed uncertainty

A = [ones(1,2);eye(2);-eye(2)];
b = ones(5,1);
E = [1 2;3 4;5 6;7 8;9 10];

x = sdpvar(2,1); % Our decision variable
w = sdpvar(2,1); % Uncertainty

Constraints = [(A + sum(w))*x <= b + E*w, uncertain(w,'normal',[0;0],[.01;.02])];
Objective = sum(x);
S = optimizer(Constraints, Objective,[],w,x)

The feasible set without uncertainty is given by

plot(S([0;0]))

By using sample, we can draw a number of samples on the uncertain variable, and concatenate all the generated constraints.

S_10_scenarios = sample(S,10);
plot(S_10_scenarios)

x_optimal = S_10_scenarios([]);

If the objective also is uncertain, the sample average is returned

Objective = (x - sum(w))'*(x - sum(w)) + sum(x);
S = optimizer(Constraints, Objective,[],w,x);
S_10_scenarios = sample(S,10);
x_optimal = S_10_scenarios([])