-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
17c990b
commit 15da1c4
Showing
4 changed files
with
103 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,4 +10,5 @@ v0.7.1 | |
v0.7.2 | ||
v0.7.3 | ||
v0.8.0 | ||
v0.9.0 | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# v0.9.0 | ||
|
||
**CADET-Process** v0.9.0 is the culmination of 6 months of hard work. | ||
It contains many new features, numerous bug-fixes, improved test coverage and better | ||
documentation. | ||
All users are encouraged to upgrade to this release, as there are a large number of bug-fixes and optimizations. | ||
|
||
This release requires Python 3.9+ | ||
|
||
## Highlights and new features of this release | ||
|
||
### {mod}`CADETProcess.processModel` improvements | ||
|
||
#### Support for new adsorption models | ||
|
||
In this version, a couple of new isotherms are supported in **CADET-Process**: | ||
|
||
- {class}`~CADETProcess.processModel.LangmuirLDFLiquidPhase`: A multi-component Langmuir binding model using a linear driving force approximation based on the equilibrium concentration c* for given q. | ||
- {class}`~CADETProcess.processModel.HICConstantWaterActivity`: A HIC binding model assuming constant water activity. | ||
- {class}`~CADETProcess.processModel.HICWaterOnHydrophobicSurfaces`: A HIC binding model published in Wang et al. 2016. | ||
|
||
#### Improving flow rate calculations | ||
|
||
Previously, **CADET-Process** used symbolic mathematics (`sympy`) during pre-processing to calculate the flow rates for every unit operation. | ||
While this didn't cause any issue for small systems, it made the pre-processing times unacceptably long for big multi-column systems. | ||
By formulating the problem as a linear algebraic problem, which can be solved using `np.linalg.solve`, the computation times could be reduced by several orders of magnitude. | ||
For more information, visit [the Forum](https://forum.cadet-web.de/t/improving-the-flowrate-calculation/795) or check out the corresponding [PR](https://github.com/fau-advanced-separations/CADET-Process/pull/71). | ||
|
||
Thanks to @dion-is for bringing this to our attention and to @daklauss for implementing this improvement! | ||
|
||
### {mod}`CADETProcess.optimization` improvements | ||
|
||
#### Implement a Bayesian optimization algorithm for CADET-Process based on ax | ||
|
||
Many of the optimization problems encountered in model-based design involve high-dimensional spaces with multiple objectives and constraints. | ||
However, established optimizers are often ineffective for these complex problems because they are either designed for single objectives, lack adequate support for nonlinear constraints, or are not suitable for global optimization. | ||
|
||
In recent years, Bayesian Optimization (BO) has emerged as a promising technique to effectively tackle these challenges. | ||
This method approximates the objective function using surrogate models such as Gaussian process regression (GPR) and utilizes an acquisition function to balance exploration and exploitation of the parameter space. | ||
|
||
In this release, [ax](https://github.com/facebook/Ax) as been added to **CADET-Process**. | ||
Different algorithms can be used, e.g. {class}`~CADETProcess.optimizer.GPEI` for single-objective and {class}`~CADETProcess.optimizer.NEHVI` for multi-objective optimization. | ||
|
||
Thanks to @flo-schu for contributing this extension to **CADET-Process**! | ||
|
||
#### Allow specifying objectives as maximization problem | ||
|
||
Previously, all objective functions defined in an {class}`~CADETProcess.optimization.OptimizationProblem` were expected to return a value that was to be minimized. | ||
However, in reality, objectives are often to be maximized (e.g. a productivity). | ||
|
||
In this release, a new `minimize` flag was introduced to the {meth}`~CADETProcess.optimization.OptimizationProblem.add_objectives` method. | ||
If `minimize` is `False`, the result will automatically be multiplied with `-1` internally to convert the maximization problem to a minimization problem. | ||
For reporting, the original value is then used. | ||
The default is `maximize=True`. | ||
|
||
Moreover, for nonlinear constraints, the user can now specify a `comparison_operator` in the {meth}`~CADTProcess.optimization.OptimizationProblem.add_nonliner_constraints` method which is used to compare the output of the nonlinear constraint function with the specified bounds. | ||
By default, the operator is `'le'`, indicating that the value returned by the function must be less or equal to the specified bound. | ||
In any case, the "true" value of the nonlinear constraint function, as well as the constraint violation are stored for reporting, where positive values indicate the constraint is not satisfied. | ||
|
||
### {mod}`CADETProcess.modelBuilder` improvements | ||
|
||
#### Add triangle theory design methods for SMB systems | ||
|
||
To facilitate the setup of SMB processes, a new {class}`~CADETProcess.modelBuilder.SMBBuilder` was added which automatically configures {class}`~CADETProcess.processModel.FlowSheet` and {class}`~CADETProcess.processModel.Process` of a 4-zone SMB. | ||
Moreover, design methods based on the so-called triangle theory have been added to determine optimal flow rates of the SMB system for linear and Langmuir isotherms. | ||
For more information, refer to {ref}`smb_builder_tutorial`. | ||
|
||
## Issues closed for 0.9.0 | ||
|
||
- [50](https://github.com/fau-advanced-separations/CADET-Process/issues/50): Add support for linear equality constraints in hopsy. | ||
- [67](https://github.com/fau-advanced-separations/CADET-Process/issues/67): Improving flow rate calculations. | ||
- [99](https://github.com/fau-advanced-separations/CADET-Process/issues/99): Overhaul post-processing in Optimization | ||
- [117](https://github.com/fau-advanced-separations/CADET-Process/issues/117): A linear constraint with two linear variables still raises an issue if any non-linear variables are present in the system. | ||
- [118](https://github.com/fau-advanced-separations/CADET-Process/issues/118): Issue with return types of evaluation functions. | ||
|
||
## Pull requests for 0.9.0 | ||
|
||
- [34](https://github.com/fau-advanced-separations/CADET-Process/pull/34): Implement a bayesian opimization algorithm for CADET-Process based on ax. | ||
- [65](https://github.com/fau-advanced-separations/CADET-Process/pull/65): Add adapter for LangmuirLDFLiquidPhase. | ||
- [66](https://github.com/fau-advanced-separations/CADET-Process/pull/66): Fix evaluation objects in objectives. | ||
- [68](https://github.com/fau-advanced-separations/CADET-Process/pull/68): Fix indices for optimization of sized parameters with size==1. | ||
- [71](https://github.com/fau-advanced-separations/CADET-Process/pull/71): Improving flow rate calculation. | ||
- [74](https://github.com/fau-advanced-separations/CADET-Process/pull/74): Add support for initial values with linear equality constraints. | ||
- [76](https://github.com/fau-advanced-separations/CADET-Process/pull/76): Fix bad initial value for Yamamoto method. | ||
- [77](https://github.com/fau-advanced-separations/CADET-Process/pull/77): Improve preprocessing time. | ||
- [78](https://github.com/fau-advanced-separations/CADET-Process/pull/78): Fix calculation of conversion rates for MSSMA model. | ||
- [79](https://github.com/fau-advanced-separations/CADET-Process/pull/79): Fix behavior of comparisons to references with multiple components. | ||
- [82](https://github.com/fau-advanced-separations/CADET-Process/pull/82): Fix callbacks with dependencies. | ||
- [84](https://github.com/fau-advanced-separations/CADET-Process/pull/84): Improve handling of initial values. | ||
- [91](https://github.com/fau-advanced-separations/CADET-Process/pull/91): Improve behavior of evaluate_callbacks with individuals without x_untransformed. | ||
- [92](https://github.com/fau-advanced-separations/CADET-Process/pull/92): Add plot method to TransformBase. | ||
- [69](https://github.com/fau-advanced-separations/CADET-Process/pull/69): Add HIC binding model adapters. | ||
- [101](https://github.com/fau-advanced-separations/CADET-Process/pull/101): Allow setting state for dependent events. | ||
- [110](https://github.com/fau-advanced-separations/CADET-Process/pull/66): Improve fractionation behavior when encountering empty fractions. | ||
- [113](https://github.com/fau-advanced-separations/CADET-Process/pull/66): Add triangle theory design methods for SMB systems. | ||
- [114](https://github.com/fau-advanced-separations/CADET-Process/pull/114): Improve optimization post processing | ||
- [115](https://github.com/fau-advanced-separations/CADET-Process/pull/115): Allow specifying objectives as maximization problem. | ||
- [116](https://github.com/fau-advanced-separations/CADET-Process/pull/116): Fix/non linear variables uninvolved in linear rules. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
[metadata] | ||
name = CADET-Process | ||
version = 0.8.0 | ||
version = 0.9.0 | ||
author = Johannes Schmölder | ||
author_email = [email protected] | ||
description = A Framework for Modelling and Optimizing Advanced Chromatographic Processes | ||
|