9.2
3 Engines
An engine provides a backend for performing inference. By default, Roulette automatically installs the RSDD backend.
3.1 RSDD
| (require roulette/engine/rsdd) | package: roulette-lib |
procedure
(rsdd-engine [#:semiring s])
→ (engine/c (immutable-set/c any/c) s) s : semiring? = real-semiring
Performs inference over the s semiring using RSDD.
When an engine is garbage collected,
all the memory associated with it
(i.e., BDDs and weights)
is freed.
> (define complex-engine (rsdd-engine #:semiring complex-semiring)) > (define real-poly-semiring (polynomial-semiring real-semiring)) > (define real-poly-engine (rsdd-engine #:semiring real-poly-semiring))
procedure
(bernoulli-measure f t [#:semiring s])
→ (measure/c (immutable-set/c boolean?) s) f : s t : s s : semiring? = real-semiring
Returns a measure such that
(set) gets (semiring-zero s),
(set #f) gets f,
(set #t) gets t,
and (set #f #t) gets ((semiring-plus s) f t).
> (define-measurable x (bernoulli-measure 0+1i 1 #:semiring complex-semiring)) > ((infer x #:engine complex-engine) (set #f #t)) 1+1i
> (define-measurable y (bernoulli-measure '(0.1 0.6) '(0.9 0.4) #:semiring real-poly-semiring)) > ((infer y #:engine real-poly-engine) (set #f #t)) '(1.0 1.0)
struct
predicate : predicate/c zero : any/c add : (-> any/c any/c any/c) one : any/c mul : (-> any/c any/c any/c)
A struct type for semirings.
Applying an instance of this structure applies its predicate.
value
value
value
value
Base semirings that can be used with RSDD.
procedure
(polynomial-semiring s) → semiring?
s : semiring?
Constructs a polynomial semiring where coefficients are members of s.