Release Notes
v1.0.0
- Upgrade to Julia v1.10.5.
JuliaSimBatteries
- Upgrade to
ModelingToolkit@9
.
JuliaSimControl
- Upgrade to
ModelingToolkit@9
.
JuliaSimModelOptimizer
Breaking Changes
- Upgrade to
ModelingToolkit@9
. - Remove passing of
model
inInverseProblem
constructor. - Remove wrapper of
GlobalSensitivity
in favour of usingsimulate
wrapped in a reduction function. autocomplete
is no longer available. It will be added back in a future release.- FMU wrapper is no longer available. It will be added back in a future release.
Features
- Add support to use Prediction Error Method with observed data if the equations for it is linear and invertible.
- Deprecation of
PredictionErrorMethod
in favour ofDiscreteFixedGainPEM
. - Add support of using
JuliaHub.dataset
for passing inExperiment
. - Add constructor of
Experiment
withSimulationSpec
fromJuliaSimBase
. - Add
zscore_meansquaredl2loss
which normalizes with zscore before computing mean squared loss. - Add
initial_conditions
keyword argument toExperiment
constructor which passes it to the construction of theODEProblem
. - Improve documentation and add tutorial for using Prediction Error Method with observed data.
Bug fixes
- Fix normalization in
meansquaredl2loss
,norm_meansquaredl2loss
.
JuliaSimSurrogates
Features
- Allow out-of-batch training for large datasets (Lazy Dataloading).
- Use
EnsembleProblem
to simulate embeddings for training DigitalEcho. - Update FMU recipe for latest changes in
FMUGeneration
. - Add scientific notations for show methods for ED.
- Use
test_ed
andvalid_ed
with DigitalEcho workflow.
Bug Fixes
- Fix
JSHVACDataGenExt
for DAE systems from HVAC.jl. - Fix validation and test loss computed by callbacks.
- Fix bug in
train_valid_split
that allows shuffling. - Fix bugs in
LayerMonitor
callback.
Breaking Changes
- Remove
ModelingToolkit
as a dependency fromDeployment
. - Remove
FMI
andDataGeneration
as dependencies fromDataGeneration
. - Remove
DataGeneration
as dependency fromSurrogatize
. - Move
ExperimentData
show methods toJSSBase
fromDataGeneration
.
v0.33.0
JuliaSimBatteries
…
JuliaSimControl
Bug fixes
- Improved compatibility with the wider SciML ecosystem for Julia v1.10.
JuliaSimModelOptimizer
Features
- Add the ability to launch JuliaHub batch jobs for
calibrate
andparametric_uq
. - Add support for specifying parameters by description in the search space.
- Add support for specifying the initial guess in the search space.
- Add support for constraints.
- Add different Multiple Shooting initializations.
- Add Design Configuration API.
- Use
Ipopt
instead ofLBFGS
by default.
Bug fixes
- Fix
MultipleShooting
with 1 trajectory. - Fix
MultipleShooting
with multiple experiments. - Avoid catching all exceptions
v0.32.0
JuliaSim
Features
- Remove
BuildingModelLibrary
from JuliaSim. - Remove
CatalystGUI
from JuliaSim. - Remove
CellMLPhysiome
from JuliaSim. - (Temporarily) remove
HVAC
from JuliaSim due to compatibility issues. - Remove
SBMLBioModels
from JuliaSim. - Remove
ThermalThermofluid
from JuliaSim.
JuliaSimControl
Bug fixes
- Improved compatibility with the wider SciML ecosystem.
v0.31.0
FMUGeneration
Features
- Optimize the size and the speed of the FMUs.
- Add support for generating base sysimage for FMU deployment on JuliaHub.
JuliaSimBatteries
Features
- Improved stability of the DAE solver.
JuliaSimModelOptimizer
Features
- Improve documentation and add tutorials for Prediction Error Method and Collocation methods.
JuliaSimSurrogates
Features
- Add support for multiple initial conditions with DigitalEcho.
- Add recipe for deploying FMUs for DigitalEcho.
- Add support for launching DigitalEcho FMU generation jobs to JuliaHub
- Add support for datageneration for HVAC models.
v0.30.0
JuliaSim
Features
- Accept environment path for
info
. - Drop
PDESurrogates
from JuliaSim. - Upgrade to Julia v1.9.3.
- When creating new Pluto notebooks on JuliaHub with JuliaSim, the cells necessary to make a notebook work with JuliaSim are automatically added to the notebook.
JuliaSimBatteries
- Add support for time- and state-varying experimental control inputs.
- Reduce the package compilation times.
- Improve documentation landing page and model comparisons.
JuliaSimControl
- Improve fixed step integrator providing additional features.
- Improve documentation structure, including video tutorials.
- Reduce complexity of various APIs.
JuliaSimModelOptimizer
- Add support for multiple models in the same
InverseProblem
. - Add support for Prediction Error Method which is very useful for unstable systems.
- Improvements in performance, stability and correctness of Collocation Methods.
- Overall stability in the API for generic use cases.
v0.29.0
JuliaSimControl
Features
- Add Polynomial-Quadratic Regulator control design (PQR)
- Add function
common_lyap
that computes quadratic Lyapunov functions for uncertain systems - Add polynomial trajectory synthesizer
- Add function
poly_approx
for least-squares polynomial approximation of nonlinear dynamics
Tutorials
- Add PQR tutorials
- Add tutorial for control of PDE system
- Add input-simulation tutorial
JuliaSimModelOptimizer
Features
- Add support for DataSets as input data
- Add symbolic regression interface for automated model discovery
- Add support for log transformed search space
- Add parallelization support for multiple shooting
JuliaSimSurrogates
Features
- Add support for custom callbacks in training loop
- Add support for external simulators like JuliaSimBatteries
- Add support for plotting ExperimentData objects directly
- Add support to spawn data generation and training jobs on JuliaHub
- Added a Datagen app for tuning controllers
- DigitalEcho now supports deploying to MTK
- Generically handle constant values during normalization for the DigitalEcho
- Implemented Controller which has a fixed value at t=0
- Improved documentation
- Improves the performance of DigitalEcho
- Scalable storage format for data generation
- Support for training with GPUs
PumasQSP
Features
- Add support for DataSets as input data
- Add model autocomplete
- You can now add a neural network to your model and train it as a calibration problem
- The symbolic regression interface can be used to interpret the results from the neural network
- Add support for log transformed search space
- Add parallelization support for multiple shooting
- Add support for dosing tables
v0.28.0
JuliaSim
Features
- Upgrade to Julia v1.8.5.
JuliaSimControl
Features
- Add sliding mode controllers.
- Add support for integer and binary variables in Model Predictive Controllers (MPC).
- Introduce Linear Quadratic Regulator (LQR) design method for uncertain systems.
- Introduce robust Model Predictive Control (MPC) for systems with uncertain parameters.
JuliaSimModelOptimizer
Features
- Add model autocomplete
- You can now add a neural network to your model and train it as a calibration problem
- This can be used for automatic model discovery
- Experimental Import FMUs into inverse problems
- Having an MTK model as a starting point is no longer required as we can now import both model exchange and co-simulation FMUs.
v0.27.0
JuliaSimModelOptimizer
Breaking changes
- Renamed structures to better fit the engineering domain.
Trial
-> `ExperimentSteadyStateTrial
->SteadyStateExperiment
ComparisonTrial
->ExperimentComparison
- Renamed trial collections to experiment collections
IndependentTrials
->IndependentExperiments
SteadyStateTrials
->SteadyStateExperiments
TrialChains
->ChainedExperiments
Features
- Add support for parameter priors.
- Add parametrization support to the initial conditions.
- Add
ReplicateData
. This allows one to use multiple datasets for one experiment. - Add experiment chains. Experiments can now have arbitrarily deep dependencies on any other previously defined experiments.
PumasQSP
Features
- Add support for parameter priors.
- Add parametrization support to the initial conditions.
- Add the possibility to import PEtab files.
- Add MAPEL.
- Add
ReplicateData
. This allows one to use multiple datasets for one trial. - Add trial chains. Trials can now have arbitrarily deep dependencies on any other previously defined trials.
v0.26.0
JuliaSim
Breaking Change
- Requires at least JuliaHub v6.0.0 as the deployment platform.
v0.25.1
JuliaSimModelOptimizer
- Add error handling in calibration.
- Decreased overhead for small problems.
- Fix a bug in how parameters and initial conditions were computed, when ForwardDiff was used, which could have lead to wrong results.
- Fix
MultipleShooting
bugs that could lead to wrong results.
BuildingModelLibrary
- Bumps the CSV version to v0.10 (from earlier v0.9)
ThermalThermofluid
- Adds LICENSE
- Fixes room iteration order
v0.25.0
JuliaSimModelOptimizer
Features
Hierarchical Bayesian inference is now available as a virtual population generation method.
This method assumes that the parameters of each
Trial
subject are sampled from the same population distribution. It then calculates the posterior distribution all parameters, subject-specific and population ones, given the available data. Finally, it uses the posterior distribution of population-level parameters to generate a virtual population.When using a Bayesian method to generate a virtual population with
MCMCOpt
, if the keyword argumenthierarchical = true
, then this hierarchical method will be used.Pathfinder MCMC initialization is now available. This is an alternative to the standard warmup phase that sampling methods such as No-U-Turn-Sampler use to find regions of high probability mass and tune some internal parameters before sampling. In many cases Pathfinder is able to find regions of more probable parameter values more efficiently.
Users can choose this method by setting the keyword argument
warmup_method = PathfinderWarmUp()
inMCMCOpt
, before passing it to thevpop
function, otherwise the defaultwarmup_method = StandardWarmUp()
will be used.
v0.24.1
JuliaSimSurrogates
- Fix broken surrogates dashboard styling.
v0.24.0
JuliaSimControl
- The
JuliaSimControls
package has been renamed toJuliaSimControl
. All references to the package should be updated accordingly. - Trimming of ModelingToolkit (MTK) models.
- More general Model-Predictive Control (MPC) problem formulation.
JuliaSimModelOptimizer
- New calibration feature for robustly fitting data using multiple shooting and collocation methods.
PumasQSP
- Add support for dosing. The following types of doses can be used:
Bolus
, increment a state by some amount.PeriodicBolus
, same asBolus
periodically.Infusion
, increments the rate of change of a state by some amount for a time window of given duration.PeriodicInfusion
, same asInfusion
periodically, where the period counts from the onset time of theInfusion
time window.
v0.23.0
PumasQSP
- New population subsampling method
- Users can now set target distributions for any number of model states and our new custom-made method will subsample a virtual population, so that the same model states of virtual patients match the target distributions, as measured by discretized histograms.
- New plot recipe to plot all trials from a virtual population.
- Improvements to plotting functionality.
v0.22.0
PumasQSP
The initial release of PumasQSP contains the following features:
- Bayesian inference is now available when generating virtual populations
- Each
Trial
object now contains a likelihood function andnoise_priors
distributions, which together describe how data was measured in a trial.
- Each
- Timespan optimization is now possible
- The timespan of a given trial can be fit to data, similarly to how model parameters and initial conditions are optimized to match the data of the trial.
- New subsampling API
- Subsampling a virtual population of patients
vp
for a giventrial
can now be performed with a simple call tosubsample(alg, vp, trial)
, wherealg
is one of several available subsampling methods, like MAPEL or Allen-Reiger-Musante 2016 ARM.
- Subsampling a virtual population of patients
- Accessing the sampler of each subsampling method
- Users now have access to a Sampler object, which they can call repeatedly to generate new subsampled virtual populations.
- This way, users can perform subsampling multiple times quickly, without having to wait for the necessary computations of the respective method to finish every time (e.g. solving an optimization problem, like in the case of Allen-Reiger-Musante subsampling).