GithubHelp home page GithubHelp logo

pdlp's Introduction

Implementation

Problems

原问题

$$ \min_{x\ge 0}\max_{y} {\mathcal L}(x,y) = c^\top x+y^\top b-y^\top Ax. $$

$$ F(z)= \begin{pmatrix} \nabla_x {\cal L}(x,y)\\ -\nabla_y {\cal L}(x,y) \end{pmatrix} =\begin{pmatrix} c-A^\top y\\ Ax-b \end{pmatrix} $$

PrimalDualStep

  • PPM 解

image-20230918192334096.png

  • EGM 解二次优化问题

image-20230918192429086.png

迭代公式:

$$ \begin{align*} & \hat z^{t+1} ={\rm Proj}_Z ( z^t-\eta F(z^t) )\\ & z^{t+1}={\rm Proj}_Z(z^t-\eta F(\hat z ^{t+1})) \end{align*} $$

  • PDHG 解二次优化问题

image-20230918192640621.png

迭代公式

$$ \begin{align*} & x^{t+1}=(x^t -\eta /w (c-A^\top y))_+\\ & y^{t+1}=y-\eta w (-b+A(2x^{t+1}-x^t)) \end{align*} $$

  • ADMM

image-20230929202435675.png

$$ \begin{align*} &\theta_1=0, \theta_2(x_V)=c^\top x_V\\ &U=I,V=-I,q=0\\ &x_U^{t+1}=A^\top(AA^\top)^{-1}(b+A(-x_V^t-\frac1\eta y^t )) -(-x_V^t-\frac1\eta y^t ) \\ &x_V^{t+1}=x_U-\frac 1\eta y^t-\frac 1\eta c \end{align*} $$

image-20230929202527319.png

normalized duality gap

$$ \begin{align*} & \rho_r(z):=\frac{\max_{\hat{z}\in W_r(z) }{{\cal L}(x,\hat y)- {\cal L}(\hat x,y)}}{r}\\ & W_r(z):={\hat z \in Z\mid |z-\hat z |\le r } \end{align*} $$

$$ {\cal L}(x,y)=c^\top x+y^\top b-y^\top Ax,\quad x\ge 0,y\in {\mathbb R}^m $$

求在 $z$ 处的 $\rho(z)$ 即要求一个二次约束线性目标函数的优化问题

image-20230918191501489.png

具体地

$$ \begin{align*} {\cal L}(x,\hat y)-{\cal L}(\hat x,y)&=c^\top x+\hat y ^\top b-\hat y ^\top Ax -(c^\top \hat x+y^\top b -y^\top A \hat x)\\ &=\hat y ^\top (b-Ax) +(y^\top A-c^\top)\hat x +c^\top x -y^\top b \end{align*} $$

  • $Z={\mathbb R}^{m+n}$ 时,

$$ \rho_r(z)=|F(z)|=\left | \begin{pmatrix} \nabla_x{\cal L}(x,y)\\ -\nabla _y {\cal L}(x,y)\\ \end{pmatrix}\right | $$

  • 而对标准线性规划 $Z=X\times Y,X={\mathbb R}^m_+$ ,则需使用数值算法求值

可用算法如下: algo

Restart

Adaptive

image-20230922181437110.png

Results

使用库: Gurobi, Eigen3, intel MKL(非必要)

PDHG EGM ADMM
qap10
qap15
nug8-3rd
nug20

PDHG

参数:

  • $\eta=\frac{0.9}{\sigma_{max}(A)},w=4^2$
qap10.png qap15.png
nug08-3rd.png nug20.png

ADMM

qap10.png qap15.png
nug08-3rd.png nug20.png

Related links

Mathematical background for PDLP | OR-Tools | Google for Developers

google-research/FirstOrderLp.jl: Experimental first-order solvers for linear and quadratic programming. (github.com)

google-research/restarting_FOM_for_LP at master · google-research/google-research (github.com)

pdlp's People

Contributors

try2beby avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.