前面讲了那么多关于凸集、凸函数的知识,然而都是铺垫,现在我们才来到了这门课的重头戏部分——凸优化问题!

文章目录

  • 1. 一般优化问题
  • 2. 凸优化问题
    • 2.1 凸优化问题定义
    • 2.2 凸优化问题的最优解
    • 2.3 等价问题化简
  • 3. 拟凸优化问题
  • 4. 典型凸优化问题
    • 4.1 线性规划(LP)
    • 4.2 线性分式规划
    • 4.3 二次规划(QP)
    • 4.4 二次约束二次规划(QCQP)
    • 4.5 二次锥规划(SOCP)
    • 4.6 鲁棒线性规划
    • 4.7 几何规划(GP)
    • 4.8 半正定规划(SDP)
    • 4.9 向量优化

1. 一般优化问题

一般优化问题的形式为
minimize f0(x)subject to fi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p\begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &h_{i}(x)=0, \quad i=1, \ldots, p \end{aligned}  minimize  subject to ​f0​(x)fi​(x)≤0,i=1,…,mhi​(x)=0,i=1,…,p​
其中 f0(x)f_0(x)f0​(x) 为目标函数,fi(x)f_i(x)fi​(x) 为不等式约束函数, hih_ihi​ 为等式约束函数。优化问题的最优解
p⋆=inf⁡{f0(x)∣fi(x)≤0,i=1,…,m,hi(x)=0,i=1,…,p}p^{\star}=\inf \left\{f_{0}(x) | f_{i}(x) \leq 0, i=1, \ldots, m, h_{i}(x)=0, i=1, \ldots, p\right\} p⋆=inf{f0​(x)∣fi​(x)≤0,i=1,…,m,hi​(x)=0,i=1,…,p}
如果 p∗=∞p^*=\inftyp∗=∞,则问题不可行;如果 p∗=−∞p^*=-\inftyp∗=−∞ 则该问题没有下界。

最优解则有 f0(x)=p∗f_0(x)=p^*f0​(x)=p∗,**局部最优解(local optimal)**有
minimize(over z)f0(z)subject tofi(z)≤0,i=1,…,m,hi(z)=0,i=1,…,p∥z−x∥2≤R\begin{aligned} \text{minimize} (\text{over } z) \quad& f_{0}(z) \\ \text{subject to} \quad&f_{i}(z) \leq 0, \quad i=1, \ldots, m, \quad h_{i}(z)=0, \quad i=1, \ldots, p \\ &\|z-x\|_{2} \leq R \end{aligned} minimize(over z)subject to​f0​(z)fi​(z)≤0,i=1,…,m,hi​(z)=0,i=1,…,p∥z−x∥2​≤R​
也即只在一个小的邻域内考虑优化问题。

注意:

  • 有的优化问题有最小值,但是没有可行解,比如 f0(x)=1/xf_0(x)=1/xf0​(x)=1/x;
  • 有的问题根本就没有最小值,比如 f0(x)=−log⁡xf_0(x)=-\log xf0​(x)=−logx
  • 有的问题只有局部最小值,比如 f0(x)=x3−3xf_0(x)=x^3-3xf0​(x)=x3−3x

上面提到的优化问题中有等式和不等式约束,这些我们都称为显式约束(explicit constraints),同时由于 xxx 应属于各个函数的定义域内,因此还有隐式约束(implicit constraint),即
x∈D=⋂i=0mdom⁡fi∩⋂i=1pdom⁡hix \in \mathcal{D}=\bigcap_{i=0}^{m} \operatorname{dom} f_{i} \cap \bigcap_{i=1}^{p} \operatorname{dom} h_{i} x∈D=i=0⋂m​domfi​∩i=1⋂p​domhi​
没有显式约束的优化问题被称为无约束优化问题(unconstrained)。比如
minimize f0(x)=−∑i=1klog⁡(bi−aiTx)\text { minimize } \quad f_{0}(x)=-\sum_{i=1}^{k} \log \left(b_{i}-a_{i}^{T} x\right)  minimize f0​(x)=−i=1∑k​log(bi​−aiT​x)
是一个无约束优化问题,包含了隐式约束 aiTx<bia_i^Tx< b_iaiT​x<bi​。

