# Double Bundle Method for Nonsmooth DC Programming

## DBDC

DBDC is a proximal double bundle solver (Fortran 95) for nonsmooth DC programming (difference of two convex functions) by K. Joki. DBDC uses a new procedure guaranteeing Clarke stationarity for solutions by utilizing only DC components of the objective function. This optimality condition is stronger than the criticality condition typically used in DC programming. In addition, if a solution candidate is not Clarke stationary, then a descent direction is generated.

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'. The software uses code PLQDF1 by Prof. Ladislav Luksan to solve quadratic direction finding problem.

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 tdbdc.f95 and functions.f95 as needed. If you have any questions conserning the software, please contact directly the author Kaisa Joki.

### Code

tdbdc.f95 | - Main program for DBDC. |
---|---|

constants.f95 | - Double precision and some other parameters. |

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. |

dbdc.f95 | - DBDC method. |

plqdf1.f | - Quadratic solver by L. Luksan. |

Makefile | - Makefile. |

dbdc.tar.gz | - all the above in compressed form. |

### References

- K. Joki, A. Bagirov, N. Karmitsa, M.M. Mäkelä, and S. Taheri, "Double Bundle Method for Nonsmooth DC Optimization", TUCS Technical Report, No. 1173, Turku Centre for Computer Science, Turku, 2017.