Changelog¶
All notable changes to bulanik are documented here. The format follows Keep a Changelog, and the project follows Semantic Versioning.
0.3.0 - 2026-11-05¶
Interval-valued AHP and fuzzy versions of three more ranking methods. The public v0.2 API is unchanged apart from the two changes listed below.
Added¶
ahp_interval_valued: AHP over interval-valued orthopair comparison matrices, with themultiplicativeandpossibilitymethods.fuzzy_codas,fuzzy_waspas(withcombine="fuzzy"orcombine="scores") andfuzzy_cocoso, also reachable throughrank_fuzzy(method=...).- An
IVQROFNscore named"defuzzified"(q = 1). - Examples 23 and 24 (24 executed examples in all).
Changed¶
- Crisp
codasaccepts zeros in benefit columns. ANFIS.fitresults differ from v0.2:lris now the largest step tried, and hybrid training solves the consequents once more perfit, sohistoryvalues change.
Fixed¶
- Crisp
cocosotreats rounding-size gaps at a column extreme as zero. ANFIS.fitkept gradient steps that raised the training error and could return a model far worse than least squares alone, with no warning. A step that raises the error is now halved or dropped, and hybrid training ends on solved consequents.
0.2.0 - 2026-11-04¶
Interval-valued and interval type-2 numbers, six new ranking methods, new weighting methods, DEMATEL and three new figures. The public v0.1 API is unchanged: this release only adds names.
Added¶
- Interval-valued numbers:
IVQROFN(interval-valued q-rung orthopair) with the aliasesIVIFN(q = 1),IVPFN(q = 2) andIVFFN(q = 3), andIVNeutrosophicFN(interval neutrosophic). Frozen and validated, with the algebraic and Einstein operator families, scores, accuracies and distances. The aliases are separate classes: they neither compare equal to nor mix with anIVQROFNof the same rung. IT2TrFN: interval type-2 trapezoidal fuzzy numbers (upper and lower trapezoid with heights, lower nested inside upper), with the arithmetic of Chen and Lee (2010a) and the DTraT score of Kahraman et al. (2014).- Ranking methods: CODAS, COPRAS, MARCOS, CoCoSo, WISP and ELECTRE I (with net concordance
and discordance indices for a complete ranking), all registered in
rank_fuzzy(method=...). Zero, negative and constant columns, and signed default scores, raise aValueErrornaming the method where the method cannot handle them (constant columns are neutral in CoCoSo, CRITIC and COPRAS; ELECTRE and CoCoSo accept zeros and negatives); a magnitude spread so large that a scaled entry underflows to 0 raises the same way in CODAS, MARCOS and WISP. - Weighting methods: CRITIC (objective), PIPRECIA (crisp and
TFNjudgements, with an optional inverse pass) andahp_fuzzy_numbers(AHP over a comparison matrix of any one fuzzy number kind). PIPRECIA requires every judgements_jto lie in (0, 2) and names the offending index otherwise. - DEMATEL:
dematelfor crisp or fuzzy direct-relation matrices,cfcs(Opricovic and Tzeng 2003) to convert triangular matrices from several experts, andDEMATELResultwithas_weights()so the factor weights feed every ranking method. A singular or ill-conditioned \(I - N\) (spectral radius numerically 1) raises instead of returning a huge total relation. bulanik.plot:dematel(cause-effect diagram),iv_orthopair(interval rectangles over the feasible region) andit2_number(upper and lower trapezoids with the footprint of uncertainty).- Documentation: guide pages for interval-valued numbers, interval type-2 numbers, the new ranking and weighting methods and DEMATEL; new gallery figures; API reference for all new names; examples 18 to 22 (22 executed examples in all); the reference list extended to every source cited in the v0.2 docstrings, each DOI checked against Crossref.
Changed¶
- The dark categorical plot palette, slot 6 (green), is
#2ea32einstead of#008300, which was too dark on the slate surface. Figures that use the sixth colour change in dark mode only.
Notes on sourcing¶
- The 7-term interval type-2 linguistic scale in example 19 and in the gallery is illustrative: it follows the style of the type-2 literature, and its values are not a transcription of any published table.
- The CRITIC tests are checked against values derived by hand from the published formulas, not against a worked example printed in the paper.
- The DEMATEL tests include a cross-check against the vignette of the R package
dematel.
0.1.0 - 2026-11-03¶
First release.
Added¶
- Fuzzy numbers: triangular (
TFN) and trapezoidal (TrFN); intuitionistic (IFN), Pythagorean (PFN), Fermatean (FFN) and q-rung orthopair (QROFN); spherical (SphericalFN), picture (PictureFN) and single-valued neutrosophic (NeutrosophicFN). Immutable, validated on construction, with named operator families (algebraic,einstein), scores, accuracies and distances. - Aggregation: weighted average and weighted geometric mean, and expert aggregation of
[expert][alternative][criterion]ratings. - Fuzzy sets: membership functions (triangular, trapezoidal, gaussian, bell, sigmoid,
linear ramps), linguistic variables, t-norms and t-conorms by name, and linguistic
scales (
SAATY_TFN,FUZZY_BWM_TFNand illustrative IF/TFN scales). - Fuzzy inference: Mamdani, Sugeno (zero and first order) and Tsukamoto systems from
plain-text rules, with
explainand a no-rule-fired policy. - Interval type-2 inference: interval type-2 membership functions and Mamdani and Sugeno systems, with KM, EKM, Nie-Tan and BMM type reduction.
- ANFIS: grid-partition first-order Sugeno ANFIS with hybrid (Jang) or gradient training, exported to a Sugeno system.
- MCDM: AHP, fuzzy AHP (Buckley), SWARA and entropy weights; best-worst consistency
indices (crisp and fuzzy); TOPSIS, VIKOR, WASPAS and EDAS on crisp matrices;
DecisionMatrixandrank_fuzzyfor fuzzy-number matrices; Chen's fuzzy TOPSIS. bulanik.lumix(extralumix): linear best-worst method, Zimmermann fuzzy programming and MCDM scores as LumiX data.bulanik.sezgi(extrasezgi): nonlinear and fuzzy best-worst method and ANFIS training with sezgi metaheuristics.bulanik.plot(extraplot): figures for numbers, scales, inference, type-2 sets and MCDM results in matching light and dark themes.- Documentation site (MkDocs Material) with a user guide, API reference, 17 executed
examples and a verified reference list; 17 runnable scripts in
examples/.