CVX介绍——几何编程模式

几何程序(GP)是特殊的数学程序,可以使用变量的变化将其转换为凸形式。 GP的凸面形式可以表示为DCP,但是CVX也提供了一种特殊的模式,允许GP以其原始形式指定。 CVX将自动执行必要的转换,计算数值解,并将结果转换回原始问题。还是需要看书啊= =去看一会凸优化书= =再接着翻译吧,现在理解太困难了

要使用GP模式,您必须使用命令cvx_begin gp或cvx_begin GP而不是简单的cvx_begin来开始您的CVX规范。 例如,在gp / max_volume_box.m的示例库中找到的以下代码可确定受到各种面积和比率约束的最大volume box:

cvx_begin gp
    variables w h d
    maximize( w * h * d )
    subject to
        2*(h*w+h*d) <= Awall;
        w*d <= Afloor;
        alpha <= h/w >= beta;
        gamma <= d/w <= delta;
cvx_end

如例子所示,CVX支持使用加法,乘法,除法(如果适用)和幂的构造单项和正项。 此外,CVX通过允许在标准GP中允许使用任何正则项的广义正项,支持构造广义几何程序(GGP)。 本教程提供了有关广义几何程序的更多信息。

在这个版本的CVX中使用的求解器本身不支持几何编程。 相反,它们使用逐次逼近方法中描述的逐次逼近技术来求解。 这意味着解决全科医生的问题可能会比较缓慢,但是对于中小型的问题,这种方法运行良好。

在本节的其余部分中,我们将描述在GP模式下构建模型时应用的特定规则。

顶级规则
CVX支持三种类型的几何程序:

一个最小化问题,由一个广义的正项目标和零个或多个约束组成。
一个最大化问题,由单项目标和零个或多个约束组成。
一个可行性问题,由一个或多个约束组成。

最小化和最大化之间的不对称 - 特别是后者只允许单项目标 - 是GP和GGP几何的一个不可避免的假象。

约束
几何程序中可以指定三种类型的约束:

等式约束,使用==构造,其中双方都是单项式。
小于不等式约束<=其中左侧是广义正态,右侧是单项。
大于不等式约束> =其中左边是单项式,右边是广义的正项。

和DCP一样,不允许不平等的约束。 尽管严格的不平等被支持,但它们被视为非严格的不平等,因此应该避免。

表达式
广义几何规划的基本构件是单项式,正项和广义正项。一个有效的单项是

一个声明的变量;
两个或多个单项式的乘积;
两个单项式的比例;
一个提高到实权的单项;或者
用monomial参数调用以下函数之一:prod,cumprod,geo_mean,sqrt。

一个有效的正态表达式是

一个有效的单项;
两个或更多的正态之和;
两个或更多个正项的乘积;
一项正义与一项单项的比率;
正整数的正整数;或者
用以下的函数来调用以下函数之一:sum,cumsum,mean,prod,cumprod。

一个有效的广义正态表达式是

一个有效的posynomial;

两个或更多广义正态的总和;
两个或更多广义正态的乘积;
广义一项和单项的比值;
一个一般化的正态性被提升到一个正实权;或者
调用以下函数之一的广义正则表达式:sum,cumsum,mean,prod,cumprod,geo_mean,sqrt,norm,sum_largest,norm_largest。

在CVX中创建和操纵单项式,正项和/或广义正项的数组是完全可能的,在这种情况下,这些规则以明显的方式扩展。例如,两个单项矩阵的乘积产生一个矩阵,其条目是多项式(或特殊情况下的单项式)。

猜你喜欢

转载自blog.csdn.net/qq_21747841/article/details/78466802