A python package for parameter uncertainty quantification and optimization
Project description
Uncertainty Quantification Python Laboratory (UQPyL)
UQPyL: The Uncertainty Quantification Python Laboratory provides comprehensive workflows tailored for Uncertainty Quantification and Optimization of computational models and their associated applications (e.g., model calibration, resource scheduling, product design).
Main Characteristics
- Comprehensive Sensitivity Analysis and Optimization Algorithm: Implements widely used sensitivity analysis methodologies and optimization algorithms.
- Advanced Surrogate Modeling: Integrates diverse surrogate models equipped to solve computationally expensive problems.
- Rich Application Resources: Provides a comprehensive suite of benchmark problems and practical case studies, enabling users to get started quickly.
- Modular and Extensible Architecture: Encourages and facilitates the development of novel methods or algorithms by users, aligning with our commitment to openness and collaboration. (We appreciate and welcome contributions)
Quick Links
- Website: UQPyL Official Site (#TODO: Needs update)
- Source Code: GitHub Repository
- Documentation: ReadTheDocs(#TODO: Being updating )
- Citation Info: [UQPyL 2.0](#TODO: Needs update), UQPyL 1.0
Included Methods and Algorithms
Sensitivity Analysis
(All methods support surrogate models)
- Sobol'
- Delta Test (DT)
- Extended Fourier Amplitude Sensitivity Test (eFAST)
- Random Balance Designs - Fourier Amplitude Sensitivity Test (RBD-FAST)
- Multivariate Adaptive Regression Splines-Sensitivity Analysis (MARS-SA)
- Morris
- Regional Sensitivity Analysis (RSA)
Optimization Algorithms
(* indicates solving computational expensive optimization problem)
- Single Objective Optimization: SCE-UA, ML-SCE-UA, GA, CSA, PSO, DE, ABC, ASMO*, EGO*
- Multi-Objective Optimization: MOEA/D, NSGA-II, RVEA, MOASMO*
Note: The library is still being updated. If you need other algorithms, please contact us.
Surrogate Models
- Fully Connected Neural Network (FCNN)
- Kriging (KRG)
- Gaussian Process (GP)
- Linear Regression (LR)
- Polynomial Regression (PR)
- Radial Basis Function (RBF)
- Support Vector Machine (SVM)
- Multivariate Adaptive Regression Splines (MARS)
Installation
Recommended (PyPi or Conda):
pip install UQPyL
conda install UQPyL
Alternatively:
git clone https://github.com/smasky/UQPyL.git
cd UQPyL
pip install .
Quick Start
To use UQPyL, define the problem you want to solve. The problem usually contains three important properties:
func
(the mapping from X to Y)- The dimensions of decisions and outputs
- The bounds of decisions (ub, lb)
Benchmark Problems
from UQPyL.problems.single_objective import Sphere
problem = Sphere(nInput=10, ub=100, lb=-100)
problem = Sphere(nInput=10, ub=np.ones(10)*100, lb=np.ones(10)*-100)
Practical Problems
Define the evaluation function:
from UQPyL.problems import PracticalProblem
def func(X):
Y = np.sum(X, axis=1).reshape(-1, 1)
return Y
problem = PracticalProblem(func=func, nInput=10, nOutput=1, ub=100, lb=-100, name="Sphere")
Note: The func
needs to accept a matrix of X and return a matrix of Y, with columns equal to dimensions and rows equal to samples. X and Y should be np.ndarray.
After defining the problem, you can use any methods in UQPyL.
Sensitivity Analysis
from UQPyL.sensibility import Sobol
sobol = Sobol() # Instantiate and set hyper-parameters
sobol.analyze(problem)
Optimization
from UQPyL.optimization.single_objective import SCE_UA
sce = SCE_UA()
res = sce.run(problem)
bestDec = res.bestDec
bestObj = res.bestObj
Surrogate Modeling
from UQPyL.DoE import LHS
lhs = LHS(problem)
xTrain = lhs.sample(200, problem.nInput)
yTrain = problem.evaluate(xTrain)
xTest = lhs.sample(50, problem.nInput)
yTest = problem.evaluate(xTest)
from UQPyL.surrogate.rbf import RBF
rbf = RBF()
rbf.fit(xTrain, yTrain)
yPred = rbf.predict(xTest)
from UQPyL.utility.metric import r_square
r2 = r_square(yTest, yPred)
For more advanced usage, please refer to the documentation (#TODO).
Call for Contributions
We welcome contributions to expand our library with more sophisticated UQ methods, optimization algorithms and engineering problems.
Contact
For any inquiries or contributions, please contact:
wmtSky
Email: wmtsky@hhu.edu.cn, wmtsmasky@gmail.com
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for UQPyL-2.0.9-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 795c5a8c7d8efc20df4ba4a472fa0bf35fe8c9520df605afcd2d725a5e2e128b |
|
MD5 | 7e0143b2a365244655c76df7e7800c32 |
|
BLAKE2b-256 | 84e7faec2ad4538e732534cd40de94071efde7c8fd6b978258d8fff2c16d896a |
Hashes for UQPyL-2.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bdc7b96eaf022129be05bbd9a0167b6b0ff054047cd364355d61fa650b32d4d7 |
|
MD5 | 4e1220f5a9f766ce450d738c73307eb9 |
|
BLAKE2b-256 | 03107e1e30d36b3b0fa10b1142304a075705aeeff53ab1564d3bf58c66c6fd16 |
Hashes for UQPyL-2.0.9-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 75838f7b4f1b3c484d7c7d72d8c5d2b06c51d9a8d6c5bd555d62921019071950 |
|
MD5 | 8755bea7eaae85cf74156bde7c39ff5b |
|
BLAKE2b-256 | 59c6d1b1f1ffe7b213dd5a40c73db291ea05d6872cb2836e08e624be78464a9c |
Hashes for UQPyL-2.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 357e9b2e95996190d6239572eb14ccda8fa7510127be537e96f270fa988e925e |
|
MD5 | 64d5c317c873d0411e61405ba0b666ba |
|
BLAKE2b-256 | 875eda54e4f1cc7edebefb546a410565bb9840bacae22caacad76374c1fcb44e |
Hashes for UQPyL-2.0.9-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d95b0af754a0f73b45045f0da7f5b5ea9ea3f0ee43abeb183f7d161583c39d5 |
|
MD5 | 146e8aca439a300315a67901e2396f1c |
|
BLAKE2b-256 | 25d930eb62eef364b4f62153dc4b3205eb4a554c5b5937ad60d365f0d3864c0c |
Hashes for UQPyL-2.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c89d281bc936d784692b3d91df8b87e6aadb8a52f98796580a5275d76e6afc22 |
|
MD5 | fcd639599f3a59d712eb1a2c006e2a3e |
|
BLAKE2b-256 | 7665620c0f8455436d0cdab9dd635edfffac2fc5d7cd3dc1ee3772ccd5d95bf2 |
Hashes for UQPyL-2.0.9-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | febbaed55b2a665d42ec175fde825f141d5c25cc9c6b578cf86647db7ad36219 |
|
MD5 | c107f698f0fa224224d6a98f4960cb4c |
|
BLAKE2b-256 | bdd6056840c76ed245431d267a70cb1333666b9dd1aa32dcecedef32a3bc2d74 |
Hashes for UQPyL-2.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 629d1d741b35265a607ed69003036c9b1f49459b05f68c539d33fefd6f41d859 |
|
MD5 | 4913068f79b8dd23b844eb2b8fea47f4 |
|
BLAKE2b-256 | 8581027f4ad1b2d219247fa91d391f8e8a86e576a461567a33ed46881ff7efa7 |
Hashes for UQPyL-2.0.9-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eb5314c8c8f56c64bb8cae0cfd3cbd2317d7909595d2791b7dfe3e8ec1693295 |
|
MD5 | 50731e5fb9e8a7569d50bdf1b081e06b |
|
BLAKE2b-256 | b5fc1b5a7204fa5f39c413592e2094a09eaaf34fa945d28af9fd502cc175dbc9 |
Hashes for UQPyL-2.0.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe321d4f81e4a40f5132a1811ccfbc3ea997ad111a3d7820873d2e632e30d47a |
|
MD5 | 2f95938cc927dced714089a8ac9be195 |
|
BLAKE2b-256 | 1307b74a8e40d4b8b47a6a949dda35302b126c59e587112c10b259b07ca05a6a |
Hashes for UQPyL-2.0.9-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 34de32f2f1bd95ffcad08c4dd9b3a862019ae850e2f183327ab6d1855b0becc8 |
|
MD5 | ee78364a030dff16c0b6e473eb182a9e |
|
BLAKE2b-256 | 85dd965056ec785dfbaa29e92ee3450d9598ee9746859188075aeb9f8b702e94 |
Hashes for UQPyL-2.0.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 80186306a109382632b30e8a7254cafb09fe14d56bb6938ada6eba10fc8bf35f |
|
MD5 | e991be37ee20fd8ad9dd12a6943fa7d1 |
|
BLAKE2b-256 | 5e9d807c53031e4f1041d926aea5fef8caad5cda7cfa827f3fcd9f84e5a6a9d2 |
Hashes for UQPyL-2.0.9-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | afc86102587f4048079aa13b56509b601b8d89b275c0c4d431787926ed405578 |
|
MD5 | 70121ad415bc742050580d6fdfa538e5 |
|
BLAKE2b-256 | 755b697295595d3fadb790d639e718f761c026b0006448d02a59019dee20b852 |
Hashes for UQPyL-2.0.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1f79b1ee4720cb324a5a657cc410a4af2cbe1077e54f97662b190874a6a9c9f |
|
MD5 | 2fadc7fa2a6e224f285ce2cb963271d4 |
|
BLAKE2b-256 | b251a6a02d075049386ab2058bb7c4be5249e35344b577a41a8642b6d7ede981 |