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.jldirectory from somewhere else) - do
]instantiateto download all dependencies (only required the first time, make sure you go back to standard Julia prompt with backspace afterwards) - (highly recommended:
using Reviseso 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), whereNcontrols 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), wherekeywordis 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.tifformat can be specified by file name if placed in theimgfolderisotropic: 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 QuartzImageIOif 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},
}