Changelog
v1.0.0
- Upgrade to Julia v1.10.5.
JuliaSimBatteries v1.3.0
- Upgrade to
ModelingToolkit@9
.
JuliaSimControl v0.10.0
- Upgrade to
ModelingToolkit@9
.
JuliaSimModelOptimizer v9.2.1
Breaking Changes
- Upgrade to
ModelingToolkit@9
,SymbolicUtils@2
. - 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
initial_conditions
keyword argument toExperiment
constructor which passes it to the construction of theODEProblem
. - The
params
keyword argument inExperiment
constructor adds toparameter_dependencies
in ModelingToolkit models. - Add
zscore_meansquaredl2loss
which normalizes with zscore before computing mean squared loss. - Make
DefaultODEAlgorithm
as default solver for simulation. - Add warning when some columns of data are not used in loss computation because of difference in column names from the model.
- Deprecate
model
positional argument inremake
in favour of a keyword argument. - Improve documentation and add tutorial for using Prediction Error Method with observed data.
Bug fixes
- Fix normalization in
meansquaredl2loss
,norm_meansquaredl2loss
.
JuliaSimSurrogates v4.0.0
DataGeneration v5.2.1
- Add
CedarDataGenExt
that extendssimulate_ensemble
API. - Fix
JSHVACDataGenExt
for DAE systems fromHVAC
. - Remove
FMI
andDataGeneration
dependency. AddFMIDataGenExt
. - Separate handling of labels for control parameters and controls.
- Change default sampling to
LatinHyperCube
.
Deployment v5.0.0
- Update FMU recipe for latest changes in
FMUGeneration
. - Remove
ModelingToolkit
as a dependency temporarily.
JSSBase v5.1.1
- Move ED show methods to
JSSBase
. - Add scientific notations for show methods for ED.
Layer v2.8.1
- Fix bugs in
LayerMonitor
callback.
PreProcessing v3.4.1
- Fix bug in
train_valid_split
that allows shuffling.
Surrogatize v4.5.0
- Use
test_ed
andvalid_ed
with DigitalEcho workflow. - Remove
DataGeneration
as dependency.
Training v5.7.0
- Use
EnsembleProblem
to simulate embeddings for training DigitalEcho. - Allow out-of-batch training for large datasets (Lazy Dataloading).
- Fix validation and test loss computed by callbacks.
v0.33.0
JuliaSimBatteries v1.2.4
…
JuliaSimControl v0.9.3
Bug fixes
- Improved compatibility with the wider SciML ecosystem for Julia v1.10.
JuliaSimModelOptimizer v8.3.2
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 v0.9.2
This reverts the override applied to the poly_approx
function in JuliaSim v0.30.0 to prevent it from producing incorrect results. This issue has been resolved in an intermediate release.
Bug fixes
- Improved compatibility with the wider SciML ecosystem.
v0.31.0
JuliaSim
Features
- Add a
JULIASIM_SYSTEM_IMAGE
environment variable which acts as a flag to indicate if JuliaSim is loaded from a system image.
FMUGeneration v2.0.11
Features
- Hosts code from Deployment.jl to generate FMUs for
ODEProblem
s - Improvements in terms of speed and size of the FMUs.
- Add support for generating base sysimage for deploying FMUs on JuliaHub.
Documentation
- Adds basic examples for deploying FMUs.
JuliaSimBatteries v0.5.8
Features
- Improved the robustness of DAE initialization.
- Added tests for fast charging at extreme rates.
Bug fixes
- Fixed errors with the
KLU
linear solver during initialization.
JuliaSimModelOptimizer v8.0.1
Bug fixes
- Remove hard coding of nonlinear solver in Collocation methods with partial observability.
- Add a missing export of
TricubeKernel
.
Documentation changes
- Add tutorials for Prediction Error Method and Collocation methods.
- Clean up all examples and tutorials to make formatting and language consistent.
JuliaSimSurrogates v3.3.1
Features
- Add regularization for training DigitalEcho.
- Optimise inference timings for DigitalEcho.
- Use JLSO as default serialization for JuliaHub batch jobs.
- Port generic FMU generation code to FMUGeneration.jl.
- Add support for multiple initial conditions in DigitalEcho.
- Add recipe for deploying DigitalEcho FMUs.
- Add
dist_ortho_initializer
to Layer. - Add
DenseWalk
andParallel
to Layer. - Add
LayerMonitor
callback to monitor the behaviour of DigitalEcho during training. - Add diagnostic visualisations for monitoring training performance.
- Add
@generate_fmu
macro to launch JuliaHub jobs for generating DigitalEcho FMUs. - Add
JSHVACDataGenExt
to DataGeneration that facilitates data-generation for HVAC models.
Bug Fixes
- Rename
f64
tofl64
in Layer. - Port LabTrackerTrainingExt to LabTracker.jl.
- Fix serialization paths for batch jobs in JuliaHub.
- Revise the code for Visualisations to minimize the duration required to generate data for the dashboard.
- Bump QMC and JuliaSimBatteries
v0.30.0
JuliaSim
Features
Accept environment path via
env
forinfo
.Remove
PDESurrogates
.Remove
PumasQSP
.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.
Previously, and for existing notebooks, it was/is necessary to add a cell containing the following code to the notebook:
begin # Deactivate Pluto's package manager to enable the use of JuliaSim using Pkg Pkg.activate() end
JuliaSimBatteries v0.5.7
Breaking changes
- Parameter inputs to
DFN
,SPMe
, andSPM
are nowDict
s rather thanFunction
s. Inputs ofFunction
s throw a deprecation warning. - Reduce the default number of discretizations in the current collector x-direction from
3
to1
.
Features
- Add controller inputs for time- and state-varying experimental inputs to
charge
,discharge
,current
,power
, andvoltage
. - Add
PrecompileTools
for faster package loading and simulation. - Add detailed error messages for initialization failures.
- Export the unit
C
for battery C-rate for use incharge
,discharge
, andcurrent
experiments.
Bug fixes
- Convert
initial_guess!
function to aRuntimeGeneratedFunction
to avoid world age issues. - Fix
cycle_indices
returning incorrect indices for experiment charge/discharge cycles.
Documentation changes
- Add a detailed landing page describing JuliaSim Batteries features and capabilities.
- Add a model comparison page with figures and text outlining the strengths and weaknesses of each battery model.
- Increase the number of cycles in the Lifetime simulation example from
10
to350
.
JuliaSimControl v0.9.0
The poly_approx
function is producing incorrect results at the time of the JuliaSim release due to changes in the underlying libraries. Instead of silently calculating incorrect results, the function has been (temporarily) disabled until a fix can be implemented.
Breaking changes
- Make Linear MPC controllers use the same interface as
GenericMPCProblm
. This means that the return value ofMPC.optimize!
is now of typeco::ControllerOutput
rather than a tuple like before. The optimized input-signal trajectory is available asco.u
. Similarily,MPC.step!
takes anObserverInput
structure. - Change compat with ModelingToolkit standard library to v2, drop compat for v1.
Features
- Replace fixed-step integrator
MPC.rk4
bySeeToDee.Rk4
which offers additional features. The change is non-breaking. - Increase default solver timeout duration for autotuning and MPC problems.
- Make
QN
an optional argument for linear MPC problems. - Allow linear MPC to use
BoundsConstraint
structure. - Make building the
OptimizationProblem
in the constructor of generic MPC controllers optional. - Add optimization solution object to the
ControllerOutput
structure for MPC controllers. - Add special formulation of Sliding-Mode-Control for robust control of linear systems.
- Allow
ObserverInput
to handle reference trajectories rather than just reference points.
Documentation changes
- Reorganize documentation into separate Tutorials and Examples sections.
- Add MPC for PDE system example to PDE control tutorial.
- Add video tutorials for control design and system identification to documentation.
JuliaSimModelOptimizer v8.0.0
Breaking changes
- Add
model_transformations
keyword in theInverseProblem
constructor. - All collocation methods have been renamed, e.g.
SplineCollocate
toSplineCollocation
. err
keyword which takes in loss functions in theExperiment
constructor is removed andloss_func
keyword is added.
Features
- Add Prediction Error Method using a callback during simulation.
- Add support for multiple models in the same
InverseProblem
. - Add support for using JuliaSimSurrogates' DigitalEcho using DigitalEcho frontend (but it is not exported).
- Use collocation methods with limited observability.
- Performance improvements for collocation methods using caching.
- Support for 3 argument loss function
loss_func
- current point in the search space, solution and data.
Bug fixes
- Collocation methods in estimating states and derivatives.
- PEtab integration.
- Make simulate work without a search space.
- Plot recipes.
- Multiple shooting methods.
- Progress bar information.
- Allow either maxiters or maxtime in calibration algorithms.
- Change the linesearch in the default optimizer to BackTracking.
- Model autocomplete.
v0.29.0
JuliaSimControl v0.8.2
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 v6.0.1
Features
- Add support for DataSets as input data
- Add symbolic regression interface
- Add support for log transformed search space
- Support for parameter scaling in PEtab import
- Add plot functions for analyzing convergence and multiple shooting segments
- Support MTK ODESystem in import_petab
- Add parallelization support for multiple shooting
- Add helper function for creating PEtab templates
Bug fixes
- Fix multiple shooting methods
- Fix
remake
withsave_names
- Fix
remake
with aliased parameters - Fix aliasing to an optimized value
- Use latin hypercube sampling for initial state in parametric_uq
- Fix
remake
with ChainedExperiments - Fix search space transformations
- Plot recipe fixes
JuliaSimSurrogates v3.1.0
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
v0.28.0
JuliaSim
Features
- Upgrade to Julia v1.8.5.
JuliaSimControl v0.8.0
Features
- Improve autotuning discretization with user options.
- Add tutorials:
- Uncertainty modeling for nonlinear systems,
- MPC on neural surrogates,
- Input-simulation tutorial,
- Self-driving car MPC,
- Disturbance modeling,
- MPC for redundant control allocation,
- MPC on model identified from data.
- Improve input integration for MPC controller and added integral action documentation.
- Enhance Collocation for MPC with choice of degree and roots.
- Add Radau option for collocation.
- Add documentation for GUI apps.
- Improve discretization in MPC.
- Improve trimming functionality.
- Simplify interface to constraints and costs for MPC controllers.
Deprecations
- Deprecate
OpenLoopObserver
in favor ofStateFeedback
.
JuliaSimModelOptimizer v5.5.4
Features
- Add support for experiment local parameters
- Add model autocomplete
- Experimental Import FMUs into inverse problems
- Add confidence level based plots
- Add support for chaining calibrations
Bug fixes
- Add support for parameters depending on other parameters
- Fix saving behaviour for PEtab imported models
- Bug fixes for multi-replicate experiments
- Bug fixes for plots with a single saved state
- Handle errors that can happen during experiment solving
v0.27.0
JuliaSimModelOptimizer v5.0.0
Breaking changes
- Improve internal trial data representation. The data is now pre-transposed before the error function.
- Move code and rename
ForwardSolve
toSingleShooting
. - Saving behavior improvements. The keyword argument
save_names
now defaults to using all the model variables present in the trial data instead of using all the states of the system. - Move pharma specific code to PumasQSP.
Trial
-> `Experiment- Moved dosing to PumasQSP (both via callbacks and via
CustomDosingTrial
) - Moved
PeriodicSteadyStateTrial
to PumasQSP SteadyStateTrial
->SteadyStateExperiment
ComparisonTrial
->ExperimentComparison
- Renamed trial collections
IndependentTrials
->IndependentExperiments
SteadyStateTrials
->SteadyStateExperiments
TrialChains
->ChainedExperiments
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.
Bug fixes
MultipleShooting
bug fixes.KernelCollocate
improvements.- MCMC clean-up.
- Trial collection polishing.
- Better missing data support.
Documentation
- Hierarchical MCMC docs.
v0.26.0
JuliaSim
Breaking Change
- Require at least JuliaHub v6.0.0 as the deployment platform.
Features
- Improve formatting of the
JuliaSim.info
output.
v0.25.1
JuliaSimModelOptimizer v4.1.2
Bug Fixes
- 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 v0.2.3
Bug Fixes
- Bumps the CSV version to v0.10 (from earlier v0.9).
BuildingModelLibraryMakie v0.1.6
Bug Fixes
- Fix room iteration order
ThermalThermofluid v0.1.3
License
- Adds LICENSE
Bug Fixes
- Fixes room iteration order
v0.25.0
JuliaSimModelOptimizer v4.1.0
Features
- Hierarchical Bayesian inference is now available as a virtual population generation method. This method is enabled by setting the keyword argument
hierarchical = true
inMCMCOpt
, before passing it to thevpop
function. - Pathfinder MCMC initialization is now available. This is an alternative to the standard warmup phase and can be activated by setting the keyword argument
warmup_method = PathfinderWarmUp()
inMCMCOpt
, before passing it to thevpop
function.
v0.24.1
JuliaSimSurrogates v1.0.2
Bug Fixes
- Fix broken dashboard styling.
v0.24.0
JuliaSimControl v0.6.0
Breaking Changes
- The
JuliaSimControls
package has been renamed toJuliaSimControl
. All references to the package should be updated accordingly.
Features
- Add extremum seeking controllers.
- Add extremum seeking adaptive controllers.
- Add an offset option to
frequency_response_analysis
. - Add support for MadNLP.jl as a Model-Predictive Control (MPC) solver.
- Rely on the more robust linearization capabilities of ModelingToolkit (MTK) in favor of a JuliaSimControl-specific implementation.
- Increase performance of autotuning using static systems.
- Refactor MPC API and internals and upgrade capabilities using Optimization.jl
- Improve defaults for Ipopt tolerances.
- Improve autotuning performance.
- Add trapezoidal integration discretization.
- Add collocation for MPC.
- Add gradient options for the solver optimization for MPC.
- Add scaling of signals for MPC.
- Improve initial estimate for optimization in autoscaling.
Bug Fixes
- Fix some instances of
linearize
. - Fix PID autotuning and model reduction apps.
- Fix difference consts for MPC.
Documentation
- Update the MTK tutorial to use ModelingToolkitStandardLibrary.
- Add a tutorial for feed-forward control using an inverse-model.
- Add a tutorial for extremum seeking for rodel-reference adaptive control.
- Improve the documentation introduction.
- Add a tutorial on adaptive MPC.
- Improve MPC documentation.
- Add a tutorial on Optimal Control.
- Add a 'space shuttle reentry' example.
JuliaSimModelOptimizer v4.0.2
Breaking Changes
trial_cost(trial, x, prob)
is nowtrial(alg, x, prob)
, wherealg
is an optimization algorithm.- To obtain the cost function corresponding to an inverse problem and a specific optimization algorithm you now have to use
observed(prob, alg)
.
Features
- There is a new
calibrate
function that performs a single fit against the data in a robust way. - Add support for multiple shooting methods for optimization (
DataShooting
andMultipleShooting
). - Add support for collocation methods (
KernelCollocate
,SplineCollocate
,NoiseRobustCollocate
). vpop
now supports multithreaded parallelism viaEnsembleThreads
.
Bug fixes
- You can construct
IndependentTrials
fromVector{Any}
containers. - Performance improvements: the overhead of the setup was reduced to under 10%.
PumasQSP v2.1.2
Features
- 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.
BuildingModelLibrary v0.2.1
Features
- Simplified interface for creating building models based on ThermalThermofluid.
- The user can set the number of floors for the building
BuildingModelLibraryMakie v0.1.5
Features
- Easily visualize building model simulations with Makie
- Create animations based on the simulation
ThermalThermofluid v0.1.3
Features
- Create large building models using MTK
v0.23.0
JuliaSimModelOptimizer v3.1.1
Features
DDS
(Discretized Density Sampling) subsampling method: Custom-made subsampling method that matches the histogram of a virtual population to some input reference histogram for each one of the considered model states.- New plot recipe:
plot(::AbstractQSPResult, ::InverseProblem; trial_names=get_name.(prob.trials))), kwargs...)
to plot each trial whose name is intrial_names
, for every virtual patient inAbstractQSPResult
.
Bug fixes
- Fix indexing a
vp::MCMCResult
with an::AbstractVector
. This fixes usingvp::MCMCResult
insubsample
. - Fix plotting bounds data: fix plot recipes breaking when keyword argument
show_data=true
and data is(lower, upper)
bounds. Nowshow_data
will plot two dashed lines for lower and upper bounds respectively. - Fix a bug in the
plot(vp, trial)
plot recipe wheresaveat_reduction
would not be forwarded to the underlyingsolve_ensemble
call. - Fix color and legend bugs in
plot(vp, trial)
andplot(trial, prob, x)
. - Fix
plot(vp, trial, summary = true)
not respecting thestates
argument. - Remove OptimizationBBO specific kwargs from the
vpop
solve call. This will make it possible to use other optimization methods. - Fix GSA errors due to the missing
samples
keyword argument.
Other
- Plot Functions page: API page with docstrings for each plot recipe.
v0.22.0
JuliaSimModelOptimizer v3.0.1
Features
- MCMC Refactor: Trials now contain a
likelihood
function andnoise_priors
for the scale parameters of typical likelihoods (e.g. standard deviation terms in a Normal). Likelihoods are the closest to a Bayesian equivalent for theerr
function of standard optimization, so makes sense to keep them on the trial level. This way users can adapt thelikelihood
s andnoise_priors
according to what is measured in a trial. The assumption is that eachTrial
has its ownnoise_priors
, either a common one for allsave_idxs
or one persave_idxs
. - Add timespan optimization: The timespan can now be specified symbolically. If the parameters used are in the search space, the timespan will be computed using the parameters from the optimization. The
saveat
can also be specified similarly.
Breaking changes
- Remove trial caching
- Remove MCMCModelCache
- Simplify API
- Refactor Subsample API
- Rename QSPCost and QSPSensitivity
Upgrade steps
- Trials can no longer be cached. This feature was not documented and not used by anyone. Removing this makes the
QSPCost
/InverseProblem
thread safe. - The
solve_trial
and the trial plot recipe no longer have thess_trial
keyword argument for specifying the steady state trial for a trial withforward_u0=true
. This is now automatically retrieved by thesolve_trial
function if a trial needs it. subsample(alg, vp, trial; kwargs...)
is now the subsampling API. Note that thealg
argument has been moved to the first position. Each subsampling algorithm alg (e.g. MAPEL, ARM, etc) has now aSampler
callable struct that is returned byget_sampler(alg, vp, trial)
. Users can then call theSampler
with the originalvp
to get a subsampledvp
.
alg = MAPEL(binning_function, reference_weights, N_patients_to_subsample)
vp_subsampled = subsample(alg, vp, trial)
# ___OR___
sampler = get_sampler(alg, vp, trial)
idxs = sampler()
vp_subsampled = vp[idxs]
QSPCost(model, trials; search_space)
andQSPSensitivity(model, trials; parameter_space)
have been replaced byInverseProblem(trials, model, search_space)
andSensitivityProblem(trials, model, parameter_space)
. Note that the order of the arguments has changed and that thesearch_space
is no longer a keyword argument. Instead of building cost functions we now build the corresponding problems to be solved and the functions corresponding to the problems are conceptually separate. TheInverseProblem
is still a callable struct, but this will be deprecated in a future version and it is not part of the public API. We will have a dedicated function for evaluating the cost corresponding to a problem.
Bug fixes
- Fix compat: A Symbolics.jl issue (
JuliaSymbolics/Symbolics.jl#670
) prompted us to add a compat bound on Symbolics to ~4.9. It was fixed with Symbolics v4.10.2 and the constraint was removed (JuliaSymbolics/Symbolics.jl#671
). - Fix bugs: Fix
vpop_prob
and cost errors from importing vpops. The cost function now works on named tuples that would arise form the Tables.jl interface.
Docs
- MCMC documentation
- Update docs links
- Refactor Docs
Other
- README updates
- CompatHelper: add new compat entry for MCMCChains at version 5, (keep existing compat)
PumasQSP v2.0.1
Breaking changes
- PumasQSP now uses JuliaSimModleOptimizer v3 and that has an important breaking change:
QSPCost(model, trials; search_space)
andQSPSensitivity(model, trials; parameter_space)
have been replaced byInverseProblem(trials, model, search_space)
andSensitivityProblem(trials, model, parameter_space)
. Note that the order of the arguments has changed and that thesearch_space
is no longer a keyword argument. See the changelog for JuliaSimModelOptimizer for more details.
Bug fixes
- This release only changes the version number so that we can avoid a julia issue preventing package loading due to conflicting version numbers between the package and the sub-package.