使用CVXPY求解最小化问题时pcost/dcost为何上升?
关于CVXPY中ECOS求解器pcost/dcost上升的解释
你确实可能对pcost的含义存在误解,下面直白解释这个现象:
1. pcost和dcost的核心定义
pcost是原始问题目标函数的当前迭代值(primal cost),dcost是对偶问题目标函数的当前迭代值(dual cost)。- 对于凸优化的最小化问题,强对偶性成立时,原始问题的最优值等于对偶问题的最优值;迭代过程中,
dcost始终是pcost的下界(针对最小化场景)。
2. 你的例子中pcost上升的本质原因
你定义的约束是x >= 2,而ECOS这类内点法求解器的初始迭代点通常在可行域外(比如默认初始点可能是x=[0,0]),这时候计算出的pcost=0.667是不满足约束的点的目标值,本身不具备可行域内的参考意义。
随着迭代推进,求解器逐步向可行域靠近,找到满足x>=2的点,这时候目标函数值自然会上升——因为可行域内的点的最小目标值就是6(当x=[2,2]时,x[0] + norm(x,1) = 2 + 2+2 =6)。迭代过程本质是从可行域外的低目标值,逐步收敛到可行域内的最优目标值,所以pcost会持续上升直到收敛。
3. 判断求解正确性的关键
无需纠结迭代过程中的数值变化,看最终收敛结果即可:你的例子中pcost和dcost最终都收敛到6左右,和理论最优值一致,同时solver输出OPTIMAL,说明求解完全正确。
内容的提问来源于stack exchange,提问作者Alireza Roshanzamir
相关产品推荐
相关产品推荐

