Supplementary code for the manuscript: Criticality Measure-based Error Estimates for Infinite Dimensional Optimization
This repository contains supplementary code for the manuscript
Danlin Li, Johannes Milz 2024 Criticality Measure-based Error Estimates For Infinite Dimensional Optimization, preprint, http://arxiv.org/abs/2402.15948
Motivated by optimization with differential equations, we consider optimization problems with Hilbert spaces as decision spaces. As a consequence of their infinite dimensionality, the numerical solution necessitates finite dimensional approximations and discretizations. We develop an approximation framework and demonstrate criticality measure-based error estimates. We consider criticality measures inspired by those used within optimization methods, such as semismooth Newton and (conditional) gradient methods. Furthermore, we show that our error estimates are order-optimal. Our findings augment existing distance-based error estimates, but do not rely on strong convexity or second-order sufficient optimality conditions. Moreover, our error estimates can be used for code verification and validation. We illustrate our theoretical convergence rates on linear, semilinear and bilinear PDE-constrained optimization.
All the scripts are located in the folder called code
in the repository. Is is assumed that you run the script from within this folder.
conda env create -f environment.yml
conda activate ErrorEstimation
We can solve the optimization problems and evaluate criticality measures by running the shell script.
./simulation_rates.sh
This will create a new folder in code/output
. Its name is a time stamp.
After updating the time stamp, the convergence rate plots can be created by running
./plot_rates.sh
After updating the time stamp, the optimal controls can be visualized by running
./plot_control.sh
The Dockerfile can be used by running:
docker build -t errorestimation . --no-cache --network=host
docker run -it errorestimation
The prebuild docker image can be downloaded and run by executing
docker pull ghcr.io/milzj/errorestimation:latest
docker run --rm -it ghcr.io/milzj/errorestimation:latest
The latter command my be replaced by
docker run -ti -v ${PWD}:/root/shared -w /root/shared --entrypoint=/bin/bash --rm ghcr.io/milzj/errorestimation:latest
@software{Li2024,
author = {Li, Danlin and Milz, Johannes},
doi = {10.48550/arXiv.2402.15948},
title = {Supplementary code for the manuscript: Criticality Measure-based Error Estimates for Infinite Dimensional Optimization},
url = {https://github.com/milzj/ErrorEstimation},
year = {2024}
}
If you have any troubles please file an issue in the GitHub repository.
- Danlin Li
- Johannes Milz