networks: Export and test the functions for generation of random networks.
This commit is contained in:
parent
c823001492
commit
cd11bcc330
2 changed files with 19 additions and 8 deletions
|
@ -249,4 +249,15 @@
|
||||||
(check-equal? (tabulate-state/boolean f '(x1 x2))
|
(check-equal? (tabulate-state/boolean f '(x1 x2))
|
||||||
'((x1 x2 f) (#f #f #f) (#t #f #f) (#f #t #t) (#t #t #t)))
|
'((x1 x2 f) (#f #f #f) (#t #f #f) (#f #t #t) (#t #t #t)))
|
||||||
(check-equal? (tabulate-state/boolean f '(x1 x2) #:headers #f)
|
(check-equal? (tabulate-state/boolean f '(x1 x2) #:headers #f)
|
||||||
'((#f #f #f) (#t #f #f) (#f #t #t) (#t #t #t)))))
|
'((#f #f #f) (#t #f #f) (#f #t #t) (#t #t #t)))
|
||||||
|
(define bn (random-boolean-network/vars 3))
|
||||||
|
(check-equal? (tabulate-boolean-network bn)
|
||||||
|
'((x0 x1 x2 f-x0 f-x1 f-x2)
|
||||||
|
(#f #f #f #f #t #f)
|
||||||
|
(#f #t #f #t #f #f)
|
||||||
|
(#f #f #t #f #t #t)
|
||||||
|
(#f #t #t #t #f #f)
|
||||||
|
(#t #f #f #t #f #t)
|
||||||
|
(#t #t #f #f #f #t)
|
||||||
|
(#t #f #t #f #f #f)
|
||||||
|
(#t #t #t #t #t #t)))))
|
||||||
|
|
14
networks.rkt
14
networks.rkt
|
@ -78,7 +78,10 @@
|
||||||
[random-boolean-function (-> number? procedure?)]
|
[random-boolean-function (-> number? procedure?)]
|
||||||
[random-boolean-function/list (-> number? procedure?)]
|
[random-boolean-function/list (-> number? procedure?)]
|
||||||
[random-function/state (domain-mapping/c generic-set? . -> . procedure?)]
|
[random-function/state (domain-mapping/c generic-set? . -> . procedure?)]
|
||||||
[random-boolean-function/state ((listof variable?) . -> . procedure?)])
|
[random-boolean-function/state ((listof variable?) . -> . procedure?)]
|
||||||
|
[random-network (domain-mapping/c . -> . network?)]
|
||||||
|
[random-boolean-network ((listof variable?) . -> . network?)]
|
||||||
|
[random-boolean-network/vars (number? . -> . network?)])
|
||||||
;; Predicates
|
;; Predicates
|
||||||
(contract-out [variable? (-> any/c boolean?)]
|
(contract-out [variable? (-> any/c boolean?)]
|
||||||
[state? (-> any/c boolean?)]
|
[state? (-> any/c boolean?)]
|
||||||
|
@ -570,19 +573,16 @@
|
||||||
(random-function/state (make-boolean-domains args) '(#f #t)))
|
(random-function/state (make-boolean-domains args) '(#f #t)))
|
||||||
|
|
||||||
;;; Generates a random network from the given domain mapping.
|
;;; Generates a random network from the given domain mapping.
|
||||||
(define/contract (random-network domains)
|
(define (random-network domains)
|
||||||
(domain-mapping/c . -> . network?)
|
|
||||||
(for/hash ([(x x-dom) (in-hash domains)])
|
(for/hash ([(x x-dom) (in-hash domains)])
|
||||||
(values x (random-function/state domains x-dom))))
|
(values x (random-function/state domains x-dom))))
|
||||||
|
|
||||||
;;; Generates a random Boolean network with the given variables.
|
;;; Generates a random Boolean network with the given variables.
|
||||||
(define/contract (random-boolean-network vars)
|
(define (random-boolean-network vars)
|
||||||
((listof variable?) . -> . network?)
|
|
||||||
(random-network (make-boolean-domains vars)))
|
(random-network (make-boolean-domains vars)))
|
||||||
|
|
||||||
;;; Like random-boolean-network, but also generates the names of the
|
;;; Like random-boolean-network, but also generates the names of the
|
||||||
;;; variables for the network. The variables have the names x0 to xk,
|
;;; variables for the network. The variables have the names x0 to xk,
|
||||||
;;; where k = n - 1.
|
;;; where k = n - 1.
|
||||||
(define/contract (random-boolean-network/vars n)
|
(define (random-boolean-network/vars n)
|
||||||
(number? . -> . network?)
|
|
||||||
(random-boolean-network (for/list ([i (in-range n)]) (string->symbol (format "x~a" i)))))
|
(random-boolean-network (for/list ([i (in-range n)]) (string->symbol (format "x~a" i)))))
|
||||||
|
|
Loading…
Reference in a new issue