其实有约束优化问题也可以转化为无约束优化问题,只需要加一个指示函数,一开始提到的一般优化问题就可以利用 δC\delta_CδC​ 转化为下面的无约束优化问题,不过这种转化可能并没有太大的意义
min⁡xf0(x)+δC(x)δC(x)={0fi(x)≤0,hi(x)=0∞\min_x f_0(x)+\delta_{C}(x) \\ \delta_C(x)=\begin{cases}0&f_i(x)\le0,h_i(x)=0 \\ \infty \end{cases} xmin​f0​(x)+δC​(x)δC​(x)={0∞​fi​(x)≤0,hi​(x)=0
除了优化问题,还有一种可行解问题(Feasibility problem),也就是给定一系列约束来寻找是否有可行解
findxsubject tofi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p\begin{aligned} \text {find} \quad& x \\ \text { subject to} \quad& f_{i}(x) \leq 0,\quad i=1, \ldots, m \\ & h_{i}(x)=0,\quad i=1, \ldots, p \end{aligned} find subject to​xfi​(x)≤0,i=1,…,mhi​(x)=0,i=1,…,p​
这实际上也可以转化为一般优化问题
minimize0subject tofi(x)≤0,i=1,…,mhi(x)=0,i=1,…,p\begin{aligned} \text {minimize} \quad& 0 \\ \text { subject to} \quad& f_{i}(x) \leq 0,\quad i=1, \ldots, m \\ & h_{i}(x)=0,\quad i=1, \ldots, p \end{aligned} minimize subject to​0fi​(x)≤0,i=1,…,mhi​(x)=0,i=1,…,p​

2. 凸优化问题

2.1 凸优化问题定义

凸优化问题(Convex optimization problem)要求目标函数为凸函数,而且定义域为凸集,这样可以利用凸函数和凸集的优良性质简化问题,因此凸优化问题的一般形式为
minimize f0(x)subject to fi(x)≤0,i=1,…,mAx=b,★\begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &Ax=b, \qquad\qquad\qquad\qquad\quad\bigstar \end{aligned}  minimize  subject to ​f0​(x)fi​(x)≤0,i=1,…,mAx=b,★​
其中要求目标函数和约束函数 f0,f1,...,fmf_0,f_1,...,f_mf0​,f1​,...,fm​ 均为凸函数。

Remarks:需要注意这里还要求等式约束均为仿射函数,这是因为我们希望定义域是凸集,假设等式约束 hih_ihi​ 不是线性的,即使 hih_ihi​ 是凸函数,{x∣hi(x)=0}\{x|h_i(x)=0\}{x∣hi​(x)=0} 也不一定是凸集。比如二次等式约束 ∥x∥2=r\Vert x\Vert_2=r∥x∥2​=r,得到的定义域就是一个球面,显然不是一个凸集,这对优化不利。

有时候我们直接拿到的优化问题并不符合上面的形式,但是可以经过化简得到等价问题,就是凸的了,比如
minimize f0(x)=x12+x22subject to f1(x)=x1/(1+x22)≤0h1(x)=(x1+x2)2=0\begin{aligned} \text { minimize } \quad& f_{0}(x)=x_{1}^{2}+x_{2}^{2}\\ \text { subject to } \quad& f_{1}(x)=x_{1} /\left(1+x_{2}^{2}\right) \leq 0\\ &h_{1}(x)=\left(x_{1}+x_{2}\right)^{2}=0 \end{aligned}  minimize  subject to ​f0​(x)=x12​+x22​f1​(x)=x1​/(1+x22​)≤0h1​(x)=(x1​+x2​)2=0​
经过简单化简就有
minimize x12+x22subject to x1≤0x1+x2=0\begin{aligned} \text { minimize } \quad& x_{1}^{2}+x_{2}^{2}\\ \text { subject to } \quad& x_{1} \leq 0\\ &x_{1}+x_{2}=0 \end{aligned}  minimize  subject to ​x12​+x22​x1​≤0x1​+x2​=0​

2.2 凸优化问题的最优解

对于凸优化问题有一个极其重要的性质,就是

凸优化问题的局部最优解就是全局最优解

证明也很简单,若 x∗x^*x∗ 为局部最优解,只需要假设另外一个全局最优解 y≠x∗,f(y)<xy\ne x^*,f(y)<xy​=x∗,f(y)<x,那么利用凸函数的性质,就可以在 x∗x^*x∗ 的邻域内导出矛盾,如下图图示。

凸优化问题的最优解还有一个很好的判据

xxx 为最优解,当且仅当
∇f0(x)T(y−x)≥0for all feasible y\nabla f_{0}(x)^{T}(y-x) \geq 0 \quad \text { for all feasible } y ∇f0​(x)T(y−x)≥0 for all feasible y

证明过程只需要应用凸函数的一阶等价定义即可,即 f(y)≥f(x)+∇fT(x)(y−x)f(y)\ge f(x)+\nabla f^T(x)(y-x)f(y)≥f(x)+∇fT(x)(y−x)。

这个怎么直观理解呢?还记得我们之前在拟凸函数那里提到的“支撑超平面”吗?实际上 f0(x)f_0(x)f0​(x) 定义了一个等高线,由于 f0f_0f0​ 是一个凸函数,因此这个等高线实际上围成了一个凸集,这个凸集也就是一个下水平集。而这里的 ∇f0(x)\nabla f_0(x)∇f0​(x) 就是这个下水平集的一个支撑超平面,正如下图所示。同时注意,∇f0(x)\nabla f_0(x)∇f0​(x) 也代表着函数指上升的方向,如果说对任意定义域内的 yyy,都有 ∇f0(x)T(y−x)≥0\nabla f_{0}(x)^{T}(y-x) \geq 0∇f0​(x)T(y−x)≥0 成立,那么说明我们从 xxx 走到 yyy 总会使 f0f_0f0​ 增大,也就是说 xxx 就是最优解,对应最小值。

利用上面这两个性质,我们可以对很多类型的凸优化问题的最优解有一个认识。

无约束优化问题:对无约束优化问题,xxx 为最优解,当且仅当
x∈domf0,∇f0(x)=0x\in\text{dom} f_0,\quad \nabla f_0(x)=0 x∈domf0​,∇f0​(x)=0
等式约束优化问题:min⁡f0(x),s.t.Ax=b\min\quad f_0(x),\qquad s.t.\quad Ax=bminf0​(x),s.t.Ax=b,则有 xxx 为最优解,当且仅当存在 ν\nuν
x∈dom⁡f0,Ax=b,∇f0(x)+ATν=0x \in \operatorname{dom} f_{0}, \quad A x=b, \quad \nabla f_{0}(x)+A^{T} \nu=0 x∈domf0​,Ax=b,∇f0​(x)+ATν=0
证明:因为 Ax=bAx=bAx=b 实际上定义了一个超平面,如果 xxx 为最优解,那么 ∇f0(x)\nabla f_0(x)∇f0​(x) 一定没有这个平面内的分量,也就是说 ∇f0(x)∈ker⁡(A)⊥\nabla f_0(x)\in \ker(A)^\perp∇f0​(x)∈ker(A)⊥。

这个实际上就等价于 Lagrange 乘子法,我们来看拉格朗日函数的定义
L(x,v)=f0(x)+<Ax−b,v>⟹{∇f0(x)+ATv=0Ax−b=0L(x,v)=f_0(x)+<Ax-b,v> \\ \Longrightarrow \begin{cases}\nabla f_0(x)+A^Tv=0 \\ Ax-b=0\end{cases} L(x,v)=f0​(x)+<Ax−b,v>⟹{∇f0​(x)+ATv=0Ax−b=0​
非负象限内的优化:min⁡f0(x),s.t.x⪰0\min\quad f_0(x),\qquad s.t.\quad x\succeq 0minf0​(x),s.t.x⪰0,xxx 为最优解,当且仅当
x∈dom⁡f0,x⪰0,{∇f0(x)i≥0xi=0∇f0(x)i=0xi>0x \in \operatorname{dom} f_{0}, \quad x \succeq 0, \quad\left\{\begin{array}{l} \nabla f_{0}(x)_{i} \geq 0 \quad x_{i}=0 \\ \nabla f_{0}(x)_{i}=0 \quad x_{i}>0 \end{array}\right. x∈domf0​,x⪰0,{∇f0​(x)i​≥0xi​=0∇f0​(x)i​=0xi​>0​
证明:首先由于定义域为非负象限,意味着 (y−x)(y-x)(y−x) 可以取到正无穷,因此可以推导出 ∇f0(x)⪰0\nabla f_0(x) \succeq 0∇f0​(x)⪰0,故 ∇f0T(x)x≥0\nabla f_0^T(x)x\ge0∇f0T​(x)x≥0。另一方面,对于凸优化问题的最优解,有 ∇f0T(x)(y−x)≥0\nabla f_0^T(x)(y-x)\ge0∇f0T​(x)(y−x)≥0,取 y=0y=0y=0,因此有 ∇f0T(x)x≤0\nabla f_0^T(x)x\le0∇f0T​(x)x≤0,故 ∇f0T(x)x=0\nabla f_0^T(x)x=0∇f0T​(x)x=0。

实际上这里被称为互补性条件(complementary condition),也就是 KKT 条件的一部分。

2.3 等价问题化简

有时原始优化问题比较难,可以通过等价转换进行简化。

消去等式约束:比如对一般的凸优化问题,等式约束实际上定义了一个超平面,这可以表示为特解 + 一组基的形式
Ax=b⟺x=Fz+x0for some zAx=b \iff x=Fz+x_0 \text { for some } z Ax=b⟺x=Fz+x0​ for some z
原始凸优化问题就可转化为
minimize (over z)f0(Fz+x0)subject to fi(Fz+x0)≤0,i=1,…,m\begin{aligned} \text { minimize (over }z) \quad& f_{0}\left(F z+x_{0}\right)\\ \text { subject to } \quad& f_{i}\left(F z+x_{0}\right) \leq 0, \quad i=1, \dots, m \end{aligned}  minimize (over z) subject to ​f0​(Fz+x0​)fi​(Fz+x0​)≤0,i=1,…,m​
添加等式约束:实际上就是上面的一个逆过程,这个过程中取药添加一个等式约束 y=Ax+by=Ax+by=Ax+b,由于添加了变量 yyy,会使问题变量数增加,同时优化变量也需要加上 yyy。

引入松弛变量:比如对于线性不等式约束的优化问题
minimize f0(x)subject to aiTx≤bi,i=1,...,m\begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& a_i^Tx\le b_i,\quad i=1,...,m \end{aligned}  minimize  subject to ​f0​(x)aiT​x≤bi​,i=1,...,m​
可以引入松弛因子 sis_isi​,得到
minimize f0(x)subject to aiTx+si=bi,i=1,...,msi≥0,i=1,...,m\begin{aligned} \text { minimize } \quad& f_{0}(x)\\ \text { subject to } \quad& a_i^Tx + s_i = b_i,\quad i=1,...,m \\ & s_i \ge0,\quad i=1,...,m \end{aligned}  minimize  subject to ​f0​(x)aiT​x+si​=bi​,i=1,...,msi​≥0,i=1,...,m​
例子:下面两个优化问题是等价的吗?其中 WTW=IW^TW=IWTW=I
min⁡xf(x)+g(Wx)min⁡cf(WTc)+g(c)\min_x f(x)+g(Wx) \\ \min_c f(W^T c)+g(c) xmin​f(x)+g(Wx)cmin​f(WTc)+g(c)
不一定等价。由于 WTW=IW^TW=IWTW=I,若 WWW 为方针,则二者等价,否则说明 W∈Rm×n,m≥nW\in R^{m\times n},m\ge nW∈Rm×n,m≥n,也即 WWW 为一个瘦高型的矩阵,如果我们取 f≡0f\equiv 0f≡0,那么很显然 min⁡xg(Wx)\min_x g(Wx)minx​g(Wx) 与 min⁡cg(c)\min_c g(c)minc​g(c) 并不等价,因为 WWW 列不满秩。

epigraph 形式:任意标准形式的凸优化问题都可以转化为下面的形式
minimize (over x,t)tsubject to f0(x)fi(x)≤0,i=1,…,mAx=b\begin{aligned} \text { minimize (over }x,t) \quad& t\\ \text { subject to } \quad& f_{0}(x)\\ \quad& f_{i}(x) \leq 0, \quad i=1, \ldots, m\\ &Ax=b \end{aligned}  minimize (over x,t) subject to ​tf0​(x)fi​(x)≤0,i=1,…,mAx=b​
这种变化很重要,可以将优化目标转化为约束函数,对于后面一些典型凸优化问题的转化很有用。

对某些变量最小化:实际上就是对于存在多个优化变量时,提前通过计算消去一些变量
minimize f0(x1,x2)subject to fi(x1)≤0,i=1,…,m⟺minimize f~0(x1)subject to f~i(x1)≤0,i=1,…,m\begin{aligned} \text { minimize } \quad& f_{0}\left(x_{1}, x_{2}\right)\\ \text { subject to } \quad& f_{i}\left(x_{1}\right) \leq 0, \quad i=1, \dots, m \end{aligned} \iff \begin{aligned} \text { minimize } \quad& \tilde{f}_{0}\left(x_{1}\right)\\ \text { subject to } \quad& \tilde{f}_{i}\left(x_{1}\right) \leq 0, \quad i=1, \dots, m \end{aligned}  minimize  subject to ​f0​(x1​,x2​)fi​(x1​)≤0,i=1,…,m​⟺ minimize  subject to ​f~​0​(x1​)f~​i​(x1​)≤0,i=1,…,m​
其中 f~0(x1)=inf⁡x2f0(x1,x2)\tilde{f}_0(x_1)=\inf_{x_2}f_0(x_1,x_2)f~​0​(x1​)=infx2​​f0​(x1​,x2​)。

3. 拟凸优化问题

拟凸函数跟凸函数有一些相似的性质,尤其是拟凸函数的任意下水平集都是凸集,因此很多时候对于拟凸问题,也可以用凸优化的一些方法有效解决。

拟凸优化问题(Quasi convex optimization) 的一般定义为与凸优化基本相同,只不过目标函数 f0(x)f_0(x)f0​(x) 可以是拟凸函数,但约束函数 f1,...,fmf_1,...,f_mf1​,...,fm​ 仍需要是凸函数。

Remarks:我个人觉得这里其实约束函数也可以是拟凸函数?因为即使是拟凸函数,fi(x)≤0f_i(x)\le0fi​(x)≤0 也可以得到凸的定义域?

但是此时拟凸优化问题就没有凸优化那么好的性质了,比如局部最优解不一定是全局最优解

尽管如此,由于拟凸函数任意下水平集 {x∣f(x)≤t}\{x|f(x)\le t\}{x∣f(x)≤t} 都是凸集,我们可以利用这个性质将其转化为凸函数 ϕt(x)≤0\phi_t(x)\le0ϕt​(x)≤0 来表示,由此就可以用凸优化来求解。

例子

最简单的例子,拟凸函数 f(x)f(x)f(x) 的下水平集可以表示为 {x∣f(x)≤t}\{x|f(x)\le t\}{x∣f(x)≤t},我们可以用函数 ϕt(x)≤0\phi_t(x)\le0ϕt​(x)≤0 来等价表示
ϕt(x)={0f(x)≤t∞\phi_t(x)=\begin{cases}0 & f(x)\le t \\ \infty \end{cases} ϕt​(x)={0∞​f(x)≤t
不过这种表示方法意义不大, 这个函数不连续不可微。我们还有其他的表示方法比如
ϕt(x)=dist(x,{z∣f(z)≤t})\phi_t(x)=\text{dist}\left(x,\{z|f(z)\le t\}\right) ϕt​(x)=dist(x,{z∣f(z)≤t})
另外,如果拟凸函数 f0(x)f_0(x)f0​(x) 有一些特定的性质,比如 f0(x)=p(x)/q(x)f_0(x)=p(x)/q(x)f0​(x)=p(x)/q(x),其中 p(x)p(x)p(x) 为凸函数,而 q(x)>0q(x)>0q(x)>0 为凹函数(容易证明此时 f0f_0f0​ 为拟凸函数),那么我们还可以取 ϕt(x)\phi_t(x)ϕt​(x) 为
ϕt(x)=p(x)−tq(x)\phi_t(x)=p(x)-t q(x) ϕt​(x)=p(x)−tq(x)
拟凸优化问题的求解

假如当前拟凸优化问题的最优解为 p∗p^*p∗,那么对于寻找可行解问题
findxs.t.ϕt(x)≤0,fi(x)≤0,i=1,…,m,Ax=b\begin{aligned} \text{find} \quad& x \\ s.t. \quad& \phi_{t}(x) \leq 0, \quad f_{i}(x) \leq 0, \quad i=1, \ldots, m, \\ &A x=b \end{aligned} finds.t.​xϕt​(x)≤0,fi​(x)≤0,i=1,…,m,Ax=b​
如果 t≥p∗t\ge p^*t≥p∗,则该问题有可行解,如果 t<p∗t<p^*t<p∗,则没有可行解。因此对于原始凸优化问题,可以利用二分法迭代求解

4. 典型凸优化问题

4.1 线性规划(LP)

线性规划(Linear program)问题的一般形式为
minimizecTx+dsubject toGx⪯hAx=b\begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject to​cTx+dGx⪯hAx=b​
联系我们前面提到的凸优化问题最优解性质,有 cT(y−x)≥0c^T(y-x)\ge0cT(y−x)≥0,也即目标函数的等高线是一系列超平面

例子 1:对于 piecewise-linear minimization 问题(无约束优化)
minimize max⁡i=1,…,m(aiTx+bi)\text { minimize } \max _{i=1, \ldots, m}\left(a_{i}^{T} x+b_{i}\right)  minimize i=1,…,mmax​(aiT​x+bi​)
可以转化为
minimizetsubject toaiTx+bi≤t\begin{aligned} \text { minimize} \quad& t\\ \text { subject to} \quad& a_i^Tx + b_i \le t \end{aligned}  minimize subject to​taiT​x+bi​≤t​
例子 2:多面体的切比雪夫中心(Chebyshev center)
P={x∣aiTx≤bi,i=1,…,m}\mathcal{P}=\left\{x | a_{i}^{T} x \leq b_{i}, i=1, \dots, m\right\} P={x∣aiT​x≤bi​,i=1,…,m}
可以用优化问题表示为
maximizersubject toaiTxc+r∥ai∥2≤bi,i=1,…,m\begin{aligned} \text{maximize} \quad& r\\ \text{subject to} \quad& a_{i}^{T} x_{c}+r\left\|a_{i}\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject to​raiT​xc​+r∥ai​∥2​≤bi​,i=1,…,m​

4.2 线性分式规划

线性分式规划(Linear-fractional program) 的一般形式为
minimizef0(x)subject toGx⪯hAx=b\begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject to​f0​(x)Gx⪯hAx=b​
其中 f0(x)=cTx+deTx+f,domf0(x)={x∣eTx+f>0}f_0(x)=\frac{c^Tx+d}{e^Tx+f},\quad \text{dom}f_0(x)=\{x|e^Tx+f>0\}f0​(x)=eTx+fcTx+d​,domf0​(x)={x∣eTx+f>0}。这个问题可以等价转化为线性规划。

4.3 二次规划(QP)

二次规划(Quadratic program)的一般形式为
minimize(1/2)xTPx+qTx+rsubject toGx⪯hAx=b\begin{aligned} \text{minimize} \quad& (1/2)x^TPx+q^Tx+r \\ \text{subject to} \quad& G x \preceq h \\ &A x=b \end{aligned} minimizesubject to​(1/2)xTPx+qTx+rGx⪯hAx=b​
其中 P∈S+nP\in S_{+}^nP∈S+n​。

与线性规划不同的是,目标函数的等高线变成了椭球面

例子:最小二乘就是最经典的二次规划的例子,min⁡∥Ax+b∥22\min \Vert Ax+b\Vert_2^2min∥Ax+b∥22​

4.4 二次约束二次规划(QCQP)

二次约束二次规划(Quadratically constrained quadratic program)的一般形式为
minimize(1/2)xTP0x+q0Tx+r0subject to(1/2)xTPix+qiTx+ri≤0Ax=b\begin{aligned} \text{minimize} \quad& (1/2)x^TP_0x+q_0^Tx+r_0 \\ \text{subject to} \quad& (1/2)x^TP_ix+q_i^Tx+r_i \le 0 \\ &A x=b\end{aligned} minimizesubject to​(1/2)xTP0​x+q0T​x+r0​(1/2)xTPi​x+qiT​x+ri​≤0Ax=b​
其中 Pi∈S+nP_i\in S_{+}^nPi​∈S+n​。

一般会限制 P1,...,Pm∈S++nP_1,...,P_m\in S_{++}^nP1​,...,Pm​∈S++n​,也就是不能为 0 矩阵(有什么意义吗?不关键)

4.5 二次锥规划(SOCP)

二次锥规划(Second-order cone programming)的一般形式为
minimize fTxsubject to ∥Aix+bi∥2≤ciTx+di,i=1,…,mFx=g\begin{array}{cl} \text { minimize } & f^{T} x \\ \text { subject to } & \left\|A_{i} x+b_{i}\right\|_{2} \leq c_{i}^{T} x+d_{i}, \quad i=1, \ldots, m \\ & F x=g \end{array}  minimize  subject to ​fTx∥Ai​x+bi​∥2​≤ciT​x+di​,i=1,…,mFx=g​
其实 SOCP 比前面几种问题都更广泛,他们都可以看作是 SOCP 的一种情况

4.6 鲁棒线性规划

对于优化问题,有时候我们的参数比如 ai,bia_i,b_iai​,bi​ 等都是不确定的,他们可能是在一定范围内属于某个集合,也可能是一个随机变量,这个时候就引入了鲁棒优化的概念。

对于线性规划问题来说,比如
minimizecTx+dsubject toaiTx≤bi\begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& a_i^Tx\le b_i \end{aligned} minimizesubject to​cTx+daiT​x≤bi​​
一种是考虑确定性模型,也即
minimizecTx+dsubject toaiTx≤bifor all ai∈Ei\begin{aligned} \text{minimize} \quad& c^{T} x+d \\ \text{subject to} \quad& a_i^Tx\le b_i \text{ for all } a_i\in\mathcal{E}_i \end{aligned} minimizesubject to​cTx+daiT​x≤bi​ for all ai​∈Ei​​
如果 Ei={aˉi+Piu∣∥u∥2≤1}\mathcal{E}_{i}=\left\{\bar{a}_{i}+P_{i} u |\|u\|_{2} \leq 1\right\}Ei​={aˉi​+Pi​u∣∥u∥2​≤1} 是一个椭球,则该问题可以转化为一个 SOCP 问题
maximizecTxsubject toaˉiTx+∥PiTx∥2≤bi,i=1,…,m\begin{aligned} \text{maximize} \quad& c^Tx\\ \text{subject to} \quad& \bar{a}_{i}^{T} x+\left\|P_{i}^Tx\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject to​cTxaˉiT​x+∥∥​PiT​x∥∥​2​≤bi​,i=1,…,m​
另一种是随机性模型,即
minimizecTxsubject toprob⁡(aiTx≤bi)≥η,i=1,…,m\begin{aligned} \text{minimize} \quad& c^{T} x \\ \text{subject to} \quad& \operatorname{prob}\left(a_{i}^{T} x \leq b_{i}\right) \geq \eta, \quad i=1, \ldots, m \end{aligned} minimizesubject to​cTxprob(aiT​x≤bi​)≥η,i=1,…,m​
假如 ai∼N(aˉi,Σi)a_i\sim\mathcal{N}(\bar{a}_i,\Sigma_i)ai​∼N(aˉi​,Σi​) 服从高斯分布,则该问题同样可以转化为一个 SOCP 问题
maximizecTxsubject toaˉiTx+Φ−1(η)∥Σi1/2x∥2≤bi,i=1,…,m\begin{aligned} \text{maximize} \quad& c^Tx\\ \text{subject to} \quad& \bar{a}_{i}^{T} x+\Phi^{-1}(\eta)\left\|\Sigma_{i}^{1 / 2} x\right\|_{2} \leq b_{i}, \quad i=1, \ldots, m \end{aligned} maximizesubject to​cTxaˉiT​x+Φ−1(η)∥∥∥​Σi1/2​x∥∥∥​2​≤bi​,i=1,…,m​

4.7 几何规划(GP)

首先定义单项式函数(monomial function) f(x)=cx1a1x2a2⋯xnan,domf=R++nf(x)=cx_1^{a_1}x_2^{a_2}\cdots x_n^{a_n},\quad \text{dom}f=R_{++}^nf(x)=cx1a1​​x2a2​​⋯xnan​​,domf=R++n​,其中 c>0,aic>0,a_ic>0,ai​ 为任意实数;

正项式函数(posynomial function) f(x)=∑kckx1a1kx2a2k⋯xnank,domf=R++nf(x)=\sum_k c_k x_1^{a_{1k}} x_2^{a_{2k}}\cdots x_n^{a_{nk}},\quad \text{dom}f=R_{++}^nf(x)=∑k​ck​x1a1k​​x2a2k​​⋯xnank​​,domf=R++n​

然后就可以定义**几何规划(geometric program)**了
minimizef0(x)subject tofi(x)≤1,i=1,...,mhi(x)=1,i=1,...,p\begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& f_i(x)\le 1,\quad i=1,...,m \\ &h_i(x)=1,\quad i=1,...,p \end{aligned} minimizesubject to​f0​(x)fi​(x)≤1,i=1,...,mhi​(x)=1,i=1,...,p​
其中 fif_ifi​ 为正项式,hih_ihi​ 为单项式。

首先说明,这个优化问题并不一定是凸的,因为 aia_iai​ 可以取任意实数,比如 ai=1/2a_i=1/2ai​=1/2 就不是凸的。那么我们这里为什么要介绍这个问题呢?别急,一会稍微做一个变换我们就可以解决这个问题了。那还有一个问题,这种形式的函数有什么意义呢?为什么专门引入这样一种非凸优化问题呢?我们看这个单项式函数 cx1a1x2a2⋯xnancx_1^{a_1}x_2^{a_2}\cdots x_n^{a_n}cx1a1​​x2a2​​⋯xnan​​,像不像体积或者面积的表达式?这也是他被称为“几何规划”的原因吧。

好,现在我们怎么把这个非凸的问题转化为凸优化问题呢?加个 log⁡\loglog 就行啦!对单项式来说
log⁡f(x)=∑iailog⁡xi+log⁡c=aTy+bf(x)=eaTy+b\begin{aligned} \log f(x) &= \sum_i a_i \log x_i +\log c = a^Ty+b \\ f(x) &= e^{a^Ty+b} \end{aligned} logf(x)f(x)​=i∑​ai​logxi​+logc=aTy+b=eaTy+b​
对多项式来说
log⁡f(x)=log⁡(∑iexp⁡(aiTy+bi))\log f(x)=\log \left(\sum_i \exp(a_i^Ty+b_i)\right) logf(x)=log(i∑​exp(aiT​y+bi​))
这么一来,取完对数后的问题就是凸的了,而且我们也知道 log⁡\loglog 是一个单射函数,原始优化问题就变成了
minimizelog⁡(∑kexp⁡(a0kTy+b0k))subject tolog⁡(∑kexp⁡(aikTy+bik))≤0,i=1,...,mGy+d=0\begin{aligned} \text{minimize} \quad& \log \left(\sum_k \exp(a_{0k}^Ty+b_{0k})\right) \\ \text{subject to} \quad& \log \left(\sum_k \exp(a_{ik}^Ty+b_{ik})\right)\le 0,\quad i=1,...,m \\ &Gy+d=0 \end{aligned} minimizesubject to​log(k∑​exp(a0kT​y+b0k​))log(k∑​exp(aikT​y+bik​))≤0,i=1,...,mGy+d=0​

4.8 半正定规划(SDP)

前面所讲到的都是标量函数,约束条件也都是函数值与 0 比大小,而前面的章节中我们也提到了广义不等式,对于正常锥则可以定义不等号。所以我们可以定义一种凸优化问题,这种凸优化问题的约束条件不再是普通不等式,而是广义不等式
minimizef0(x)subject tofi(x)⪯Ki0,i=1,...,mAx=b\begin{aligned} \text{minimize} \quad& f_0(x) \\ \text{subject to} \quad& f_i(x)\preceq_{K_i} 0,\quad i=1,...,m \\ &Ax=b \end{aligned} minimizesubject to​f0​(x)fi​(x)⪯Ki​​0,i=1,...,mAx=b​
其中 f0:Rn→Rf_0:R^n\to Rf0​:Rn→R 为凸函数,fi:Rn→Rkif_i:R^n\to R^{k_i}fi​:Rn→Rki​ 为关于正常锥 KiK_iKi​ 的凸函数。

注意这种带有广义不等式约束的凸优化问题与普通凸优化问题有着相同的性质,比如可行集为凸的,局部最优解就是全局最优解等。

一种简单形式的凸优化问题就是向量形式的,也就是说目标函数与约束都是仿射函数
minimizecTxsubject toFx+g⪯K0Ax=b\begin{aligned} \text{minimize} \quad& c^Tx \\ \text{subject to} \quad& Fx+g\preceq_K 0 \\ &Ax=b \end{aligned} minimizesubject to​cTxFx+g⪯K​0Ax=b​
这种向量形式的广义不等式实际上就是对每个元素进行比较,因此实际上可以按照每一行拆分成多个不等式,如果取 K=R+mK=R_+^mK=R+m​ 就与普通的线性规划(LP)没什么区别了。

接下来要介绍的就是重头戏**半正定规划(Semidefinite program)**了,我们取 K=S+nK=S^n_+K=S+n​
minimizecTxsubject tox1F1+x2F2+⋯+xnFn+G⪯K0Ax=b\begin{aligned} \text{minimize} \quad& c^Tx \\ \text{subject to} \quad& x_1 F_1+x_2F_2+\cdots+x_nF_n+G\preceq_K 0 \\ &Ax=b \end{aligned} minimizesubject to​cTxx1​F1​+x2​F2​+⋯+xn​Fn​+G⪯K​0Ax=b​
其中 Fi,G∈SnF_i,G\in S^nFi​,G∈Sn。

这里的不等式约束就是大名鼎鼎的线性矩阵不等式(linear matrix inequality, LMI)

如果说我们现在有两个不等式约束怎么办呢?
x1F^1+x2F^2+⋯+xnF^n+G⪯K0x1F~1+x2F~2+⋯+xnF~n+G⪯K0x_1 \hat{F}_1+x_2\hat{F}_2+\cdots+x_n\hat{F}_n+G\preceq_K 0 \\ x_1 \tilde{F}_1+x_2\tilde{F}_2+\cdots+x_n\tilde{F}_n+G\preceq_K 0 x1​F^1​+x2​F^2​+⋯+xn​F^n​+G⪯K​0x1​F~1​+x2​F~2​+⋯+xn​F~n​+G⪯K​0
合成一个更大的矩阵就可以了,实际上这种操作在后面也会经常见到
x1[F^100F~1]+x2[F^200F~2]+⋯+xn[F^n00F~n]+[G^00G~]⪯0x_{1}\left[\begin{array}{cc} \hat{F}_{1} & 0 \\ 0 & \tilde{F}_{1} \end{array}\right]+x_{2}\left[\begin{array}{cc} \hat{F}_{2} & 0 \\ 0 & \tilde{F}_{2} \end{array}\right]+\cdots+x_{n}\left[\begin{array}{cc} \hat{F}_{n} & 0 \\ 0 & \tilde{F}_{n} \end{array}\right]+\left[\begin{array}{cc} \hat{G} & 0 \\ 0 & \tilde{G} \end{array}\right] \preceq 0 x1​[F^1​0​0F~1​​]+x2​[F^2​0​0F~2​​]+⋯+xn​[F^n​0​0F~n​​]+[G^0​0G~​]⪯0
这是因为分块对角矩阵为正定矩阵等价于每一个子块都为正定矩阵。

例子 1:半正定规划之所以重要,是因为他的形式更广泛,前面说 SOCP 包含了 LP、QP、QCQP,而半正定规划则包含了 SOCP!比如下面的 SOCP 问题就可以转化为 SDP
SOCP:minimizefTxsubject to∥Aix+bi∥2≤ciTx+di,i=1,…,mSDP:minimizefTxsubject to[(ciTx+di)IAix+bi(Aix+bi)TciTx+di]⪰0,i=1,…,m\begin{aligned} SOCP:\qquad \text{minimize}&\quad f^{T} x \\ \text{subject to}&\quad \left\|A_{i} x+b_{i}\right\|_{2} \leq c_{i}^{T} x+d_{i}, \quad i=1, \ldots, m \\ \\ SDP:\qquad \text{minimize}&\quad f^{T} x \\ \text{subject to}&\quad \left[\begin{array}{cc} \left(c_{i}^{T} x+d_{i}\right) I & A_{i} x+b_{i} \\ \left(A_{i} x+b_{i}\right)^{T} & c_{i}^{T} x+d_{i} \end{array}\right] \succeq 0, \quad i=1, \ldots, m \end{aligned} SOCP:minimizesubject toSDP:minimizesubject to​fTx∥Ai​x+bi​∥2​≤ciT​x+di​,i=1,…,mfTx[(ciT​x+di​)I(Ai​x+bi​)T​Ai​x+bi​ciT​x+di​​]⪰0,i=1,…,m​
例子 2:最小化矩阵的最大特征值 min⁡λmax⁡(A(x))\min \lambda_{\max}(A(x))minλmax​(A(x)),也可以通过半正定规划来描述
minimizetsubject toA(x)⪯tI\begin{aligned} \text{minimize} \quad& t \\ \text{subject to} \quad& A(x)\preceq tI \end{aligned} minimizesubject to​tA(x)⪯tI​
其中优化变量为 x∈Rn,t∈Rx\in R^n,t\in Rx∈Rn,t∈R。这种等价转化是因为 λmax⁡(A)≤t⟺A⪯tI\lambda_{\max}(A)\le t\iff A\preceq tIλmax​(A)≤t⟺A⪯tI。

例子 3:最小化矩阵范数 min⁡∥A(x)∥2=(λ(A(x)TA(x)))1/2\min \Vert A(x)\Vert_2=\left(\lambda\left(A\left(x\right)^TA\left(x\right)\right)\right)^{1/2}min∥A(x)∥2​=(λ(A(x)TA(x)))1/2,也可以等价为SDP
minimizetsubject to[tIA(x)A(x)TtI]⪰0\begin{aligned} \text{minimize}&\quad t \\ \text{subject to}&\quad \left[\begin{array}{cc} t I & A(x) \\ A(x)^T & tI \end{array}\right] \succeq 0 \end{aligned} minimizesubject to​t[tIA(x)T​A(x)tI​]⪰0​

4.9 向量优化

前面介绍的所有优化问题的目标函数都是标量(尽管约束可能会出现广义不等式),如果目标函数为向量怎么办呢?前面的章节中我们介绍了广义的凸函数,同样也是基于锥定义的(实际上高维空间中“比大小”我们一般都需要通过锥来定义)。

一般的向量优化问题可以表示为
minimize(w.r.t. K)f0(x)subject tofi(x)≤0,i=1,...,mhi(x)=0,i=1,...,p\begin{aligned}{} &\text{minimize(w.r.t. K)} \quad& f_0(x) \\ &\text{subject to} \quad& f_i(x)\le 0,\quad i=1,...,m \\ & &h_i(x)=0,\quad i=1,...,p \end{aligned} ​minimize(w.r.t. K)subject to​f0​(x)fi​(x)≤0,i=1,...,mhi​(x)=0,i=1,...,p​
凸的向量优化问题只需要将上面的等式约束换为仿射函数 Ax=bAx=bAx=b,同时要求 f0f_0f0​ 为 K−K-K−convex 的,f1,...,fmf_1,...,f_mf1​,...,fm​ 为凸的。

向量约束优化问题的最优解相当于在下面的集合中寻找最优解
O={f0(x)∣xfeasible}\mathcal{O}=\{f_0(x)|x \text{ feasible}\} O={f0​(x)∣x feasible}
前面在将广义不等式和凸集的时候,我们讲过最小元极小元的概念,这两个概念是不是已经忘得差不多啦!反正我基本全忘了…让我们来复习一下。

复习:最小元与极小元

下面两幅图分别表示最小元和极小元

利用对偶锥,我们可以获得最小元的等价定义,即

xxx 是集合 SSS 关于 ⪯K\preceq_{K}⪯K​ 的最小元 ⟺\iff⟺ 对任意的 λ≻K∗0\lambda \succ_{K*} 0λ≻K∗​0,xxx 为 λTz\lambda^TzλTz 在集合 SSS 上的唯一最小解

什么意思呢?也就是说任意的 λ∈K∗\lambda\in K^*λ∈K∗,实际上都代表了一个法向量,也就是一个支撑超平面。如果 xxx 是最小元,则意味着对任意一个 (K∗K^*K∗所定义的) 支撑超平面来说,xxx 都是支撑点,就像下面这条幅图一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iGyU5JKH-1584543534267)(https://raw.githubusercontent.com/Glooow1024/ImgHosting/master/hexo/2020/10-minimal.png)]

极小元的定义是什么呢?

  • 充分条件:若对于某些 λ≻K∗0\lambda \succ_{K*} 0λ≻K∗​0,xxx minimizes λTz\lambda^TzλTz over SSS,⟹\Longrightarrow⟹ xxx 为极小元
  • 必要条件:xxx 为凸集 SSS 的极小元,⟹\Longrightarrow⟹ 存在非 0 的 λ≻K∗0\lambda \succ_{K*} 0λ≻K∗​0 使得 xxx minimizes λTz\lambda^TzλTz over SSS

我们来看充分条件,只需要存在某一个 λ∈K∗\lambda\in K^*λ∈K∗,使得 xxx 为对应支撑超平面的支撑点就可以了。比如下面这幅图,蓝色的点,我们可以找到这样一个蓝色的支撑超平面,使其为支撑点,所以它就是一个极小元;而对于红色的点来说,无论如何不可能找到一个支撑超平面,使其为支撑点,因此他就有可能不是极小元,因为这只是充分条件(对这个例子来说他就不是极小元)。

简单总结一下:

  • 最小元:无论沿着锥 K∗K^*K∗ 里边哪一个方向走,xxx 都是最小值点,那么他就是最小元;
  • 极小元:如果沿着其中某一个方向走,xxx 是最小值点,那么他就是极小元。

复习完了最小元和极小元,不要忘了正事。我们要考虑向量约束优化问题中的最优解
O={f0(x)∣xfeasible}\mathcal{O}=\{f_0(x)|x \text{ feasible}\} O={f0​(x)∣x feasible}
这是一个集合,如果 f0(x)f_0(x)f0​(x) 是关于锥 KKK 的最小元,那么对应的 xxx 就被称为最优解(optimal);如果 f0(x)f_0(x)f0​(x) 是关于锥 KKK 的极小元,那么对应的 xxx 则被称为 Pareto optimal。

例子:假如我们取 K=R+qK=R_+^qK=R+q​,其中
f0(x)=(F1(x),...,Fq(x))f_0(x)=(F_1(x),...,F_q(x)) f0​(x)=(F1​(x),...,Fq​(x))
相当于有 qqq 个不同的目标 FiF_iFi​,最好的情况当然是希望 FiF_iFi​ 都是最小的。

若 x∗x^*x∗ 为最小元(存在)就说明任意其他可行解 yyy 都有 f0(x∗)≤f(y)f_0(x^*)\le f(y)f0​(x∗)≤f(y),正是我们希望的;

而如果只能得到极小元 xpox^{po}xpo,就有对任意可行解 yyy,f0(y)⪯f0(xpo)⟹f0(xpo)=f(y)f_0(y)\preceq f_0(x^{po})\Longrightarrow f_0(x^{po})=f(y)f0​(y)⪯f0​(xpo)⟹f0​(xpo)=f(y)。这是什么意思呢?

  1. 首先不可能存在另一个 yyy 使得每一个元素都有 Fi(y)≤Fi(xpo)F_i(y)\le F_i(x^{po})Fi​(y)≤Fi​(xpo),要不然 xpox^{po}xpo 出现在这里的意义是什么?我们直接选择 yyy 作为极小元不就好了吗?如果存在那也顶多是 Fi(y)=Fi(xpo),∀iF_i(y)=F_i(x^{po}),\forall iFi​(y)=Fi​(xpo),∀i,这种情况下 yyy 跟 xpox^{po}xpo 其实没什么区别了。
  2. 第二点,有可能存在某些 yyy,满足对一些 iii 有 Fi(y)>Fi(xpo)F_i(y)>F_i(x^{po})Fi​(y)>Fi​(xpo),而对另一些 iii 则有 Fi(y)<Fi(xpo)F_i(y)<F_i(x^{po})Fi​(y)<Fi​(xpo),这意味着 yyy 在某些方面表现得比 xpox^{po}xpo 差,但在另一些方面则表现得更好,这实际上体现了我们在不同因素之间的一种权衡。

最后给我的博客打个广告,欢迎光临
https://glooow1024.github.io/
https://glooow.gitee.io/

凸优化学习笔记 10:凸优化问题相关推荐

  1. 凸优化学习笔记 11:对偶原理 拉格朗日函数

    前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...

  2. 凸优化学习笔记 15:梯度方法

    前面的章节基本上讲完了凸优化相关的理论部分,在对偶原理以及 KKT 条件那里我们已经体会到了理论之美!接下来我们就要进入求解算法的部分,这也是需要浓墨重彩的一部分,毕竟我们学习凸优化就是为了解决实际当 ...

  3. 凸优化学习笔记:QP及SOCP问题

    凸优化学习笔记:QP及SOCP问题 QP问题 定义 是什么 几何意义 QP.QCQP.LP之间的关系 例子 最小二乘及回归问题 多面体间距离 方差定界问题 基于随机费用的线性规划(考虑随机变量的优化问 ...

  4. 数学不好是原罪——凸优化学习笔记(个人学习记录汇总)

    中科大凸优化课程学习笔记 中科大凌青老师的课(现中山大学教授):中科大-凸优化 形而上学,不行退学,共勉!博客为个人手写笔记整理存档,不喜勿看. 凸优化学习笔记(一) 持续更新--

  5. 【学习笔记】斜率优化

    [学习笔记]斜率优化 [SDOI2012]任务安排 斜率优化入门题: 设\(f(x)\)为\(F(x)\)的后缀和,\(t(x)\)为\(T(x)\)的前缀和.\(dp(i)\)表示完成到第\(i\) ...

  6. Python+cplex运筹优化学习笔记(三)-营养膳食选择

    Python+cplex运筹优化学习笔记(三)-营养膳食选择 前言 首先呢,说明一下,本文只是自己在学习过程中运用到的例子,然后规整总结一下,随便写写自己所做的一些笔记.小白学习,有不对的地方还望大家 ...

  7. CUDA学习笔记之程序优化

    CUDA学习笔记之程序优化 标签: cuda优化conflict存储算法数学计算 2010-01-05 17:18 5035人阅读 评论(4) 收藏 举报 分类: CUDA(6) 版权声明:本文为博主 ...

  8. mysql性能优化-学习笔记

    mysql性能优化-学习笔记

  9. 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么

    嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...

最新文章

  1. 数据分析利器Jupyter Notebook!
  2. Nature:拟南芥微生物组功能研究3人工重组微生物群落
  3. java scala 混合打包_scala和java混合开发打包
  4. Linux基础-查看文件与目录
  5. java 中JFinal getModel方法和数据库使用出现问题解决办法
  6. Matlab添加BNT工具箱
  7. IT职场人生系列之十:创业观
  8. 阅读笔记——凤凰架构(第1章)
  9. 噪声dba是什么单位_请问:dBA是什么意思?和dB,dBm之类有什么关系?主要用... - 射频微波研发讨论区 - 52RD研发论坛...
  10. 熔断机制什么意思_熔断机制是什么意思(图文)
  11. 为fetch添加拦截器功能
  12. python回溯法解9*9数独
  13. Qt图表绘制(QtCharts)-绘制简单的盒须图[箱形图](12)
  14. 电脑录屏软件哪个好用,分享4款不限时长的录屏软件
  15. 网页快照(Snapshot)使用的相关研究(萌新向总结)
  16. 4.单片机之静态数码管和动态数码管
  17. 电脑运行慢?更频繁地使用它
  18. Android 四大组件之 BroadcastReceiver_3 实现开机启动拦截电话服务
  19. ipad做扩展屏方法
  20. Nginx接入链路监控SkyWalking

热门文章

  1. 7-1 城市间紧急救援
  2. linux 查看hive版本号,查看hive版本号
  3. verilog 语言实现任意分频
  4. rv1126--Create RKNN model fail, error=-13,rknn_init error ret=-13
  5. Shell脚本案例:实现局域网扫描功能
  6. 数据结构与算法(程序员常用的十种算法:上1~5)
  7. 2019-mathorcupB题-环形穿梭机调度模型(思路篇)
  8. 基于MATLAB的疲劳检测系统
  9. 注意力图Attention map可视化【亲测完美】
  10. php连接不同编码oracle,PHP连接Oracle出现中文乱码问题