;;;; -*- Scheme -*-
;;
;; Comm example for HLSIM
;;
;; David DeRoure June 12 1997, revised Sep 11 1997
;; dder@martigny.ai.mit.edu
;;
;; This is the simulation setup for comm2.scm.  See the HLSIM documentation
;; for further details.

(load-option 'hlsim)

;; If you are using this example for the very first time, you need some
;; compiled files available to load.  If you do not have these, you can 
;; generate them with the following:

(cf "club5d")    ; normal compilation (scm -> bin -> com)

(cps "comm2") ; gunk compilation (scm -> bin), generates comm2.bin
(cbf "comm2") ; gunk compilation (bin -> com), generates comm2.com

;; If you have the compiled files, start from here

(load "club5d")

;; Make the simulation
;; Go from here to run different simulations.

;; The mean neighborhood density is just under n * pi * r^2

;; e.g. for a quick simulation try 1000 procs, radius 0.05, n pi r^2 = 7.9

(define sim (make-sim/1 1000 0.05))

;; e.g. for a large simulation try 10000 procs, radius 0.02, n pi r^2 = 12.6
; (define sim (make-sim/1 10000 0.02))

(simulation.display! sim #T)

(simulation.load sim 'init "comm2")

(simulation.run sim)

(define (stats sim exp)
  (let ((l (vector->list (simulation.eval sim exp))))
    (list exp
          (apply min l)
          (round (/ (apply + l) (length l)))
          (apply max l))))

(stats sim 'collisions)

;; end of comm2s.scm
