multiprecisionr2

Mutli-Precision extension of Quadratic Regularization (R2) optimization algorithm to finite precision computations.

https://github.com/juliasmoothoptimizers/multiprecisionr2

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.0%) to scientific vocabulary
Last synced: 9 months ago · JSON representation ·

Repository

Mutli-Precision extension of Quadratic Regularization (R2) optimization algorithm to finite precision computations.

Basic Info
  • Host: GitHub
  • Owner: JuliaSmoothOptimizers
  • License: mpl-2.0
  • Language: Julia
  • Default Branch: main
  • Size: 954 KB
Statistics
  • Stars: 1
  • Watchers: 3
  • Forks: 2
  • Open Issues: 16
  • Releases: 0
Created about 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme License Citation

README.md

MultiPrecisionR2

Stable Dev Build Status Build Status Coverage

MultiPrecisionR2.jl is a package that implements a multi-precision version of the Quadratic Regularization (R2) algorithm, a first-order algorithm, for solving non-convex, continuous, smooth optimization problems. The Floating Point (FP) format is adapted dynamically during algorithm execution to use low precision FP formats as much as possible while ensuring convergence and numerical stability.

The package also implements multi-precision models FPMPNLPModel structure that derives from NLPModel implemented in NLPModels.jl. The interfaces for objective and gradient evaluations are extended to provide evaluation errors.

MultiPrecisionR2 can ensure numerical stability by using interval evaluations of the objective function and gradient. Interval evaluation relies on IntervalArithmetic.jl package to perform the interval evaluations.

Installation

julia using Pkg Pkg.add("MultiPrecisionR2")

Minimal examples

```@example using MultiPrecisionR2

FP = [Float16,Float32] # define floating point formats used by the algorithm for objective and gradient evaluation f(x) = x[1]^2 + x[2]^2 # some objective function x0 = ones(Float32,2) # initial point mpmodel = FPMPNLPModel(f,x0,FP); # instanciate a Floating Point Multi Precision NLPModel (FPMPNLPModel) stat = MPR2(mpmodel) # run the algorithm ```

```@example using MultiPrecisionR2 using ADNLPModels using OptimizationProblems using OptimizationProblems.ADNLPProblems

FP = [Float16,Float32] # define floating point formats used by the algorithm for objective and gradient evaluation s = :woods # select problem nlp = eval(s)(n=12,type = Val(FP[end]), backend = :generic) mpmodel = FPMPNLPModel(nlp,FP); # instanciate a Floating Point Multi Precision NLPModel (FPMPNLPModel) stat = MPR2(mpmodel) # run the algorithm ```

Warnings

  1. MultiPrecisionR2 is designed to work with FP formats. Other format, such as fix point, might break the convergence property of the algorithm.
    • Interval evaluation might fail with rounding mode other than :accurate for FP formats other than Float32 and Float64. When using interval evaluation, it is recommended to call julia using IntervalArithmetic setrounding(Interval,:accurate) before instanciating a FPMPNLPModel.
  2. If interval evaluation mode is used, interval evaluations of the objective and the gradient are automatically tested upon FPMPNLPModel instantiation. An error is thrown if the evaluation fails. This might happen for several reasons related to IntervalArithmetic.jl package.

Bug reports and discussions

If you think you found a bug, feel free to open an issue. Focused suggestions and requests can also be opened as issues. Before opening a pull request, start an issue or a discussion on the topic, please.

If you want to ask a question not suited for a bug report, feel free to start a discussion here. This forum is for general discussion about this repository and the JuliaSmoothOptimizers organization, so questions about any of our packages are welcome.

Owner

  • Name: JuliaSmoothOptimizers
  • Login: JuliaSmoothOptimizers
  • Kind: organization
  • Location: DOI: 10.5281/zenodo.2655082

Infrastructure and Solvers for Continuous Optimization in Julia

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Monnet
    given-names: Dominique
    orcid: 
title: "Multi Precion R2"
version: 
doi: 
date-released: 

GitHub Events

Total
  • Pull request event: 1
Last Year
  • Pull request event: 1

Issues and Pull Requests

Last synced: about 1 year ago

All Time
  • Total issues: 28
  • Total pull requests: 57
  • Average time to close issues: about 1 month
  • Average time to close pull requests: 5 days
  • Total issue authors: 3
  • Total pull request authors: 3
  • Average comments per issue: 0.39
  • Average comments per pull request: 0.75
  • Merged pull requests: 48
  • Bot issues: 0
  • Bot pull requests: 14
Past Year
  • Issues: 0
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • d-monnet (13)
  • tmigot (11)
  • amontoison (1)
Pull Request Authors
  • d-monnet (24)
  • tmigot (17)
  • github-actions[bot] (12)
Top Labels
Issue Labels
enhancement (9) question (2) documentation (2) bug (1)
Pull Request Labels
formatting (10) automated pr (10) no changelog (10) documentation (4) bug (1)

Dependencies

.github/workflows/Aqua.yml actions
  • actions/checkout v3 composite
  • julia-actions/setup-julia latest composite
.github/workflows/CI.yml actions
  • actions/cache v1 composite
  • actions/checkout v2 composite
  • codecov/codecov-action v1 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/CompatHelper.yml actions
  • julia-actions/setup-julia v1 composite
.github/workflows/Invalidations.yml actions
  • actions/checkout v3 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-invalidations v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/format_pr.yml actions
  • actions/checkout v2 composite
  • peter-evans/create-pull-request v3 composite
.github/workflows/register.yml actions
  • julia-actions/RegisterAction latest composite