Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
14676d0
preliminary solve! for TRDH
MaxenceGollier Apr 29, 2025
298d0b5
further solve! TRDH
MaxenceGollier May 4, 2025
4efd12b
Merge branch 'TR-JSO' of https://github.com/MaxenceGollier/Regularize…
MaxenceGollier Jun 5, 2025
4b12fa9
non-allocating, JSO-compliant TRDH
MaxenceGollier Jun 6, 2025
2866da0
make TRDH equal when reduce_TR = false
MaxenceGollier Jun 6, 2025
196edbc
TRDH function signatures
MaxenceGollier Jun 6, 2025
c294d57
TR JSO-struct
MaxenceGollier Jun 10, 2025
6c43a51
fix minor bug in TRDH
MaxenceGollier Jul 8, 2025
a6e9b26
add JSO compliant TR
MaxenceGollier Jul 8, 2025
b737d55
solve bugs for TR with TRDH subsolver
MaxenceGollier Jul 8, 2025
7fbfc5c
add doc and unit tests for TRDH
MaxenceGollier Jul 10, 2025
5f6164b
solve unallocated memory issue
MaxenceGollier Jul 10, 2025
52117ed
fix reproducibility in TR
MaxenceGollier Jul 10, 2025
3358ff0
unit tests for TR
MaxenceGollier Jul 11, 2025
836c02e
TR function signatures
MaxenceGollier Jul 11, 2025
2bd11ef
add kwargs for TRDH
MaxenceGollier Jul 11, 2025
c389274
fix uninitalized memory in TRDH
MaxenceGollier Jul 11, 2025
ad7990d
update doc for TR
MaxenceGollier Jul 11, 2025
ca4d66c
fix reproducibility in TRDH
MaxenceGollier Jul 12, 2025
1abfe57
fix reproducibility with TR
MaxenceGollier Jul 12, 2025
ea0eaa2
fix bound test for new TR signature
MaxenceGollier Jul 12, 2025
5b2cc0a
fix reproducibility with TR-TRDH
MaxenceGollier Jul 12, 2025
b77a5a3
fix bug in TRDH
MaxenceGollier Jul 12, 2025
8202046
apply julia formatter
MaxenceGollier Aug 8, 2025
08bc4d6
implicit hessian update fix
MaxenceGollier Aug 17, 2025
03bd516
update doc
MaxenceGollier Aug 17, 2025
120d073
add callback docstring
MaxenceGollier Aug 17, 2025
fc63949
add update_bounds function
MaxenceGollier Aug 17, 2025
c4f9b68
add subsolver logger
MaxenceGollier Aug 17, 2025
37d9bac
remove alpha and beta params from keyword arguments
MaxenceGollier Aug 20, 2025
032a2b5
add reduce_TR doc
MaxenceGollier Aug 20, 2025
d90ba89
remove FirstOrderModel
MaxenceGollier Sep 8, 2025
709d455
remove commented code
MaxenceGollier Sep 8, 2025
a7df86f
add ManualNLPModels dep
MaxenceGollier Sep 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ author = ["Robert Baraldi <rbaraldi@uw.edu> and Dominique Orban <dominique.orban
version = "0.1.0"

[deps]
Arpack = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97"
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
LinearOperators = "5c8ed15e-5a4c-59e4-a42b-c7e8811fb125"
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
ManualNLPModels = "30dfa513-9b2f-4fb3-9796-781eabac1617"
NLPModels = "a4795742-8479-5a88-8948-cc11e1c8c1a6"
NLPModelsModifiers = "e01155f1-5c6f-4375-a9d8-616dd036575f"
Percival = "01435c0c-c90d-11e9-3788-63660f8fbccc"
Expand All @@ -15,18 +17,18 @@ ProximalOperators = "a725b495-10eb-56fe-b38b-717eba820537"
RegularizedProblems = "ea076b23-609f-44d2-bb12-a4ae45328278"
ShiftedProximalOperators = "d4fd37fa-580c-4e43-9b30-361c21aae263"
SolverCore = "ff4d7338-4cf1-434d-91df-b86cb86fb843"
Arpack = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97"

[compat]
Arpack = "0.5"
LinearOperators = "2.10.0"
ManualNLPModels = "0.2.0"
NLPModels = "0.19, 0.20, 0.21"
NLPModelsModifiers = "0.7"
Percival = "0.7.2"
ProximalOperators = "0.15"
RegularizedProblems = "0.1.1"
ShiftedProximalOperators = "0.2"
SolverCore = "0.3.0"
Arpack = "0.5"
julia = "^1.6.0"

[extras]
Expand Down
31 changes: 30 additions & 1 deletion src/RegularizedOptimization.jl
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,38 @@ using Arpack, ProximalOperators

# dependencies from us
using LinearOperators,
NLPModels, NLPModelsModifiers, RegularizedProblems, ShiftedProximalOperators, SolverCore
ManualNLPModels, NLPModels, NLPModelsModifiers, RegularizedProblems, ShiftedProximalOperators, SolverCore
using Percival: AugLagModel, update_y!, update_μ!

const callback_docstring = "
The callback is called at each iteration.
The expected signature of the callback is `callback(nlp, solver, stats)`, and its output is ignored.
Changing any of the input arguments will affect the subsequent iterations.
In particular, setting `stats.status = :user` will stop the algorithm.
All relevant information should be available in `nlp` and `solver`.
Notably, you can access, and modify, the following:
- `solver.xk`: current iterate;
- `solver.∇fk`: current gradient;
- `stats`: structure holding the output of the algorithm (`GenericExecutionStats`), which contains, among other things:
- `stats.iter`: current iteration counter;
- `stats.objective`: current objective function value;
- `stats.solver_specific[:smooth_obj]`: current value of the smooth part of the objective function;
- `stats.solver_specific[:nonsmooth_obj]`: current value of the nonsmooth part of the objective function;
- `stats.status`: current status of the algorithm. Should be `:unknown` unless the algorithm has attained a stopping criterion. Changing this to anything other than `:unknown` will stop the algorithm, but you should use `:user` to properly indicate the intention;
- `stats.elapsed_time`: elapsed time in seconds.
"

# update l_bound_k and u_bound_k
function update_bounds!(l_bound_k, u_bound_k, is_subsolver, l_bound, u_bound, xk, Δ)
if is_subsolver
@. l_bound_k = max(xk - Δ, l_bound)
@. u_bound_k = min(xk + Δ, u_bound)
else
@. l_bound_k = max(-Δ, l_bound - xk)
@. u_bound_k = min(Δ, u_bound - xk)
end
end

include("utils.jl")
include("input_struct.jl")
include("PG_alg.jl")
Expand Down
Loading
Loading