Dynamic-Calibration/utils/YALMIP-master/extras/ipopt_callback_dg.m

32 lines
645 B
Mathematica
Raw Normal View History

2019-12-18 11:25:45 +00:00
function G = ipopt_callback_dg(x,model)%returnStructOnly,model)
global latest_x_g
global latest_G
global latest_g
x = x(:);
if isequal(x,latest_x_g)
% Jacobian was computed already in the call for constraints
G = latest_G;
else
% Compute the nonlinear terms in the constraints
[g,geq,dg,dgeq] = fmincon_con_liftlayer(x,model);
% Append with linear terms
if isempty(dg)
G = dgeq';
else
G = [dg';dgeq'];
end
if ~isempty(model.A)
G = [G;model.A];
end
if ~isempty(model.Aeq)
G = [G;model.Aeq];
end
G = sparse(G);
end
if model.dense
G = full(G);
end