export
export is used to export YALMIP models to various numerical solver formats.
Syntax
[model,recoverymodel,diagnostic,internalmodel] = export(F,h,ops)
Examples
Consider a Lyapunov stability problem
A = randn(5,5);A = -A*A';
P = sdpvar(5,5);
F = [A'*P+P*A <= 0, P >= eye(5)];
obj = trace(P);
Exporting this to a model in sedumi format is done by specifying the solver and calling export in the same way as optimize would have been called.
[model,recoverymodel] = export(F,obj,sdpsettings('solver','sedumi'));
model =
A: [50x15 double]
b: [15x1 double]
C: [50x1 double]
K: [1x1 struct]
pars: [1x1 struct]
The data in recoverymodel can be used to relate a solution obtained from using the exported model, to the actual variables in YALMIP.
[x,y] = sedumi(model.A,model.b,model.C,model.K);
assign(recover(recoverymodel.used_variables),y);
Some solvers do not support equality constraints. One way to handle this in YALMIP is to use sdpsettings('remove',1)
. If this is done, YALMIP derives a basis and solves the problem in the reduced variables. This basis is communicated through the structure recoverymodel.
ops = sdpsettings('solver','sedumi','remove',1);
[model,recoverymodel] = export([F, trace(P)==10],obj,ops);
[x,y] = sedumi(model.A,model.b,model.C,model.K);
z = recoverymodel.x_equ + recoverymodel.H*y;
assign(recover(recoverymodel.used_variables),z);
If the compilation of the numerical model fails for some reason, then this will be reported in the third output diagnostic.
The general internal numerical solver-agnostic model that YALMIP compiles is returned in the fourth output internalmodel