Changelog
0.5.10
- Date:
April 09, 2024
Features
Added a save and load method to class DOELib.Design
Added a random_seed optional argument to DOELib.Design
Added a get_design method to load an instance DOELib.Design intialized to the provided data
0.5.9
- Date:
April 22, 2023
Fixes
Fix compatibility with python versions 3.8, 3.9, 3.10, and 3.11
0.5.8
- Date:
April 18, 2023
Fixes
Fix the
compute_volumemethod to avoid float object TypeError on call tomath.factorial
0.5.7
- Date:
March 04, 2023
Features
compute_absorption()method ofMarginNetworknow has an optionalmethodargument for specifying different root finding algorithmsMargins can now be allocated using different margin allocation strategies for each margin node using the
allocate_marginsmethodAdded technical documentation explaining the theory of the Margin Value Method
Fixes
Removed the update of
Distributionhistogramsself.value_dist = self.valueson every__call__of scalar parameters to improve performance
Incompatible changes
forward()method ofMarginNetworknow requires the argumentstrategyto be a list of strategies one for eachDecisioninstance
0.5.6
- Date:
June 29, 2022
Features
The method
allocate_margins()allows the user to specify a margin allocation strategy such asmin_excessormanualThe
Decisionclass now storesselection_valuesin order to allow the use to probe the frequency of each decision made
Fixes
Fixed case when errors occur in
MarginNodeobjects due tovalue_distproperty, when attempting to generate histogram from samplesrandom()method ofSpecificationnow calls therandom()method ofDistributionimplicitlyMarginNetworkinstances now storeSpecificationinstances when using thesaveandloadmethodsMarginNetworkinstances now storedeterioration_vector``and ``utilization_matrixFixed the
train_surrogate,train_inverse, andtrain_performance_surrogatemethods to cap data at 100 * dim forKRGmodels
Incompatible changes
forward()method ofMarginNetworknow requires two optional argumentsallocate_margin, andstrategyfor allDecisioninstances__call__()method ofDecisionnow requires two argumentsallocate_margin, andstrategyThe method
allocate_margins()must now be called before everyforward()call of aMarginNetworkinstanceIt is recommended to use
self.input_specinstead of those defined globally outsideforward()andrandomize()implementations
0.5.5
- Date:
April 15, 2022
Fixes
Behaviourobjects now support thetrain_inversemethod (works only if thetrain_surrogatemethod has completed successfully) for training a surrogate model that inverts decided variables to any variable of choice (given by thekeyargument) and intermediate parameters (given by theintermediateattribute)Behaviourobjects now support theinv_callwhich can be user defined (must define theintermediateandinvertedattributes) or from thetrain_inversemethodif
use_estimateis False, theMarginNetworkmust have equal number of decision and margin nodes associated with each other (1:1 ratio)The user-implemented
forwardmethod of theMarginNetworkobject must include theoutputsoptional argument if usinginv_callanywhere in the methodAdded error handling for
train_surrogatefunction by rejecting NaN values during sampling of the blackbox
Incompatible changes
use_estimateargument ofcompute_impactmethod now relates to whether a surrogate is used or not for impact calculationtrain_surrogateargument ofBehaviourclass now needs the argumentsn_i,n_p,n_dv, andn_ttfor each of the output parametersoutput of a decision node is given by the attribute
output_valueinstead ofdecided_value
0.5.4
- Date:
April 10, 2022
Fixes
Removed example scripts since they are more for research than for utility
Modified impact on performance calculation
compute_impactto cap performance parameters by their maximum and minimum valuesFixed impact on performance calculation
compute_impactto utilized target thresholds and decided values instead of excess values from surrogateAdded visualization tests
0.5.3
- Date:
March 29, 2022
Fixes
removed dependency on
py
0.5.2
- Date:
March 29, 2022
Features
First public release of
mvmlib
0.5.1
- Date:
March 27, 2022
Incompatible changes
Rename the library to
mvmliband the main module tomvm
0.5.0
- Date:
March 14, 2022
Incompatible changes
The
init_decisions()must be called before the firstforward()and after everyrandomize()or changing the input specifications to store the universe of decided valuesif the argument
num_threadsoftrain_performance_surrogate(),compute_absorption(), orcompute_decisions()is greater then 1 then Jupyter notebook cannot be used with ur scriptThe argument
valueofInputSpecinitializer must be a float or an integer only. ADistributionobject must be passed to the optional argumentdistribution
Features
The
Decisionclass can now support multiple decided values using then_nodesoptional argument. User must supple equal length of target thresholdsCan pass additional arguments as
kwargsto behaviour model forDecisionclass during the__call__methodThe method
train_performance_surrogate()of the classMarginNetwork``now supports different surrogate models specified using the ``sm_typeargumentThe method
train_performance_surrogate()of the classMarginNetworknow supports parallel processing specified using thenum_threadsargumentThe method
compute_absorption()of the classMarginNetworknow supports parallel processing of the decision universe (which changes every time the input specificationsself.spec_vectorare iterated during absorption computation) specified using thenum_threadsargumentThe method
compute_decisions()of the classDecisionnow supports parallel processing specified using thenum_threadsargument
Fixes
More efficient
compute_absorption()method by lumping threshold limit and specification limit calculationsFixed
train_performance_surrogate()method to properly handle ordinal type variables such asINTFixed
compute_absorption()method to properly handle input specifications that have negative nominal valuesFixed
compute_absorption()method to change nan values to zeroAdded
__deepcopy__directives to all classes
0.4.8
- Date:
February 20, 2022
Incompatible changes
Added mandatory argument
variable_typetoInputSpecandDesignParamclasses during initialization
Features
Add the
Decisionclass for defining decision nodes and off-the-shelf componentsAdd the integer and continuous type variables for
InputSpecandDesignParamclasses
0.4.7
- Date:
February 17, 2022
Incompatible changes
AbsorptionMatrixclass is removed, instead callMarginNetwork.absoprtion_matrix.valueto retrieve absorption valuesImpactMatrixclass is removed, instead callMarginNetwork.impact_matrix.valueto retrieve impact valuesAbsorptionMatrix.deteriorationsattribute is removed, instead callMarginNetwork.deterioration_vector.valueto retrieve deterioration valuesAll random sampling functions use the
.random()method to draw samples. Cannot use the__call__operator anymoreMarginNetworkmethodreset_outputs()not takes a single optional argument to reset byNsamplesdistmethodreset_outputs()not takes a single optional argument to reset byNsamplesDistributionobject method.random()(previously__call__) now returns a 1Dnp.ndarrayfor one dimensional pdfsRename methods to comply with PEP 582 standard
compute_mvp,get_array,set_funcRename classes to comply with PEP 582 standard
GuassianFunc,UniformFunc,TriangularFunc,FuzzySet,FuzzyFunc,FuzzySystem,FuzzyRule
Features
Separate absorption, deterioration, and impact matrics into separate
MarginNetworkattributesUse a Factory design parameter for defining matrix and vector caches used during stochastic simulation of
MarginNetwork
0.4.6
- Date:
January 14, 2022
Features
Add utilization calculation as part of the
compute_absorptionmethodAdd utilization storage to
AbsorptionMatrixclassAdd
compute_MVPmethod toMarginNetworkclass to show margin value mapAdd
nearestmethod todmLibto allow calculation of the distance metric for the MVP
Fixes
Adapt
train_performance_surrogate,view_perf, andcompute_impactto include scaling functionality when training Kriging modelAdd input specifications samples as input to performance surrogate in
train_performance_surrogateto accommodate variability input specifications
Incompatible changes
InputSpecnow requires the argumentuniverseupon initialization
0.4.5
- Date:
January 06, 2022
Features
Add distribution type
uniformFuncfor multivariate uniform distributions
Fixes
Fix
MarginNode.valueproperty to retrieve the last available sample after calling thereset(N)methodFix
value_distproperty ofPerformanceandMarginNodeclasses to construct histogram of samples and then initialize aDistributionclass from themForce absorption computing to ignore 0 deteriorations by outputting a
np.nanMake absorption computation sign independent
Add relevant tests for absorption and deterioration computation
Simplified length calculation procedure in
strut_design.pyexample by using analytical expression instead offsolveinB1model
0.4.4
- Date:
December 20, 2021
Features
Add ability to selectively choose how to randomize the MAN by redefining the
randomizemethod ofMarginNetworkSelectively choose when to reset the outputs of the MAN using the
reset_outputsmethodCan retrieve design parameters, input specs, excess, target thresholds, decided values, and performances using the properties
design_vector,spec_vector,excess_vector,dv_vector,tt_vector, andperf_vector, respectivelyAdd output storage class for a Margin Analysis Network (MAN)
AbsorptionMatrixwhich stores absorption and deteriorationAdd method
compute_absorptionto compute an observation of the change absorption capability matrix and deterioration vectorAdd
view(),view_cdf(),view_det(),view_det_cdf()methods toAbsorptionMatrixclass by inheritance fromVisualizeDist
Incompatible changes
instances of
InputSpecshould be called using the.valueproperty just likeDesignParamandFixedParamtrain_performance_surrogateargumentext_samplesnow takes training points of (excess,performance) instead of (decided_value,performance)
0.4.3
- Date:
December 18, 2021
Features
Add
VisualizeDistclass touncertaintyLib.pymoduleAdd output storage class for a Margin Analysis Network (MAN)
PerformanceAdd output storage class for a Margin Analysis Network (MAN)
ImpactMatrixAdd method
train_performance_surrogatewhich uses the library SMT to estimate threshold performancesAdd method
compute_impactto compute an observation of the Impact on Performance matrixAdd method
view_perftoMarginNetworkclass to visualize 2D projections of performance surrogate modelsAdd
view()andview_cdf()methods toPerformanceandImpactMatrixclasses by inheritance fromVisualizeDistDesignclass can now take array_like values for argumentnsamplesif usingdoe_type='full_fact'
Incompatible changes
move
compute_cdf()method from classMarginNodeto module level method inuncertaintyLib.pymoduleuse property
.valuesinstead ofexcessto retrieve observations of excess fromMarginNodeobjectAdded dependency on SMT
view()andview_cdf()methods now take optional argumentsfolder,file,img_format, instead of justsavefileArgument
typeofDesigninitialization changed todoe_typeto avoid overloading python objecttype
0.4.2
- Date:
December 17, 2021
Features
Add building block for a Margin Analysis Network (MAN) as a class object
InputSpecAdd building block for a Margin Analysis Network (MAN) as a class object
FixedParamAdd building block for a Margin Analysis Network (MAN) as a class object
DesignParamAdd building block for a Margin Analysis Network (MAN) as a class object
BehaviourBehaviour__call__method must be redefined by the userAdd
MarginNetworkclass object that must be inherited and redefined by userAdd ability to call
MarginNetwork.forward()in a Monte Carlo setting
0.4.1
- Date:
December 15, 2021
Incompatible changes
MarginNodeclass object is now called usingMarginNode(decided_value,threshold), wheredecided_valueandthresholdare vectors of equal length sampled from their respective functions
0.4.0
- Date:
October 26, 2021
Features
Add building block for a Margin Analysis Network (MAN) as a class object
MarginNodeAdd ability to call
MarginNode()using a set of requirement observations and design parameters in a Monte Carlo settingAdd ability to view
MarginNodeexcess pdf and cdf usingMarginNode.view()andMarginNode.view_cdf()methods
Fixes
Transfer class object labels to plot axes for
fuzzySystem.view(),Distribution.view(), andgaussianFunc.view()
0.3.0
- Date:
October 23, 2021
Features
Add support for defining arbitrary probability densities using raw density values
Distribution(p)Add support for random sampling from instance of
Distributionby calling itAdd support for sampling from Gaussian distribution
gaussianFuncby calling it directlyAdd support for viewing samples from defined distribution using the
.view()method forDistributionandgaussianFuncinstancesAdd support for viewing aggregate function after computing using
.view()method forfuzzySystemafter using.compute()method
Incompatible changes
Must manually reset
fuzzySysteminstance after.compute()to clear aggregate function
Fixes
Fixed problem with
fuzzySystem.output_activation`not being calculated properly using element-wise operationsAdd
PDF_examples.pyscriptImprove existing tests
test_fuzzyInference_NAdd new tests
test_gaussian_pdf_rvsandtest_arbitrary_pdf_rvsUpdate documentation
conf.pyto include class docstring from__init__
0.2.1
- Date:
October 14, 2021
Features
Add support for calculating probability density of multivariate Gaussian at a given Mahalanobis distance
gaussianFunc.compute_density_r
Incompatible changes
Rename the method
gaussianFunc.multivariateGaussiantogaussianFunc.compute_density_r
0.2.0
- Date:
October 14, 2021
Features
Add support for multi-dimensional arrays or floats for
triangularFunc.interp,fuzzyRule.apply,fuzzySet.interp, andfuzzySystem.computeUpdate example
TRS_example.pyand documentation example to use these functionalitiesAdd support for directly plotting
triangularFuncusingtriangularFunc.view()
Incompatible changes
Simplify API to directly import
triangularFunc,fuzzyRule,fuzzySet,fuzzySystem,Design, andgaussianFunc
0.1.0
- Date:
October 9, 2021
Features
Introduce
fuzzyLib,DOELib, anduncertaintyLib, andfuzzySystem.computeIntroduce fuzzy inference using
dmLib.fuzzyLib.fuzzySystem.fuzzySystem.compute()for adictof floatsAdd example
TRS_example.pyand documentation example to use these functionalities