找到多面体(polytope) A x ≤ b Ax\leq b Ax≤b的解析中心,解析中心的目标函数为 ∑ log ( b − A x ) \sum \log(b-Ax) ∑log(b−Ax) 定义多面体和决策变量,设置约束后求解
n=5; m=20; A=randn(m, n); b=rand(m, 1)*m; x=sdpvar(n, 1); C=A*x<=b; % solve optimize(C, -sum(log(b-A*x)));但是一般情况下是得不到正确解的,因为在不可行点目标函数未定义,可以使用指数算子求解问题的逆形式,求解指数锥规划问题
y=sdpvar(m, 1); ops = sdpsettings('solver', 'mosek'); optimize(exp(y)<=b-A*x, -sum(y), ops)也可以计算几何平均,转为二阶锥规划
% SOCP optimize([], -geomean(b-A*x), ops)默认情况下,YALMIP可能将原问题转为非凸问题,可以显式设置禁止转化
ops=sdpsettings('allownonconvex', 0);General convex programming