CVX 不支持的凹面最大化

计算科学 优化 简历
2021-12-03 18:56:31

我尝试使用 CVX 解决最大化问题。以最简单的形式,我想最大化

f(x,y)=yhb(xy),
在哪里hb()是二元熵函数。在 CVX 的上下文中,它可以写成
f(x,y)=y(entr(xy)+entr(1xy)).
我想强加的条件是
1yx0,
而函数f(x,y)是一个凹函数,它不被 CVX 接受。你对此有什么建议吗?

1个回答

CVX 使用的有规律的凸规则不知道如何处理变量的比率或乘积或变量的函数,因此无法直接在 CVX 中编写。但是,它可以写成rel_entr在 CVX 中。看到这个,

yentr(x/y)=y(x/y)log(x/y)=xlog(x/y)=rel_entr(x,y)

在哪里rel_entr(x,y)=xlog(x/y)CVX 知道。同样,由于

1xy=yxy, 我们有

yentr(1x/y)=yyxylog(yxy)=rel_entr(yx,y).

因此你的f(x,y)

f(x,y)=rel_entr(x,y)rel_entr(yx,y).