Skip to content

Implementation of Penalty-Decomposition Derivative-Free method for the Minimization of Partially Separable functions

Notifications You must be signed in to change notification settings

dadoPuccio/PD_derivative_free

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Penalty Decomposition Derivative-Free Method

Implementation of the Penalty-Decomposition Derivative-Free (PDDF) method introduced in

Cecere F., Lapucci M., Pucci D. and Sciandrone M. - Penalty decomposition derivative free method for the minimization of partially separable functions over a convex feasible set - arXiv pre-print (2025)

Installation

In order to use PDDF you will need a working conda installation. We suggest the creation of a new conda environment with Python 3.13. The required dependencies numpy and PyNomadBBO can be installed through:

pip install numpy
pip install PyNomadBBO

Another required dependency is PyCUTEst, that can be installed following the installation guide. To run the Lockwood problem make sure to download the source code from Robert Gramacy's Surrogates Website and to compile it. The RUNLOCK_PATH in problems/lockwood.py should be modified accordingly.

Usage

We provide the implementation of PDDF, its parallel version PDDF_P and the implementation of the competitors considered in the paper LS and SALS. Installing PyNomadBBO package it is possible to run also MADS.

In order to run the experiments, execute the following:

python main.py [options]

The following arguments shall be specified:

Short Option Long Option Type Description Default
-p --problem_class str Class of problems to be executed None (required)
-a --algorithm str Algorithm to be executed None (required)
-ld --logs_dir str Path to save the output logs None (required)
-pause --pause float Pause (in seconds) at each function evaluation 0.
-toll --toll float Termination tolerance 1e-4
-tl --time_limt int Time limit (in seconds) 600

In main.py, the complete list of algorithm parameters can be found and adjusted according to the specific problem considered.

It is possible to run the experiments reported in the paper with:

python main.py -p UNCONSTR -a STD -ld output_dir
python main.py -p BOUNDED -a STD -ld output_dir
python main.py -p LOCKWOOD -a STD -ld output_dir -toll 0.01 -tl 3600

python main.py -p UNCONSTR -a FAST -ld output_dir -pause 0.001 -tl 3600
python main.py -p BOUNDED -a FAST -ld output_dir -pause 0.001 -tl 3600

Credits

In case you employed our code for research purposes, please cite:

@misc{cecere2025penaltydecompositionderivativefree,
      title={Penalty decomposition derivative free method for the minimization of partially separable functions over a convex feasible set}, 
      author={Francesco Cecere and Matteo Lapucci and Davide Pucci and Marco Sciandrone},
      year={2025},
      eprint={2503.21631},
      archivePrefix={arXiv},
      primaryClass={math.OC},
      url={https://arxiv.org/abs/2503.21631}, 
}

About

Implementation of Penalty-Decomposition Derivative-Free method for the Minimization of Partially Separable functions

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages