GPDPS
is a Julia package that provides the reference implementation of the generalized primal-dual proximal splitting approach described in the paper "Primal-dual proximal splitting and generalized conjugation in non-smooth non-convex optimization" by Christian Clason, Stanislav Mazurenko, and Tuomo Valkonen.
To use the provided test codes (compatible with Julia version 1.0-1.2, tested on macOS and Linux x86_64):
- start Julia from this directory with
julia --project=.
(or with the relative path to theGPDPS.jl
directory from somewhere else) - do
]instantiate
to download all dependencies (only required the first time, make sure you go back to standard Julia prompt with backspace afterwards) - (highly recommended:
using Revise
so you can make changes in the code without having to restart Julia; if not install, startjulia
(without--project
) and]add Revise
) - load the package with
using GPDPS
To run the example for the elliptic Nash equilibrium problem:
- do
test_enep(N)
, whereN
controls the discretization (number of nodes per coordinate, defaultN=128
)
To run the example for the Huber-Potts segmentation model:
- do
test_potts(alpha,gamma,keyword=value)
, wherekeyword
is one or more of the following (comma separated, order insensitive, may be removed before submission) with default value if omitted:
image
: test image; default is"blobs"
(size 256x254), other images in.tif
format can be specified by file name if placed in theimg
folderisotropic
: use isotropic (valuetrue
, default) or anisotropic (valuefalse)
Potts modelmaxit
: maximum number of iterations (default 500000)
If alpha
or gamma
are not specified, the default values 1
and 1e-3
are used.
Possible issues:
- on macOS, it may also be required to
]add QuartzImageIO
if it is not included in the default environment.
If you find this code useful, you can cite the paper as
@article{GPDPS,
author = {Clason, Christian and Mazurenko, Stanislav and Valkonen, Tuomo},
title = {Primal-dual proximal splitting and generalized conjugation in non-smooth non-convex optimization},
journal = {Applied Mathematics \& Optimization},
volume = {84},
number = {2},
pages = {1239--1284},
year = {2021},
eprinttype = {arxiv},
eprint = {1901.02746},
}