9.1
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 polynomial-engine (rsdd-engine #:semiring polynomial-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.0+1.0i
> (define-measurable y (bernoulli-measure '(0.1 0.6) '(0.9 0.4) #:semiring polynomial-semiring)) > ((infer y #:engine polynomial-engine) (set #f #t)) '(1.0 1.0)
Recognizes a semiring instance. A semiring acts like a contract that recognizes elements of the semiring.
value
value
value
Semirings that can be used with RSDD.