我有未确定的外部优化问题
使用和或在相应的 CVX Matlab 代码中
variable x(n) nonnegative
minimize(sum( (A*x-b1).^2 + (A*T(x,p1,p2,p3,p4,p5)-b2).^2 ))
其中p1,...,p5是函数所需的固定参数T。里面T还有另一个线性最小化问题
与或 Matlab 语法
function value = T(x,p1,p2,p3,p4,p5)
... something happens ...
cvx_begin
variable c(n)
variable q(n)
minimize sum(q)
subject to
D*c-x <= q
-D*c-x >= -q
cvx_end
... something else happens and calculates return value ...
不幸的是我得到了错误
Undefined function 'newcnstr' for input arguments of type 'cvx'.
Error in cvx/lt (line 22)
b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '<' );
cvx_end在函数中的行之后T。
在处理其他问题时,我曾多次遇到此错误,但这次我无法用内置的 Matlab 函数替换外部优化,因为fmincon速度太慢了。不幸的是,替换内部问题linprog也太慢了。
是否可以嵌套这样的 CVX 优化问题?如果是,如何? 还有其他想法我可以尝试吗?