A python package for parameter uncertainty quantification and optimization
Project description
Uncertainty Quantification Python Laboratory
(UQPyL)
UQPyL: The Uncertainty Quantification Python Laboratory provide comprehensive workflows tailored to the Uncertainty Quantification and Optimization for computational models and their associated applications (e.g. model calibration, resource scheduling, product design).
The main characteristics of UQPyL includes:
-
Implementation of widely used sensitivity analysis methodologies and optimization algorithms.
-
Integration of diverse surrogate models equipped with tunable to solving computational expensive problems.
-
Provision of a comprehensive suite of benchmark problems and practical case studies, enabling users to quick start.
-
A modular and extensible architecture that 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)
Website: http://www.uq-pyl.com/ (#TODO it need to update now.)
Source Code: https://github.com/smasky/UQPyL/
Documentation: #TODO
Citing in your work: #TODO
Included Methods and Algorithms
Sensibility Analysis: (all methods support for surrogate models)
- Sobol'
- Delta_test (DT)
- extended Fourier Amplitude Sensitivity Test (eFAST)
- Random Balance Designs - Fourier Amplitude Sensitivity Test
- Multivariate Adaptive Regression Splines-Sensibility Analysis (MARS-SA)
- Morris
- Regional Sensitivity Analysis (RSA)
Optimization Algorithms: (* indicates the use of surrogate models)
- Single Objective Optimization: SCE-UA, ML-SCE-UA, GA, CSA, PSO, DE, ABC, ASMO*, EGO*
- Multi Objective Optimization: MOEA/D, NSGA-II, RVEA, MOASMO*
Noted: It is still being updated, and if you need other algorithms, please contact me.
Surrogate Models:
- Full connect neural network (FNN)
- 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
Recommend (PyPi or Conda):
pip install UQPyL
conda install UQPyL
And also:
git clone https://github.com/smasky/UQPyL.git
pip install .
Quick Start
For users, we should define the problem you want to solved firstly. The problem usually contains three important properties: a. func (the mapping from X to Y); b. the dimensions of decisions and outputs; c. the bound of decisions (ub, lb).
For benchmark problems, we can import them from UQPyL.problems and instantiation:
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)
For practical problems, we should define the evaluation function in addition, like:
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")
Please noted that, the func need receive the matrix of X and return the matrix of Y. And keep columns equal to dimensions and rows equal to samples.
After defining problem you solved, you can use any methods in UQPyL. Sensibility:
from UQPyL.sensibility import Sobol
sobol=Sobol() #instantiation 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:
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)
The above is a quick start. For more advanced usage, please refer to the documentation (#TODO).
Call for Contributions
We appreciate and welcome contributions. Because, we only set up standard workflows here. More advanced quantification methods and optimization algorithms are waited for pulling to this project.
Contact:
wmtSky, wmtsky@hhu.edu.cn
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.6-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a9ff997e92998b8088abdfa0f6cd3be1b70bd38450bfb71ab966c65d1d18d138 |
|
MD5 | 4b956c71ab717aaa95920f8f2d6db4ee |
|
BLAKE2b-256 | cec28fce151c18ffc3e196be969987a14160fcc06b8c181adfe43c2658de64ab |
Hashes for UQPyL-2.0.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d58c713692df16313af2b575724da561c072947b61ac757425a4fb315f209f34 |
|
MD5 | 847c1ea1013bd26d8db4a8f44474c96f |
|
BLAKE2b-256 | 9d1ac0866fb017401df84ef5912e3f653488b493ad2ca56afa366726025896ce |
Hashes for UQPyL-2.0.6-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 065abc06d0ae9fab7a6f01e36987abcca3c1d27571adcf4d1716fe744a0d769f |
|
MD5 | dda1379e646628896b48fa353a3d4386 |
|
BLAKE2b-256 | 2af49f853c75962455591c0441ab3646b84e4225287e0467de82396d038c1322 |
Hashes for UQPyL-2.0.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fcf0e7887e3144f93f4b9eafef7dafbae14f267def5b85873235a42102be5349 |
|
MD5 | b1bbd6b1a4a067d0ca2dd7acb3b646a2 |
|
BLAKE2b-256 | aac1343d67849490573f3cbb7ac2e33edb3efb69dacbfaef14a77bb1c91391e0 |
Hashes for UQPyL-2.0.6-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8d40f1eefcf7c8dbd80a96bed29695ced7dbcab07763a64dc1f8dfda03b26cbc |
|
MD5 | c1418d2ca3de452f0d0dc90942bedde0 |
|
BLAKE2b-256 | 68aa7c9e755b940c881cc30c8a469e34b314294d62c6cfb6ecb53aef364584ca |
Hashes for UQPyL-2.0.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dc4d60114101745af43da0588cffc5891094a107773e5f1e3d7ce1567ab2651 |
|
MD5 | d3aceb724c7938765a124aca85ff45e7 |
|
BLAKE2b-256 | 31d908eb514a24bab70e3f1a46a6fe147b7af84e8748032fd7855293c7493796 |
Hashes for UQPyL-2.0.6-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f7d24a5ffadf8a668838da0edd660f77038a31aec06c54b195156affc10a120 |
|
MD5 | 32f257835302d7a1faeae018ad087105 |
|
BLAKE2b-256 | a4e8d61558c04624756ec25f963fc55bd63653889cd9e38d728fba4011ecb220 |
Hashes for UQPyL-2.0.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a4cf55d8a2c227c8509f06dd92e8ea1585521b44a1e21ce2879cb9d216a85e37 |
|
MD5 | 73c52dd2cafd67f3df5ae156d7be40c3 |
|
BLAKE2b-256 | 1a14e27bb56f254e2bdf94bcb8b6c1738de58519b778a009846d9a46fbccb93f |
Hashes for UQPyL-2.0.6-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 990ab7664c7390deab3820cc03d945d60d94d4eefbcc170da091c3d242301464 |
|
MD5 | 3b9665039bd781350e2cdc6282575121 |
|
BLAKE2b-256 | 0be690539309e61df49a9c72658aedaf7d52404c935893849a06b1fe46417ea9 |
Hashes for UQPyL-2.0.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c76c80535926269dc37e6657e5fd17b93507e3af9a5266f7c7916c42a8a178ec |
|
MD5 | 954d983b64e37a96387e22626bc5dc68 |
|
BLAKE2b-256 | be858e75437861f4be35f3b8282bb5693444dff39f81298ea6d1f5d5dbd4e58b |
Hashes for UQPyL-2.0.6-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82947eea457854818b1a354b0c63fb9f07083ad29b76a7a6310626ae84dd55fb |
|
MD5 | 4687f5d8ebfaae2762786c064752a1b9 |
|
BLAKE2b-256 | 2fe9a3ca2786216ac19f1100ab0e953b610f9c299d43b53f28f35d1d443519df |
Hashes for UQPyL-2.0.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c5e0104b1da2b4485613f4600e89bc91d7f237f5f7b075386347d2dd0703be4b |
|
MD5 | 835cfcc8578f48edce8b341b3c33aa77 |
|
BLAKE2b-256 | f143a9baeae9fad18f02adb0069fd1d50c4276f2052630005618668b2abc8fb3 |
Hashes for UQPyL-2.0.6-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2a1f8c7d68ef4633202f62f7e689bffbed599bee90a1176fc6b808a33883806 |
|
MD5 | 0d39a714dd9825902dbdbb25c144d5e5 |
|
BLAKE2b-256 | 6318dc2410687bf81361309131a1f4cd55c679e520847c391929499d0f92049b |
Hashes for UQPyL-2.0.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8df4a2f4c2550f358ea286e04c48dc8d6f0e109cc5016e61e79098b1e3110dda |
|
MD5 | 8a4a2d970f7f34f02d1616ebfcd1694e |
|
BLAKE2b-256 | c82a74496ef4a78fe55cfd1777a5a29b7f98920cc40ce9f6cb4dc2fcec3e0d10 |