Bounded finite-frame belief-function calculus, explicit conflict fusion and explainable decisions in pure MoonBit
moon add TWISTY2Ynb/moonbelief@0.1.0import {
"TWISTY2Ynb/moonbelief" @belief,
}let f = @belief.frame(["clear", "blocked"])
let optical = @belief.simple_support(f, 1, 0.8)
let sonar = @belief.simple_support(f, 2, 0.6)
let result = @belief.yager(optical, sonar)
let (lower, upper) = result.interval(1)
assert_true(lower <= upper)| API / 协议值 | 交集为空时的处理 | 重要边界 |
|---|---|---|
| conjunctive | 留在空集 | 支持开放世界质量;不隐去冲突 |
| dempster | 以非空存活质量归一化 | 存活量默认不得小于等于 1e-12 |
| disjunctive | 所有质量按并集累计 | 表示至少一个来源有效的不同假设 |
| yager | 冲突移到全集 | 不等价于概率归一化;多源顺序可能影响结果 |
| dubois_prade / dubois-prade | 不相容对移到该对的并集 | 确定的二元规则 |
| pcr5 / pairwise-pcr5 | 按每对质量比例重新分配 | 仅闭世界输入;不是广义多源 PCR5 |
moon run examples/sensors --target wasm-gc
moon run examples/diagnostics --target wasm-gc
moon run examples/ensemble --target wasm-gc
python scripts/check_examples.py --target wasm-gcmoon run cmd/moonbelief --target wasm-gc -- '{"schema":"moonbelief.request.v1","frame":["a","b"],"rule":"yager","sources":[{"name":"sensor","masses":[{"subset":["a"],"mass":0.7},{"subset":["a","b"],"mass":0.3}]}],"queries":[["a"]]}'moon info && moon fmt
moon fmt --check
moon check --deny-warn --target wasm-gc
moon test --deny-warn --target wasm-gc
moon build --deny-warn --target wasm-gc
python scripts/differential.py
python scripts/audit.pyfn Frame::coarse_preimage(self : Frame, target : Frame, mapping : Array[Int], event : Int) -> Int raise BeliefErrorfn Mass::condition(self : Mass, event : Int, min_survival? : Double, budget? : Limits) -> Mass raise BeliefErrorfn Mass::conditional_interval(self : Mass, query : Int, given : Int, min_survival? : Double, budget? : Limits) -> (Double, Double) raise BeliefErrorfn Mass::decide(self : Mass, actions : Array[String], utilities : Array[Array[Double]], policy : DecisionPolicy) -> ActionDecision raise BeliefErrorfn decision_policy(max_conflict? : Double, max_nonspecific? : Double, min_margin? : Double) -> DecisionPolicy raise BeliefErrorfn leave_one_out(sources : Array[Source], rule : Rule, budget? : Limits) -> Array[SourceSensitivity] raise BeliefErrorfn maximum_belief_difference(a : Mass, b : Mass, budget? : Limits) -> (Int, Double) raise BeliefErrorfn pipeline(sources : Array[Source], rule : Rule, budget? : Limits) -> PipelineResult raise BeliefErrorfn simple_support(f : Frame, event : Int, support : Double, budget? : Limits) -> Mass raise BeliefErrorfn subset_mobius(f : Frame, values : Array[Double], budget? : Limits) -> Array[Double] raise BeliefErrorfn subset_zeta(f : Frame, values : Array[Double], budget? : Limits) -> Array[Double] raise BeliefErrorfn superset_mobius(f : Frame, values : Array[Double], budget? : Limits) -> Array[Double] raise BeliefErrorfn superset_zeta(f : Frame, values : Array[Double], budget? : Limits) -> Array[Double] raise BeliefErrorInstall
Download zipBounded finite-frame belief-function calculus, explicit conflict fusion and explainable decisions in pure MoonBit