On this page:

Proximal Bundle Method for DC Programming

"If there is a problem you can't solve, then there is an easier problem you can solve: find it."
- George Polya


PBDC is a proximal bundle solver (Fortran 95) for nonsmooth DC programming (difference of two convex functions) by K. Joki. The software utilizes code PVMM by Prof. Ladislav Luksan that is licensed by the GNU Lesser General Public License (LGPL). The software is free for academic teaching and research purposes but I ask you to refer the reference given below if you use it. To use the software modify tpbdc.f95 and functions.f95 as needed.

Version 2 of the software utilizes OpenMP at each round of 'main iteration' to calculate subproblems in parallel. To turn down OpenMP, see instructions in tpbdc.f95. In addition, there is a possibility to use simple stepsize determination after each 'main iteration'.

If you have any questions conserning the software, please contact directly the author Kaisa Joki.

Code (version 2)

tpbdc.f95 - Main program for PBDC.
constants.f95 - Double precision.
bundle1.f95 - Bundle of DC component f_1.
bundle2.f95 - Bundle of DC component f_2.
functions.f95 - User-specified DC components f_1 and f_2 together with subgradients of DC components. Contains also user-specified initial values for parameters.
norm_min.f95 - Solver for the norm minimization problem.
fun.f95 - Defines objective funtion and gradient of the norm minimization problem.
pbdc.f95 - PBDC method.

plqdf1.f - Quadratic solver by L. Luksan.
pvmm.f - Variable metric method by L. Luksan.
mqsubs.f - Basic modules for PVMM by L. Luksan.
pqsubs.f - Matrix modules for PVMM by L. Luksan.

Makefile - Makefile.

testproblems.f95 - Test problems used in [1].

pbdc_v2.tar.gz - all the above in compressed form.

You can also use an older version of the code.

Code (version 1)

pbdc_v1.tar.gz - Older version of PBDC in compressed form (no OpenMP included).