如何将方差最小化表示为混合整数二次规划

计算科学 优化 二次规划 混合整数规划
2021-11-29 11:17:13

我有一个混合整数二次问题,我的目标函数如下

argminVar(f(x),g(x))+Var(c(x),d(x))+

其中是线性函数,表示方差,是 3000 个二进制变量的向量。fgc dVarx

如果我想在 gurobi 中使用混合整数二次求解器解决问题,我必须以以下形式定义它:

 xTQx+qTx

由于问题是以高级格式定义的并且有大量变量和系数,我不知道如何提取Qq

1个回答

正如在其他地方回答的那样,对于 MATLAB,您有 CVX 和 YALMIP 之类的东西。在 YALMIP 中,您可以使用类似的方法来解决(假设您已经定义了函数 f 和 g)

x = binvar(n,1);
objective = var(f(x),g(x)) + ...
optimize([],objective)

将调用一个合适的求解器(如果 f 和 g 是线性运算符,它是一个 MIQP,如果 Gurobi 已安装并且在路径上可见,它将被使用)

如果您只想导出数字数据(等),您可以这样做Q

export([],objective,sdpsettings('solver','gurobi'))

但请注意,对于任何求解器来说,具有 3000 个变量的 MIQP 很容易完全难以处理。