Skip to content

Commit

Permalink
minor changes for JOSS paper (#33)
Browse files Browse the repository at this point in the history
  • Loading branch information
danielskatz authored Jun 18, 2024
1 parent 83ff675 commit 2c1a165
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 14 deletions.
18 changes: 9 additions & 9 deletions paper/bibliography.bib
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
@article{bezanson2017julia,
title = {Julia: {{A Fresh Approach}} to {{Numerical Computing}}},
title = {Julia: A Fresh Approach to Numerical Computing},
shorttitle = {Julia},
author = {Bezanson, Jeff and Edelman, Alan and Karpinski, Stefan and Shah, Viral B.},
year = {2017},
Expand All @@ -16,7 +16,7 @@ @article{bezanson2017julia
}

@article{rackauckas2017,
title = {{{DifferentialEquations}}.Jl -- a Performant and Feature-Rich Ecosystem for Solving Differential Equations in Julia},
title = {{DifferentialEquations.jl} -- a Performant and Feature-Rich Ecosystem for Solving Differential Equations in {J}ulia},
author = {Rackauckas, Christopher and Nie, Qing},
year = {2017},
journal = {The Journal of Open Research Software},
Expand All @@ -27,7 +27,7 @@ @article{rackauckas2017
}

@misc{vaibhav_kumar_dixit_2023_7738525,
title = {Optimization.Jl: {{A}} Unified Optimization Package},
title = {{Optimization.jl}: A Unified Optimization Package},
author = {Dixit, Vaibhav Kumar and Rackauckas, Christopher},
year = {2023},
month = mar,
Expand All @@ -36,7 +36,7 @@ @misc{vaibhav_kumar_dixit_2023_7738525
}

@phdthesis{Koerkel2002,
title = {Numerische {{Methoden}} F{\"u}r {{Optimale Versuchsplanungsprobleme}} Bei Nichtlinearen {{DAE-Modellen}}},
title = {Numerische Methoden F{\"u}r Optimale Versuchsplanungsprobleme Bei Nichtlinearen {DAE-Modellen}},
author = {K{\"o}rkel, S.},
year = {2002},
address = {{Heidelberg}},
Expand All @@ -46,7 +46,7 @@ @phdthesis{Koerkel2002
}

@inproceedings{juniper,
title = {Juniper: {{An Open-Source Nonlinear Branch-and-Bound Solver}} in {{Julia}}},
title = {Juniper: An Open-Source Nonlinear Branch-and-Bound Solver in {J}ulia},
shorttitle = {Juniper},
booktitle = {Integration of {{Constraint Programming}}, {{Artificial Intelligence}}, and {{Operations Research}}},
author = {Kr{\"o}ger, Ole and Coffrin, Carleton and Hijazi, Hassan and Nagarajan, Harsha},
Expand All @@ -62,7 +62,7 @@ @inproceedings{juniper
}

@article{Li2000SensitivityAnalysisDifferential,
title = {Sensitivity Analysis of {{Differential}}--{{Algebraic}} Equations: {{A}} Comparison of Methods on a Special Problem},
title = {Sensitivity Analysis of Differential--Algebraic Equations: A Comparison of Methods on a Special Problem},
shorttitle = {Sensitivity Analysis of {{Differential}}--{{Algebraic}} Equations},
author = {Li, Shengtai and Petzold, Linda and Zhu, Wenjie},
year = {2000},
Expand All @@ -80,7 +80,7 @@ @article{Li2000SensitivityAnalysisDifferential
}

@misc{ma2021modelingtoolkit,
title = {{{ModelingToolkit}}: {{A Composable Graph Transformation System For Equation-Based Modeling}}},
title = {{ModelingToolkit}: A Composable Graph Transformation System For Equation-Based Modeling},
shorttitle = {{{ModelingToolkit}}},
author = {Ma, Yingbo and Gowda, Shashi and Anantharaman, Ranjan and Laughman, Chris and Shah, Viral and Rackauckas, Chris},
year = {2022},
Expand All @@ -96,7 +96,7 @@ @misc{ma2021modelingtoolkit
}

@article{Sager2013,
title = {Sampling {{Decisions}} in {{Optimum Experimental Design}} in the {{Light}} of {{Pontryagin}}'s {{Maximum Principle}}},
title = {Sampling Decisions in Optimum Experimental Design in the Light of {P}ontryagin's Maximum Principle},
author = {Sager, Sebastian},
year = {2013},
month = jan,
Expand All @@ -113,7 +113,7 @@ @article{Sager2013
}

@article{Waechter2006,
title = {On the {{Implementation}} of an {{Interior-Point Filter Line-Search Algorithm}} for {{Large-Scale Nonlinear Programming}}},
title = {On the Implementation of an Interior-Point Filter Line-Search Algorithm for Large-Scale Nonlinear Programming},
author = {W{\"a}chter, A. and Biegler, L.T.},
year = {2006},
journal = {Mathematical Programming},
Expand Down
10 changes: 5 additions & 5 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ bibliography: bibliography.bib
Optimum experimental design (OED) problems are typically encountered when unknown or uncertain
parameters of mathematical models are to be estimated from an observable, maybe even controllable, process. In this scenario, OED can be used to decide on an experimental setup before collecting the data, i.e., deciding on when to measure and / or how to stimulate a dynamic process in order to maximize the amount of information gathered such that the parameters can be accurately estimated.

Our software package DynamicOED.jl facilitates the solution of optimum experimental design problems for dynamical systems. Following ideas presented in [@Sager2013], we cast the OED problem into an optimal control problem. This is done by augmenting the user-provided system of ordinary differential equations (ODE) or differential algebraic equations (DAE) with their variational differential (algebraic) equations and the differential equation governing the evolution of the Fisher information matrix (FIM). A suitable criterion based on the FIM is then optimized in the resulting optimal control problem using a direct *first discretize, then optimize* approach.
Our software package, DynamicOED.jl, facilitates the solution of optimum experimental design problems for dynamical systems. Following ideas presented in @Sager2013, we cast the OED problem into an optimal control problem. This is done by augmenting the user-provided system of ordinary differential equations (ODE) or differential algebraic equations (DAE) with their variational differential (algebraic) equations and the differential equation governing the evolution of the Fisher information matrix (FIM). A suitable criterion based on the FIM is then optimized in the resulting optimal control problem using a direct *first discretize, then optimize* approach.

# Statement of need

`DynamicOED.jl` is a Julia [@bezanson2017julia] package for solving optimum experimental design problems. Solving OED problems is of interest for several reasons. First, all model-based optimization strategies rely on the knowledge of the accurate values of the model's parameters. Second, computing optimal experimental designs before performing the actual experiments to collect data allows to reduce the number of needed experiments or measurements. This is important in practical applications when measuring quantities of interest is only possible to a limited extent, e.g., due to high costs of performing the measurements.

Our package is designed for high flexibility and ease of use. For formulating the underlying dynamical system, our package bases on the `ODESystem` from `ModelingToolkit.jl` [@ma2021modelingtoolkit]. This enables researchers and modelers to easily investigate and analyze their models and allows them to collect insightful data for their parameter estimation problems.
Our package is designed for high flexibility and ease of use. For formulating the underlying dynamical system, our package is based on the `ODESystem` from `ModelingToolkit.jl` [@ma2021modelingtoolkit]. This enables researchers and modelers to easily investigate and analyze their models and allows them to collect insightful data for their parameter estimation problems.

To our knowledge it is the first dedicated package for solving general optimal experimental design problems with dynamical systems written in the programming language Julia. It may therefore be a valuable resource to different communities dealing with experimental data and parameter estimation problems.
To our knowledge, this is the first dedicated package for solving general optimal experimental design problems with dynamical systems written in the Julia programming language. It may therefore be a valuable resource to different communities dealing with experimental data and parameter estimation problems.

# Problem statement and usage example

Expand All @@ -65,9 +65,9 @@ $$
$$
where $\mathcal{T} = [t_0, t_f]$ is the fixed time horizon and $x : \mathcal{T} \mapsto \mathbb{R}^{n_x}$ are the differential states. The first and second constraint denote the dynamical system and the sensitivities of the solution of the dynamical system with respect to the uncertain parameters, respectively, and are given in an implicit form. Here, $f_{\dot x}$, ($f_x$) denote the partial derivative of $f$ with respect to $\dot x$ and ($x$). The objective $\phi(F(t_f))$ of Bolza type is a suited objective function, e.g., the D-criterion $\phi(F(t_f)) = \det(F^{-1}(t_f))$. The evolution of the symmetric FIM $F : \mathcal{T} \mapsto \mathbb{R}^{n_p \times n_p}$ is governed by the measurement function $h: \mathbb{R}^{n_x} \mapsto \mathbb{R}^{n_h}$, the sensitivities $G : \mathcal{T} \mapsto \mathbb{R}^{n_x \times n_p}$ and the sampling decisions $w(t) \in \{0,1\}^{n_h}$. The latter are the main optimization variables and represent the decision whether to measure at a given time point or not. In our direct approach, these variables are discretized, hence we write $w(t) \in \{0,1\}^{N_w \times n_h}$, where $N_w$ is the (user-supplied) number of discretization intervals on $\mathcal{T}$. The sampling decisions are then accumulated in the variables $z$ and constrained by $M \in \mathbb{R}^{n_h}_{+}$. The controls $u \in \mathcal{U}$ can either be fixed or also be viewed as optimization variables after discretization.

For more information on optimal experimental design for DAEs and their sensitivity analysis, we refer to [@Koerkel2002; @Li2000SensitivityAnalysisDifferential].
For more information on optimal experimental design for DAEs and their sensitivity analysis, we refer to @Koerkel2002 and @Li2000SensitivityAnalysisDifferential.

The functionality in this package integrates into Julia's [`SciML`](https://sciml.ai/) ecosystem. The model is provided in symbolic form as an `ODESystem` using `ModelingToolkit.jl` [@ma2021modelingtoolkit] with additional frequency information for the observed and control variables. Both ODE or DAE systems can be provided. `DynamicOED.jl` augments the given system symbolically with its sensitivity equations and the dynamics of the FIM. The resulting system together with a sufficient information criterion defines an `OEDProblem`, solveable using `DifferentialEquations.jl` [@rackauckas2017]. Here, all sampling and control decisions are discretized in time and can be used to model additional constraints. At last, the `OEDProblem` can be transformed into an `OptimizationProblem` as a sufficient input to `Optimization.jl` [@vaibhav_kumar_dixit_2023_7738525]. Here, a variety of optimization solvers for nonlinear programming and mixed-integer nonlinear programming available as additional backends, e.g. `Juniper` [@juniper] or `Ipopt` [@Waechter2006]. A simple example demonstrates the usage of `DynamicOED.jl` for the Lotka-Volterra system [@Sager2013].
The functionality in this package integrates into Julia's [`SciML`](https://sciml.ai/) ecosystem. The model is provided in symbolic form as an `ODESystem` using `ModelingToolkit.jl` [@ma2021modelingtoolkit] with additional frequency information for the observed and control variables. Both ODE or DAE systems can be provided. `DynamicOED.jl` augments the given system symbolically with its sensitivity equations and the dynamics of the FIM. The resulting system together with a sufficient information criterion defines an `OEDProblem`, solveable using `DifferentialEquations.jl` [@rackauckas2017]. Here, all sampling and control decisions are discretized in time and can be used to model additional constraints. At last, the `OEDProblem` can be transformed into an `OptimizationProblem` as a sufficient input to `Optimization.jl` [@vaibhav_kumar_dixit_2023_7738525]. Here, a variety of optimization solvers for nonlinear programming and mixed-integer nonlinear programming available as additional backends, e.g., `Juniper` [@juniper] or `Ipopt` [@Waechter2006]. A simple example demonstrates the usage of `DynamicOED.jl` for the Lotka-Volterra system [@Sager2013].

\autoref{fig:lotka} shows the solution of the example above including the differential states, sensitivities $G$ and the sampling decisions $w$. More examples can be found in the [documentation](https://mathopt.github.io/DynamicOED.jl/dev/).

Expand Down

0 comments on commit 2c1a165

Please sign in to comment.