Simulation Campaigns with sasa

This post illustrates how:

  • to take advantage of the batch capabilities of sasa to perform Self-stabilizing Algorithms comparisons;
  • to empirically study the influence of the topology, or the daemons on the number of moves, steps, and rounds.

We consider 3 randomized graph coloring algorithms. Each process internal state contains an integer representing its color. A free color for a process is a color that is not used by one of its neighbors. The objective of the algorithms below is to stabilize when all processors colors are free.

The programs that automate the simulation campaign we describe below are written in Ocaml, but they could have been written in any language, as they only depend on a CLI tools: sasa, gg, and gg-deco. To run them you need to have in your shell path: make, ocaml, and R.

The 3 Algorithms

In the remaining, we study the 3 following graph coloring algorithms:

  1. « Uniform When Triggered »1
    • a process is enabled if its color is not free;
    • when triggered, it uniformly chooses one of the free color;
  2. « Smallest When Triggered »2
    • a process is enabled if its color is not free;
    • when triggered, it chooses the smallest free color;
  3. « Always the Biggest »3
    • a process is enabled if its color is not the biggest free color;
    • when triggered, it chooses the biggest free color;

Those algorithms are randomized in the sense that, when an action is triggered, it is executed with a probability of 0.5. This randomness is useful to stabilize under distributed or synchronous daemons.

The algorithms 2 and 3 are similar. Choosing the biggest or the smallest free colors does not change anything – we just wanted to be faithful to the way their were defined in their corresponding articles. The only difference is that the 3rd algorithm is more specific into its choice of colors: actions may be enabled even when the color is free! As a consequence, this third algorithm has less legitimate configurations, and is thus expected to stabilize slower.

TL;DR

In order to run the whole experiment, do:

git clone https://gricad-gitlab.univ-grenoble-alpes.fr/verimag/synchrone/sasa.git # is not already done before
cd sasa/tools/simca/
make # executes the first rule which generates the Makefile.expe-rules file
make cmxs  # generates the necessary dependencies (one by one => no -j !!)
make -j 30 log  # runs the simulations on a machine with losts of CPUs
make pdf # visualizes the results (.pdf files)

Note that in any case, you can run make pdf even while make -j 30 log is running.

If you want to run your own experiments, you can use the tools/simca/coloring_campaign.ml (or tools/simca/nonreg_test_campaign.ml) as a starting point. But probably you will need this read the post a little bit more.

Automating Simulation Campaigns

We now describe a set of small Ocaml programs that automates the execution of lots of simulations. Those programs are designed to automatically run:

  • several algorithms,
  • using various daemons,
  • on various graphs.

We first present the OCaml function gen_makefile, which inputs

  • a list of directories (which paths are relative to the current directory) dirl supposed to contain a sasa implementation of an algorithm,
  • a list of daemons dl,
  • a list of graphs gl.

This function, as its name hints, outputs Makefile rules to build

  • .log targets (|dirl| x |dl| x |gl| of them);
  • .log targets dependencies such as the .dot graphs (using the gg and gg-deco tools), or the .cmxs files.

Each .log target is a file which name is made of the names of the directory, daemon, and graph. They are generated by running sasa on the corresponding algorithm/daemon/graph several times, and contains estimations for 3 complexity measure numbers: moves, steps, and rounds. New simulations are performed (at least 10) as long as the size of the Confidence Interval with a confidence level of 95% (CI_95) is higher than 1% of the estimation, and this for the 3 complexity numbers.

The gen_makefile function is defined in genExpeMakefiles.ml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
(* [algo_to_deco dir] associates a directory names to
   - an argument to provide to gg-deco (to decorate gg generated graphs)
   - a label that is used to create the dot file names
 *)
let algo_to_deco dir =
  match Filename.basename dir with
  | "bfs-spanning-tree"
  | "dijkstra-ring"
  | "bfs-st-HC92"
  | "st-CYH91"
  | "st-KK06-algo1"
  | "st-KK06-algo2"
  | "dfs"
  | "dfs-list" -> "1-:p.ml 0:root.ml", "p_root"
  | "async-unison"
  | "coloring"
  | "alea-coloring"
  | "alea-coloring-unif" -> "0-:p.ml","p"
  | "alea-coloring-alt"  -> "0-:algo_331.ml","algo_331"
  | "unison"        -> "0-:unison.ml","unison"
  | s  -> Printf.printf
            "Error: %s is not handled by GenExpeMakefiles.algo_to_deco\n%!" s;
    assert false

type dir = string
type daemon = string
type graph =
  | Udg of int  (* size of the graph *)
  | Qudg of int (* size of the graph *)
  | ER of int * float (* size of the graph, probability to add an edge *)
  | Grid of int * int (* width and height of the grid *)
  | Clique of int  (* size of the graph *)
  | Ring of int    (* size of the graph *)
;;

(* The  4 following simulation  parameters are put into  references so
   that  they can  be modified.   They  could have  been arguments  of
   gen_makefile, but their values ought to be always the same (this is
   arguable).  *)
let precision = ref 0.01
    (* 0.01 here  means that we simulate until the  Confidence Interval
       size of  the 3 complexity  numbers under estimation  is smaller
       than 1% of their current estimation.
    *)
let directed = ref false (* *)
let max_simu_nb = ref 10000 (* no more simulations are done once reached *)
let timeout_in_sec = ref 10000 (* Ditto, once overtaken *)
let regen_dot = ref true;; (* regenerate the graph before every simulation *)
#use "genExpeMakefilesUtils.ml";;

(* The Main function (or in other words, the entry point)

   [gen_makefile oc p dl dirl  gl targets targets_cmxs] writes on [oc]
   |dl| x |dirl| x |gl| Makefile  rules that build .log files. It also
   generates the  dependencies to  execute those  log rules  (to build
   .dot and .cmxs files).

   It returns  the list of log  and cmxs targets that  were written on [oc]

   More   precisely,  it   adds  to   the  input   list  [targets_log]
   [targets_cmxs] the log and cmxs  targets that were written on [oc].
   *)
let (gen_makefile : string -> daemon list -> dir list -> graph list -> unit ) =
  fun fn dl dirl gl ->
  let oc = open_out fn in
  Printf.fprintf oc "# Generated by coloring_campaign.ml";
  let targets_log, targets_cmxs = List.fold_left (gen_makefile0 oc dl dirl) ([], []) gl in
  Printf.fprintf oc "\n# ZZZ do not do 'make -j 20 $(CMXS)'! (p.cmxs is regenerated
# at each target, which causes failures)\n";
  Printf.fprintf oc "\n# But 'make -j 20 $(LOG)' is fine!\n%!";
  Printf.fprintf oc "\nCMXS=%s\n"  (String.concat " " targets_cmxs);
  Printf.fprintf oc "\nLOG=%s\n%!" (String.concat " " targets_log);
  Printf.printf "%s has been generated\n%!" fn;
  close_out oc

(** Ditto, by building the list of deps incrementally. Requires the caller to print the
CMXS and LOG makefile files
 *)
let (gen_makefile_incr : out_channel -> daemon list -> dir list
     -> graph list -> string list -> string list -> string list * string list) =
  fun  oc dl dirl gl targets_log targets_cmxs ->
  let targets_log, targets_cmxs  =
    List.fold_left (gen_makefile0 oc dl dirl) (targets_log, targets_cmxs) gl
  in
  Printf.fprintf oc "\n# ZZZ do not do 'make -j 20 $(CMXS)'! (p.cmxs is regenerated
# at each target, which causes failures)\n";
  Printf.fprintf oc "\n# But 'make -j 20 $(LOG)' is fine!\n%!";
  targets_log, targets_cmxs

nb: if you want to add your own algorithms, you will need to extend the algo_to_deco that is use by gen_makefile function (via functions defined in genExpeMakefilesUtils.ml).

The coloring_campaign.ml program below is an example of use of gen_makefile. It will allow to perform simulations of

  • 3 algorithms: "../alea-coloring-alt", "../alea-coloring-unif", "../alea-coloring"
  • using 3 daemons: synchronous, locally central, and distributed
  • on
    • 10 cliques of size 30, 60, …, 300
    • 10 rings of size 500, 1000, …, 5000
    • 10 random graphs (Erdos-Renyi) of size 30, 60, …, 300
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#use "genExpeMakefiles.ml";;
precision := 0.01;;
    (* 0.01 means that we simulate until the Confidence Interval
       size of  the 3 complexity  numbers under estimation  is smaller
       than 1% of their current estimation.
    *)
let algos = ["../../test/alea-coloring-alt";
             "../../test/alea-coloring-unif";
             "../../test/alea-coloring"]
let daemons = ["-sd";"-lcd";"-dd"]
let rings = List.init 10 (fun n -> Ring (500*(n+1)))    (* [500; 1000; ...; 5000] *)
let cliques = List.init 10 (fun n -> Clique (30*(n+1))) (* [30; 60; ...; 300] *)
let er = List.init 10 (fun n -> ER (30*(n+1), 0.4))     (* [30; 60; ...; 300] *)
let networks = (cliques@rings@er)

let gen_make_rules () = gen_makefile "Makefile.expe-rules" daemons algos networks;;

#use "parseLog.ml";;
let gen_pdf () =
  let gl = ["clique"; "ring"; "er"] in
  List.iter (fun n -> sh ("rm -f "^n^".data")) gl;
  parse_log ["Col-a1","alea-coloring-unif"] gl daemons;
  parse_log ["Col-a2","alea-coloring"] gl daemons;
  parse_log ["Col-a3","alea-coloring-alt"] gl daemons;
  List.iter (fun n -> sh ("./gen_pdf_paper.r "^n^".data coloring4zpaper")) gl;
  List.iter (fun n -> sh ("./gen_pdf.r "^n^".data coloring")) gl

nb: the precision is set to 0.01 (line 2). In order to lower the computation time, and if you just want a rough idea of the execution time, it might be wise to use a bigger number here. In the same vein, executing coloring_campaign.ml takes several days to proceed. If you want to give it a try, it is probably better to start with sasa/tools/simca/nonreg_test_campaign.ml:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#use "genExpeMakefiles.ml";;
precision := 0.1;;
(* 0.1  means that we simulate until the  onfidence Interval  size of
   the 3  complexity numbers under  estimation is smaller than  10% of
   their current estimation.

   Starting with  10% to  get a  rough idea of  the complexity  in the
   first place is probably a wise idea.  *)
max_simu_nb := 1000;; (* by default, it's more *)
timeout_in_sec := 60;; (* ditto *)
let algos = ["../../test/alea-coloring-alt";
             "../../test/alea-coloring-unif";
             "../../test/alea-coloring"]
let daemons = ["-sd";"-lcd";"-dd"]
let cliques = List.init 5 (fun n -> Clique (10*(n+1))) (* [10; 20; ...; 50] *)
let rings = List.init 5 (fun n -> Ring (100*(n+1))) (* [100; 200; ...; 500] *)
let er = List.init 5 (fun n -> ER (20*(n+1), 0.4)) (* [20; 40; ...; 100] *)
let networks = (cliques@rings@er)

let gen_make_rules () = gen_makefile "Makefile.expe-rules" daemons algos networks;;

#use "parseLog.ml";;
let gen_pdf () =
  let gl = ["clique"; "ring"; "er"] in
  List.iter (fun n -> sh ("rm -f "^n^".data")) gl; (* because parse_log appends data *)
  parse_log ["Uniform When Activated", "alea-coloring-unif"] gl daemons;
  parse_log ["Smallest When Activated","alea-coloring"] gl daemons;
  parse_log ["Always the Biggest", "alea-coloring-alt"] gl daemons;
  List.iter (fun n -> sh ("./gen_pdf.r "^n^".data nonreg")) gl

Indeed, nonreg_test_campaign.ml do the same things, except that it uses less graphs (15 instead of 30), and more importantly, its calls gen_makefile with 0.1 instead of 0.01. This means that new simulations are performed as long as the size of the Confidence Interval is higher than 10% of the estimation, (instead of 1%). Hence, much less simulations will be performed, and the whole experiments should last a few minutes only.

In order to use those test campaign programs, one can take advantage of the following sasa/tools/simca/Makefile:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
CAMPAIGN=spanning_tree_campaign.ml
CAMPAIGN=coloring_campaign.ml
CAMPAIGN=nonreg_test_campaign.ml

Makefile.expe-rules: $(CAMPAIGN)
	echo "#use \"$(CAMPAIGN)\";;\n gen_make_rules ();;" | ocaml

-include Makefile.expe-rules
# CMXS and LOG are defined in Makefile.expe-rules, which must have been generated!
cmxs: $(CMXS)
log: $(LOG)
pdf:
	echo "#use \"$(CAMPAIGN)\";;\n gen_pdf ();;" | ocaml

In the following, we suppose that the lines 2 and 3 of this Makefile have been commented out to generate more data and smother curves. One can thus run make Makefile.expe-rules (or even just make, as it is the first rule) to generate the Makefile.expe-rules file below, which contains rules to build 3x3x10x3=270 .log files:

# Generated by nonreg_test_campaign.ml
ring500_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/ring500_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_algo_331-dd-alea-coloring-alt.log \
	 && echo "ring500_algo_331-sd-alea-coloring-alt.log done"


ring500_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/ring500_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-dd-alea-coloring-unif.log \
	 && echo "ring500_p-sd-alea-coloring-unif.log done"


ring500_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/ring500_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring500_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring500_p-dd-alea-coloring.log \
	 && echo "ring500_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/ring500_algo_331.dot:
	echo "gg ring -n 500 -o ../../test/alea-coloring-alt/ring500_algo_331.dot" > ../../test/alea-coloring-alt/ring500_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/ring500_algo_331.dot -o ../../test/alea-coloring-alt/ring500_algo_331.dot" >> ../../test/alea-coloring-alt/ring500_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/ring500_algo_331.dot.sh


../../test/alea-coloring-alt/ring500_algo_331.cmxs: ../../test/alea-coloring-alt/ring500_algo_331.dot
	cd ../../test/alea-coloring-alt; make ring500_algo_331.cmxs
../../test/alea-coloring-unif/ring500_p.dot:
	echo "gg ring -n 500 -o ../../test/alea-coloring-unif/ring500_p.dot" > ../../test/alea-coloring-unif/ring500_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/ring500_p.dot -o ../../test/alea-coloring-unif/ring500_p.dot" >> ../../test/alea-coloring-unif/ring500_p.dot.sh
	sh ../../test/alea-coloring-unif/ring500_p.dot.sh


../../test/alea-coloring-unif/ring500_p.cmxs: ../../test/alea-coloring-unif/ring500_p.dot
	cd ../../test/alea-coloring-unif; make ring500_p.cmxs
../../test/alea-coloring/ring500_p.dot:
	echo "gg ring -n 500 -o ../../test/alea-coloring/ring500_p.dot" > ../../test/alea-coloring/ring500_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/ring500_p.dot -o ../../test/alea-coloring/ring500_p.dot" >> ../../test/alea-coloring/ring500_p.dot.sh
	sh ../../test/alea-coloring/ring500_p.dot.sh


../../test/alea-coloring/ring500_p.cmxs: ../../test/alea-coloring/ring500_p.dot
	cd ../../test/alea-coloring; make ring500_p.cmxs

ring400_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/ring400_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_algo_331-dd-alea-coloring-alt.log \
	 && echo "ring400_algo_331-sd-alea-coloring-alt.log done"


ring400_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/ring400_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-dd-alea-coloring-unif.log \
	 && echo "ring400_p-sd-alea-coloring-unif.log done"


ring400_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/ring400_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring400_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring400_p-dd-alea-coloring.log \
	 && echo "ring400_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/ring400_algo_331.dot:
	echo "gg ring -n 400 -o ../../test/alea-coloring-alt/ring400_algo_331.dot" > ../../test/alea-coloring-alt/ring400_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/ring400_algo_331.dot -o ../../test/alea-coloring-alt/ring400_algo_331.dot" >> ../../test/alea-coloring-alt/ring400_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/ring400_algo_331.dot.sh


../../test/alea-coloring-alt/ring400_algo_331.cmxs: ../../test/alea-coloring-alt/ring400_algo_331.dot
	cd ../../test/alea-coloring-alt; make ring400_algo_331.cmxs
../../test/alea-coloring-unif/ring400_p.dot:
	echo "gg ring -n 400 -o ../../test/alea-coloring-unif/ring400_p.dot" > ../../test/alea-coloring-unif/ring400_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/ring400_p.dot -o ../../test/alea-coloring-unif/ring400_p.dot" >> ../../test/alea-coloring-unif/ring400_p.dot.sh
	sh ../../test/alea-coloring-unif/ring400_p.dot.sh


../../test/alea-coloring-unif/ring400_p.cmxs: ../../test/alea-coloring-unif/ring400_p.dot
	cd ../../test/alea-coloring-unif; make ring400_p.cmxs
../../test/alea-coloring/ring400_p.dot:
	echo "gg ring -n 400 -o ../../test/alea-coloring/ring400_p.dot" > ../../test/alea-coloring/ring400_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/ring400_p.dot -o ../../test/alea-coloring/ring400_p.dot" >> ../../test/alea-coloring/ring400_p.dot.sh
	sh ../../test/alea-coloring/ring400_p.dot.sh


../../test/alea-coloring/ring400_p.cmxs: ../../test/alea-coloring/ring400_p.dot
	cd ../../test/alea-coloring; make ring400_p.cmxs

ring300_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/ring300_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_algo_331-dd-alea-coloring-alt.log \
	 && echo "ring300_algo_331-sd-alea-coloring-alt.log done"


ring300_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/ring300_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-dd-alea-coloring-unif.log \
	 && echo "ring300_p-sd-alea-coloring-unif.log done"


ring300_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/ring300_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring300_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring300_p-dd-alea-coloring.log \
	 && echo "ring300_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/ring300_algo_331.dot:
	echo "gg ring -n 300 -o ../../test/alea-coloring-alt/ring300_algo_331.dot" > ../../test/alea-coloring-alt/ring300_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/ring300_algo_331.dot -o ../../test/alea-coloring-alt/ring300_algo_331.dot" >> ../../test/alea-coloring-alt/ring300_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/ring300_algo_331.dot.sh


../../test/alea-coloring-alt/ring300_algo_331.cmxs: ../../test/alea-coloring-alt/ring300_algo_331.dot
	cd ../../test/alea-coloring-alt; make ring300_algo_331.cmxs
../../test/alea-coloring-unif/ring300_p.dot:
	echo "gg ring -n 300 -o ../../test/alea-coloring-unif/ring300_p.dot" > ../../test/alea-coloring-unif/ring300_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/ring300_p.dot -o ../../test/alea-coloring-unif/ring300_p.dot" >> ../../test/alea-coloring-unif/ring300_p.dot.sh
	sh ../../test/alea-coloring-unif/ring300_p.dot.sh


../../test/alea-coloring-unif/ring300_p.cmxs: ../../test/alea-coloring-unif/ring300_p.dot
	cd ../../test/alea-coloring-unif; make ring300_p.cmxs
../../test/alea-coloring/ring300_p.dot:
	echo "gg ring -n 300 -o ../../test/alea-coloring/ring300_p.dot" > ../../test/alea-coloring/ring300_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/ring300_p.dot -o ../../test/alea-coloring/ring300_p.dot" >> ../../test/alea-coloring/ring300_p.dot.sh
	sh ../../test/alea-coloring/ring300_p.dot.sh


../../test/alea-coloring/ring300_p.cmxs: ../../test/alea-coloring/ring300_p.dot
	cd ../../test/alea-coloring; make ring300_p.cmxs

ring200_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/ring200_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_algo_331-dd-alea-coloring-alt.log \
	 && echo "ring200_algo_331-sd-alea-coloring-alt.log done"


ring200_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/ring200_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-dd-alea-coloring-unif.log \
	 && echo "ring200_p-sd-alea-coloring-unif.log done"


ring200_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/ring200_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring200_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring200_p-dd-alea-coloring.log \
	 && echo "ring200_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/ring200_algo_331.dot:
	echo "gg ring -n 200 -o ../../test/alea-coloring-alt/ring200_algo_331.dot" > ../../test/alea-coloring-alt/ring200_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/ring200_algo_331.dot -o ../../test/alea-coloring-alt/ring200_algo_331.dot" >> ../../test/alea-coloring-alt/ring200_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/ring200_algo_331.dot.sh


../../test/alea-coloring-alt/ring200_algo_331.cmxs: ../../test/alea-coloring-alt/ring200_algo_331.dot
	cd ../../test/alea-coloring-alt; make ring200_algo_331.cmxs
../../test/alea-coloring-unif/ring200_p.dot:
	echo "gg ring -n 200 -o ../../test/alea-coloring-unif/ring200_p.dot" > ../../test/alea-coloring-unif/ring200_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/ring200_p.dot -o ../../test/alea-coloring-unif/ring200_p.dot" >> ../../test/alea-coloring-unif/ring200_p.dot.sh
	sh ../../test/alea-coloring-unif/ring200_p.dot.sh


../../test/alea-coloring-unif/ring200_p.cmxs: ../../test/alea-coloring-unif/ring200_p.dot
	cd ../../test/alea-coloring-unif; make ring200_p.cmxs
../../test/alea-coloring/ring200_p.dot:
	echo "gg ring -n 200 -o ../../test/alea-coloring/ring200_p.dot" > ../../test/alea-coloring/ring200_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/ring200_p.dot -o ../../test/alea-coloring/ring200_p.dot" >> ../../test/alea-coloring/ring200_p.dot.sh
	sh ../../test/alea-coloring/ring200_p.dot.sh


../../test/alea-coloring/ring200_p.cmxs: ../../test/alea-coloring/ring200_p.dot
	cd ../../test/alea-coloring; make ring200_p.cmxs

ring100_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/ring100_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_algo_331-dd-alea-coloring-alt.log \
	 && echo "ring100_algo_331-sd-alea-coloring-alt.log done"


ring100_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/ring100_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-dd-alea-coloring-unif.log \
	 && echo "ring100_p-sd-alea-coloring-unif.log done"


ring100_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/ring100_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 ring100_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/ring100_p-dd-alea-coloring.log \
	 && echo "ring100_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/ring100_algo_331.dot:
	echo "gg ring -n 100 -o ../../test/alea-coloring-alt/ring100_algo_331.dot" > ../../test/alea-coloring-alt/ring100_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/ring100_algo_331.dot -o ../../test/alea-coloring-alt/ring100_algo_331.dot" >> ../../test/alea-coloring-alt/ring100_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/ring100_algo_331.dot.sh


../../test/alea-coloring-alt/ring100_algo_331.cmxs: ../../test/alea-coloring-alt/ring100_algo_331.dot
	cd ../../test/alea-coloring-alt; make ring100_algo_331.cmxs
../../test/alea-coloring-unif/ring100_p.dot:
	echo "gg ring -n 100 -o ../../test/alea-coloring-unif/ring100_p.dot" > ../../test/alea-coloring-unif/ring100_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/ring100_p.dot -o ../../test/alea-coloring-unif/ring100_p.dot" >> ../../test/alea-coloring-unif/ring100_p.dot.sh
	sh ../../test/alea-coloring-unif/ring100_p.dot.sh


../../test/alea-coloring-unif/ring100_p.cmxs: ../../test/alea-coloring-unif/ring100_p.dot
	cd ../../test/alea-coloring-unif; make ring100_p.cmxs
../../test/alea-coloring/ring100_p.dot:
	echo "gg ring -n 100 -o ../../test/alea-coloring/ring100_p.dot" > ../../test/alea-coloring/ring100_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/ring100_p.dot -o ../../test/alea-coloring/ring100_p.dot" >> ../../test/alea-coloring/ring100_p.dot.sh
	sh ../../test/alea-coloring/ring100_p.dot.sh


../../test/alea-coloring/ring100_p.cmxs: ../../test/alea-coloring/ring100_p.dot
	cd ../../test/alea-coloring; make ring100_p.cmxs

clique50_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/clique50_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_algo_331-dd-alea-coloring-alt.log \
	 && echo "clique50_algo_331-sd-alea-coloring-alt.log done"


clique50_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/clique50_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-dd-alea-coloring-unif.log \
	 && echo "clique50_p-sd-alea-coloring-unif.log done"


clique50_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/clique50_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique50_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique50_p-dd-alea-coloring.log \
	 && echo "clique50_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/clique50_algo_331.dot:
	echo "gg clique -n 50 -o ../../test/alea-coloring-alt/clique50_algo_331.dot" > ../../test/alea-coloring-alt/clique50_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/clique50_algo_331.dot -o ../../test/alea-coloring-alt/clique50_algo_331.dot" >> ../../test/alea-coloring-alt/clique50_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/clique50_algo_331.dot.sh


../../test/alea-coloring-alt/clique50_algo_331.cmxs: ../../test/alea-coloring-alt/clique50_algo_331.dot
	cd ../../test/alea-coloring-alt; make clique50_algo_331.cmxs
../../test/alea-coloring-unif/clique50_p.dot:
	echo "gg clique -n 50 -o ../../test/alea-coloring-unif/clique50_p.dot" > ../../test/alea-coloring-unif/clique50_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/clique50_p.dot -o ../../test/alea-coloring-unif/clique50_p.dot" >> ../../test/alea-coloring-unif/clique50_p.dot.sh
	sh ../../test/alea-coloring-unif/clique50_p.dot.sh


../../test/alea-coloring-unif/clique50_p.cmxs: ../../test/alea-coloring-unif/clique50_p.dot
	cd ../../test/alea-coloring-unif; make clique50_p.cmxs
../../test/alea-coloring/clique50_p.dot:
	echo "gg clique -n 50 -o ../../test/alea-coloring/clique50_p.dot" > ../../test/alea-coloring/clique50_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/clique50_p.dot -o ../../test/alea-coloring/clique50_p.dot" >> ../../test/alea-coloring/clique50_p.dot.sh
	sh ../../test/alea-coloring/clique50_p.dot.sh


../../test/alea-coloring/clique50_p.cmxs: ../../test/alea-coloring/clique50_p.dot
	cd ../../test/alea-coloring; make clique50_p.cmxs

clique40_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/clique40_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_algo_331-dd-alea-coloring-alt.log \
	 && echo "clique40_algo_331-sd-alea-coloring-alt.log done"


clique40_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/clique40_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-dd-alea-coloring-unif.log \
	 && echo "clique40_p-sd-alea-coloring-unif.log done"


clique40_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/clique40_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique40_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique40_p-dd-alea-coloring.log \
	 && echo "clique40_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/clique40_algo_331.dot:
	echo "gg clique -n 40 -o ../../test/alea-coloring-alt/clique40_algo_331.dot" > ../../test/alea-coloring-alt/clique40_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/clique40_algo_331.dot -o ../../test/alea-coloring-alt/clique40_algo_331.dot" >> ../../test/alea-coloring-alt/clique40_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/clique40_algo_331.dot.sh


../../test/alea-coloring-alt/clique40_algo_331.cmxs: ../../test/alea-coloring-alt/clique40_algo_331.dot
	cd ../../test/alea-coloring-alt; make clique40_algo_331.cmxs
../../test/alea-coloring-unif/clique40_p.dot:
	echo "gg clique -n 40 -o ../../test/alea-coloring-unif/clique40_p.dot" > ../../test/alea-coloring-unif/clique40_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/clique40_p.dot -o ../../test/alea-coloring-unif/clique40_p.dot" >> ../../test/alea-coloring-unif/clique40_p.dot.sh
	sh ../../test/alea-coloring-unif/clique40_p.dot.sh


../../test/alea-coloring-unif/clique40_p.cmxs: ../../test/alea-coloring-unif/clique40_p.dot
	cd ../../test/alea-coloring-unif; make clique40_p.cmxs
../../test/alea-coloring/clique40_p.dot:
	echo "gg clique -n 40 -o ../../test/alea-coloring/clique40_p.dot" > ../../test/alea-coloring/clique40_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/clique40_p.dot -o ../../test/alea-coloring/clique40_p.dot" >> ../../test/alea-coloring/clique40_p.dot.sh
	sh ../../test/alea-coloring/clique40_p.dot.sh


../../test/alea-coloring/clique40_p.cmxs: ../../test/alea-coloring/clique40_p.dot
	cd ../../test/alea-coloring; make clique40_p.cmxs

clique30_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/clique30_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_algo_331-dd-alea-coloring-alt.log \
	 && echo "clique30_algo_331-sd-alea-coloring-alt.log done"


clique30_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/clique30_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-dd-alea-coloring-unif.log \
	 && echo "clique30_p-sd-alea-coloring-unif.log done"


clique30_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/clique30_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique30_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique30_p-dd-alea-coloring.log \
	 && echo "clique30_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/clique30_algo_331.dot:
	echo "gg clique -n 30 -o ../../test/alea-coloring-alt/clique30_algo_331.dot" > ../../test/alea-coloring-alt/clique30_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/clique30_algo_331.dot -o ../../test/alea-coloring-alt/clique30_algo_331.dot" >> ../../test/alea-coloring-alt/clique30_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/clique30_algo_331.dot.sh


../../test/alea-coloring-alt/clique30_algo_331.cmxs: ../../test/alea-coloring-alt/clique30_algo_331.dot
	cd ../../test/alea-coloring-alt; make clique30_algo_331.cmxs
../../test/alea-coloring-unif/clique30_p.dot:
	echo "gg clique -n 30 -o ../../test/alea-coloring-unif/clique30_p.dot" > ../../test/alea-coloring-unif/clique30_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/clique30_p.dot -o ../../test/alea-coloring-unif/clique30_p.dot" >> ../../test/alea-coloring-unif/clique30_p.dot.sh
	sh ../../test/alea-coloring-unif/clique30_p.dot.sh


../../test/alea-coloring-unif/clique30_p.cmxs: ../../test/alea-coloring-unif/clique30_p.dot
	cd ../../test/alea-coloring-unif; make clique30_p.cmxs
../../test/alea-coloring/clique30_p.dot:
	echo "gg clique -n 30 -o ../../test/alea-coloring/clique30_p.dot" > ../../test/alea-coloring/clique30_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/clique30_p.dot -o ../../test/alea-coloring/clique30_p.dot" >> ../../test/alea-coloring/clique30_p.dot.sh
	sh ../../test/alea-coloring/clique30_p.dot.sh


../../test/alea-coloring/clique30_p.cmxs: ../../test/alea-coloring/clique30_p.dot
	cd ../../test/alea-coloring; make clique30_p.cmxs

clique20_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/clique20_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_algo_331-dd-alea-coloring-alt.log \
	 && echo "clique20_algo_331-sd-alea-coloring-alt.log done"


clique20_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/clique20_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-dd-alea-coloring-unif.log \
	 && echo "clique20_p-sd-alea-coloring-unif.log done"


clique20_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/clique20_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique20_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique20_p-dd-alea-coloring.log \
	 && echo "clique20_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/clique20_algo_331.dot:
	echo "gg clique -n 20 -o ../../test/alea-coloring-alt/clique20_algo_331.dot" > ../../test/alea-coloring-alt/clique20_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/clique20_algo_331.dot -o ../../test/alea-coloring-alt/clique20_algo_331.dot" >> ../../test/alea-coloring-alt/clique20_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/clique20_algo_331.dot.sh


../../test/alea-coloring-alt/clique20_algo_331.cmxs: ../../test/alea-coloring-alt/clique20_algo_331.dot
	cd ../../test/alea-coloring-alt; make clique20_algo_331.cmxs
../../test/alea-coloring-unif/clique20_p.dot:
	echo "gg clique -n 20 -o ../../test/alea-coloring-unif/clique20_p.dot" > ../../test/alea-coloring-unif/clique20_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/clique20_p.dot -o ../../test/alea-coloring-unif/clique20_p.dot" >> ../../test/alea-coloring-unif/clique20_p.dot.sh
	sh ../../test/alea-coloring-unif/clique20_p.dot.sh


../../test/alea-coloring-unif/clique20_p.cmxs: ../../test/alea-coloring-unif/clique20_p.dot
	cd ../../test/alea-coloring-unif; make clique20_p.cmxs
../../test/alea-coloring/clique20_p.dot:
	echo "gg clique -n 20 -o ../../test/alea-coloring/clique20_p.dot" > ../../test/alea-coloring/clique20_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/clique20_p.dot -o ../../test/alea-coloring/clique20_p.dot" >> ../../test/alea-coloring/clique20_p.dot.sh
	sh ../../test/alea-coloring/clique20_p.dot.sh


../../test/alea-coloring/clique20_p.cmxs: ../../test/alea-coloring/clique20_p.dot
	cd ../../test/alea-coloring; make clique20_p.cmxs

clique10_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/clique10_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_algo_331-dd-alea-coloring-alt.log \
	 && echo "clique10_algo_331-sd-alea-coloring-alt.log done"


clique10_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/clique10_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-dd-alea-coloring-unif.log \
	 && echo "clique10_p-sd-alea-coloring-unif.log done"


clique10_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/clique10_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus false 0.100000 1000 60.0 \"sasa -l 20000 clique10_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/clique10_p-dd-alea-coloring.log \
	 && echo "clique10_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/clique10_algo_331.dot:
	echo "gg clique -n 10 -o ../../test/alea-coloring-alt/clique10_algo_331.dot" > ../../test/alea-coloring-alt/clique10_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/clique10_algo_331.dot -o ../../test/alea-coloring-alt/clique10_algo_331.dot" >> ../../test/alea-coloring-alt/clique10_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/clique10_algo_331.dot.sh


../../test/alea-coloring-alt/clique10_algo_331.cmxs: ../../test/alea-coloring-alt/clique10_algo_331.dot
	cd ../../test/alea-coloring-alt; make clique10_algo_331.cmxs
../../test/alea-coloring-unif/clique10_p.dot:
	echo "gg clique -n 10 -o ../../test/alea-coloring-unif/clique10_p.dot" > ../../test/alea-coloring-unif/clique10_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/clique10_p.dot -o ../../test/alea-coloring-unif/clique10_p.dot" >> ../../test/alea-coloring-unif/clique10_p.dot.sh
	sh ../../test/alea-coloring-unif/clique10_p.dot.sh


../../test/alea-coloring-unif/clique10_p.cmxs: ../../test/alea-coloring-unif/clique10_p.dot
	cd ../../test/alea-coloring-unif; make clique10_p.cmxs
../../test/alea-coloring/clique10_p.dot:
	echo "gg clique -n 10 -o ../../test/alea-coloring/clique10_p.dot" > ../../test/alea-coloring/clique10_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/clique10_p.dot -o ../../test/alea-coloring/clique10_p.dot" >> ../../test/alea-coloring/clique10_p.dot.sh
	sh ../../test/alea-coloring/clique10_p.dot.sh


../../test/alea-coloring/clique10_p.cmxs: ../../test/alea-coloring/clique10_p.dot
	cd ../../test/alea-coloring; make clique10_p.cmxs

er100_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/er100_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_algo_331-dd-alea-coloring-alt.log \
	 && echo "er100_algo_331-sd-alea-coloring-alt.log done"


er100_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/er100_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-dd-alea-coloring-unif.log \
	 && echo "er100_p-sd-alea-coloring-unif.log done"


er100_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/er100_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er100_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er100_p-dd-alea-coloring.log \
	 && echo "er100_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/er100_algo_331.dot:
	echo "gg ER -n 100 -p 0.400000 -o ../../test/alea-coloring-alt/er100_algo_331.dot" > ../../test/alea-coloring-alt/er100_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/er100_algo_331.dot -o ../../test/alea-coloring-alt/er100_algo_331.dot" >> ../../test/alea-coloring-alt/er100_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/er100_algo_331.dot.sh


../../test/alea-coloring-alt/er100_algo_331.cmxs: ../../test/alea-coloring-alt/er100_algo_331.dot
	cd ../../test/alea-coloring-alt; make er100_algo_331.cmxs
../../test/alea-coloring-unif/er100_p.dot:
	echo "gg ER -n 100 -p 0.400000 -o ../../test/alea-coloring-unif/er100_p.dot" > ../../test/alea-coloring-unif/er100_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/er100_p.dot -o ../../test/alea-coloring-unif/er100_p.dot" >> ../../test/alea-coloring-unif/er100_p.dot.sh
	sh ../../test/alea-coloring-unif/er100_p.dot.sh


../../test/alea-coloring-unif/er100_p.cmxs: ../../test/alea-coloring-unif/er100_p.dot
	cd ../../test/alea-coloring-unif; make er100_p.cmxs
../../test/alea-coloring/er100_p.dot:
	echo "gg ER -n 100 -p 0.400000 -o ../../test/alea-coloring/er100_p.dot" > ../../test/alea-coloring/er100_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/er100_p.dot -o ../../test/alea-coloring/er100_p.dot" >> ../../test/alea-coloring/er100_p.dot.sh
	sh ../../test/alea-coloring/er100_p.dot.sh


../../test/alea-coloring/er100_p.cmxs: ../../test/alea-coloring/er100_p.dot
	cd ../../test/alea-coloring; make er100_p.cmxs

er80_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/er80_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_algo_331-dd-alea-coloring-alt.log \
	 && echo "er80_algo_331-sd-alea-coloring-alt.log done"


er80_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/er80_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-dd-alea-coloring-unif.log \
	 && echo "er80_p-sd-alea-coloring-unif.log done"


er80_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/er80_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er80_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er80_p-dd-alea-coloring.log \
	 && echo "er80_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/er80_algo_331.dot:
	echo "gg ER -n 80 -p 0.400000 -o ../../test/alea-coloring-alt/er80_algo_331.dot" > ../../test/alea-coloring-alt/er80_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/er80_algo_331.dot -o ../../test/alea-coloring-alt/er80_algo_331.dot" >> ../../test/alea-coloring-alt/er80_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/er80_algo_331.dot.sh


../../test/alea-coloring-alt/er80_algo_331.cmxs: ../../test/alea-coloring-alt/er80_algo_331.dot
	cd ../../test/alea-coloring-alt; make er80_algo_331.cmxs
../../test/alea-coloring-unif/er80_p.dot:
	echo "gg ER -n 80 -p 0.400000 -o ../../test/alea-coloring-unif/er80_p.dot" > ../../test/alea-coloring-unif/er80_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/er80_p.dot -o ../../test/alea-coloring-unif/er80_p.dot" >> ../../test/alea-coloring-unif/er80_p.dot.sh
	sh ../../test/alea-coloring-unif/er80_p.dot.sh


../../test/alea-coloring-unif/er80_p.cmxs: ../../test/alea-coloring-unif/er80_p.dot
	cd ../../test/alea-coloring-unif; make er80_p.cmxs
../../test/alea-coloring/er80_p.dot:
	echo "gg ER -n 80 -p 0.400000 -o ../../test/alea-coloring/er80_p.dot" > ../../test/alea-coloring/er80_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/er80_p.dot -o ../../test/alea-coloring/er80_p.dot" >> ../../test/alea-coloring/er80_p.dot.sh
	sh ../../test/alea-coloring/er80_p.dot.sh


../../test/alea-coloring/er80_p.cmxs: ../../test/alea-coloring/er80_p.dot
	cd ../../test/alea-coloring; make er80_p.cmxs

er60_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/er60_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_algo_331-dd-alea-coloring-alt.log \
	 && echo "er60_algo_331-sd-alea-coloring-alt.log done"


er60_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/er60_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-dd-alea-coloring-unif.log \
	 && echo "er60_p-sd-alea-coloring-unif.log done"


er60_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/er60_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er60_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er60_p-dd-alea-coloring.log \
	 && echo "er60_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/er60_algo_331.dot:
	echo "gg ER -n 60 -p 0.400000 -o ../../test/alea-coloring-alt/er60_algo_331.dot" > ../../test/alea-coloring-alt/er60_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/er60_algo_331.dot -o ../../test/alea-coloring-alt/er60_algo_331.dot" >> ../../test/alea-coloring-alt/er60_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/er60_algo_331.dot.sh


../../test/alea-coloring-alt/er60_algo_331.cmxs: ../../test/alea-coloring-alt/er60_algo_331.dot
	cd ../../test/alea-coloring-alt; make er60_algo_331.cmxs
../../test/alea-coloring-unif/er60_p.dot:
	echo "gg ER -n 60 -p 0.400000 -o ../../test/alea-coloring-unif/er60_p.dot" > ../../test/alea-coloring-unif/er60_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/er60_p.dot -o ../../test/alea-coloring-unif/er60_p.dot" >> ../../test/alea-coloring-unif/er60_p.dot.sh
	sh ../../test/alea-coloring-unif/er60_p.dot.sh


../../test/alea-coloring-unif/er60_p.cmxs: ../../test/alea-coloring-unif/er60_p.dot
	cd ../../test/alea-coloring-unif; make er60_p.cmxs
../../test/alea-coloring/er60_p.dot:
	echo "gg ER -n 60 -p 0.400000 -o ../../test/alea-coloring/er60_p.dot" > ../../test/alea-coloring/er60_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/er60_p.dot -o ../../test/alea-coloring/er60_p.dot" >> ../../test/alea-coloring/er60_p.dot.sh
	sh ../../test/alea-coloring/er60_p.dot.sh


../../test/alea-coloring/er60_p.cmxs: ../../test/alea-coloring/er60_p.dot
	cd ../../test/alea-coloring; make er60_p.cmxs

er40_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/er40_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_algo_331-dd-alea-coloring-alt.log \
	 && echo "er40_algo_331-sd-alea-coloring-alt.log done"


er40_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/er40_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-dd-alea-coloring-unif.log \
	 && echo "er40_p-sd-alea-coloring-unif.log done"


er40_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/er40_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er40_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er40_p-dd-alea-coloring.log \
	 && echo "er40_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/er40_algo_331.dot:
	echo "gg ER -n 40 -p 0.400000 -o ../../test/alea-coloring-alt/er40_algo_331.dot" > ../../test/alea-coloring-alt/er40_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/er40_algo_331.dot -o ../../test/alea-coloring-alt/er40_algo_331.dot" >> ../../test/alea-coloring-alt/er40_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/er40_algo_331.dot.sh


../../test/alea-coloring-alt/er40_algo_331.cmxs: ../../test/alea-coloring-alt/er40_algo_331.dot
	cd ../../test/alea-coloring-alt; make er40_algo_331.cmxs
../../test/alea-coloring-unif/er40_p.dot:
	echo "gg ER -n 40 -p 0.400000 -o ../../test/alea-coloring-unif/er40_p.dot" > ../../test/alea-coloring-unif/er40_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/er40_p.dot -o ../../test/alea-coloring-unif/er40_p.dot" >> ../../test/alea-coloring-unif/er40_p.dot.sh
	sh ../../test/alea-coloring-unif/er40_p.dot.sh


../../test/alea-coloring-unif/er40_p.cmxs: ../../test/alea-coloring-unif/er40_p.dot
	cd ../../test/alea-coloring-unif; make er40_p.cmxs
../../test/alea-coloring/er40_p.dot:
	echo "gg ER -n 40 -p 0.400000 -o ../../test/alea-coloring/er40_p.dot" > ../../test/alea-coloring/er40_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/er40_p.dot -o ../../test/alea-coloring/er40_p.dot" >> ../../test/alea-coloring/er40_p.dot.sh
	sh ../../test/alea-coloring/er40_p.dot.sh


../../test/alea-coloring/er40_p.cmxs: ../../test/alea-coloring/er40_p.dot
	cd ../../test/alea-coloring; make er40_p.cmxs

er20_algo_331-sd-alea-coloring-alt.log:
	[ -f ../../test/alea-coloring-alt/er20_algo_331.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-alt \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_algo_331.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_algo_331-sd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_algo_331.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_algo_331-lcd-alea-coloring-alt.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_algo_331.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_algo_331-dd-alea-coloring-alt.log \
	 && echo "er20_algo_331-sd-alea-coloring-alt.log done"


er20_p-sd-alea-coloring-unif.log:
	[ -f ../../test/alea-coloring-unif/er20_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring-unif \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-sd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-lcd-alea-coloring-unif.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-dd-alea-coloring-unif.log \
	 && echo "er20_p-sd-alea-coloring-unif.log done"


er20_p-sd-alea-coloring.log:
	[ -f ../../test/alea-coloring/er20_p.cmxs ] || \
(echo "\n ===> do a 'make cmxs' before!\n\n"; exit 1)
	cd ../../test/alea-coloring \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -sd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-sd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -lcd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-lcd-alea-coloring.log \
	 && echo "#use \"/home/jahier/sasa/tools/simca/runSimus.ml\";;\n \
         run_simus true 0.100000 1000 60.0 \"sasa -l 20000 er20_p.dot -dd -nd > /dev/null\";;\n" \
         | ocaml  > /home/jahier/sasa/tools/simca/er20_p-dd-alea-coloring.log \
	 && echo "er20_p-sd-alea-coloring.log done"

../../test/alea-coloring-alt/er20_algo_331.dot:
	echo "gg ER -n 20 -p 0.400000 -o ../../test/alea-coloring-alt/er20_algo_331.dot" > ../../test/alea-coloring-alt/er20_algo_331.dot.sh
	echo "gg-deco \"0-:algo_331.ml\" ../../test/alea-coloring-alt/er20_algo_331.dot -o ../../test/alea-coloring-alt/er20_algo_331.dot" >> ../../test/alea-coloring-alt/er20_algo_331.dot.sh
	sh ../../test/alea-coloring-alt/er20_algo_331.dot.sh


../../test/alea-coloring-alt/er20_algo_331.cmxs: ../../test/alea-coloring-alt/er20_algo_331.dot
	cd ../../test/alea-coloring-alt; make er20_algo_331.cmxs
../../test/alea-coloring-unif/er20_p.dot:
	echo "gg ER -n 20 -p 0.400000 -o ../../test/alea-coloring-unif/er20_p.dot" > ../../test/alea-coloring-unif/er20_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring-unif/er20_p.dot -o ../../test/alea-coloring-unif/er20_p.dot" >> ../../test/alea-coloring-unif/er20_p.dot.sh
	sh ../../test/alea-coloring-unif/er20_p.dot.sh


../../test/alea-coloring-unif/er20_p.cmxs: ../../test/alea-coloring-unif/er20_p.dot
	cd ../../test/alea-coloring-unif; make er20_p.cmxs
../../test/alea-coloring/er20_p.dot:
	echo "gg ER -n 20 -p 0.400000 -o ../../test/alea-coloring/er20_p.dot" > ../../test/alea-coloring/er20_p.dot.sh
	echo "gg-deco \"0-:p.ml\" ../../test/alea-coloring/er20_p.dot -o ../../test/alea-coloring/er20_p.dot" >> ../../test/alea-coloring/er20_p.dot.sh
	sh ../../test/alea-coloring/er20_p.dot.sh


../../test/alea-coloring/er20_p.cmxs: ../../test/alea-coloring/er20_p.dot
	cd ../../test/alea-coloring; make er20_p.cmxs

# ZZZ do not do 'make -j 20 $(CMXS)'! (p.cmxs is regenerated
# at each target, which causes failures)

# But 'make -j 20 $(LOG)' is fine!

CMXS=../../test/alea-coloring/er20_p.cmxs ../../test/alea-coloring-unif/er20_p.cmxs ../../test/alea-coloring-alt/er20_algo_331.cmxs ../../test/alea-coloring/er40_p.cmxs ../../test/alea-coloring-unif/er40_p.cmxs ../../test/alea-coloring-alt/er40_algo_331.cmxs ../../test/alea-coloring/er60_p.cmxs ../../test/alea-coloring-unif/er60_p.cmxs ../../test/alea-coloring-alt/er60_algo_331.cmxs ../../test/alea-coloring/er80_p.cmxs ../../test/alea-coloring-unif/er80_p.cmxs ../../test/alea-coloring-alt/er80_algo_331.cmxs ../../test/alea-coloring/er100_p.cmxs ../../test/alea-coloring-unif/er100_p.cmxs ../../test/alea-coloring-alt/er100_algo_331.cmxs ../../test/alea-coloring/clique10_p.cmxs ../../test/alea-coloring-unif/clique10_p.cmxs ../../test/alea-coloring-alt/clique10_algo_331.cmxs ../../test/alea-coloring/clique20_p.cmxs ../../test/alea-coloring-unif/clique20_p.cmxs ../../test/alea-coloring-alt/clique20_algo_331.cmxs ../../test/alea-coloring/clique30_p.cmxs ../../test/alea-coloring-unif/clique30_p.cmxs ../../test/alea-coloring-alt/clique30_algo_331.cmxs ../../test/alea-coloring/clique40_p.cmxs ../../test/alea-coloring-unif/clique40_p.cmxs ../../test/alea-coloring-alt/clique40_algo_331.cmxs ../../test/alea-coloring/clique50_p.cmxs ../../test/alea-coloring-unif/clique50_p.cmxs ../../test/alea-coloring-alt/clique50_algo_331.cmxs ../../test/alea-coloring/ring100_p.cmxs ../../test/alea-coloring-unif/ring100_p.cmxs ../../test/alea-coloring-alt/ring100_algo_331.cmxs ../../test/alea-coloring/ring200_p.cmxs ../../test/alea-coloring-unif/ring200_p.cmxs ../../test/alea-coloring-alt/ring200_algo_331.cmxs ../../test/alea-coloring/ring300_p.cmxs ../../test/alea-coloring-unif/ring300_p.cmxs ../../test/alea-coloring-alt/ring300_algo_331.cmxs ../../test/alea-coloring/ring400_p.cmxs ../../test/alea-coloring-unif/ring400_p.cmxs ../../test/alea-coloring-alt/ring400_algo_331.cmxs ../../test/alea-coloring/ring500_p.cmxs ../../test/alea-coloring-unif/ring500_p.cmxs ../../test/alea-coloring-alt/ring500_algo_331.cmxs

LOG=er20_p-sd-alea-coloring.log er20_p-sd-alea-coloring-unif.log er20_algo_331-sd-alea-coloring-alt.log er40_p-sd-alea-coloring.log er40_p-sd-alea-coloring-unif.log er40_algo_331-sd-alea-coloring-alt.log er60_p-sd-alea-coloring.log er60_p-sd-alea-coloring-unif.log er60_algo_331-sd-alea-coloring-alt.log er80_p-sd-alea-coloring.log er80_p-sd-alea-coloring-unif.log er80_algo_331-sd-alea-coloring-alt.log er100_p-sd-alea-coloring.log er100_p-sd-alea-coloring-unif.log er100_algo_331-sd-alea-coloring-alt.log clique10_p-sd-alea-coloring.log clique10_p-sd-alea-coloring-unif.log clique10_algo_331-sd-alea-coloring-alt.log clique20_p-sd-alea-coloring.log clique20_p-sd-alea-coloring-unif.log clique20_algo_331-sd-alea-coloring-alt.log clique30_p-sd-alea-coloring.log clique30_p-sd-alea-coloring-unif.log clique30_algo_331-sd-alea-coloring-alt.log clique40_p-sd-alea-coloring.log clique40_p-sd-alea-coloring-unif.log clique40_algo_331-sd-alea-coloring-alt.log clique50_p-sd-alea-coloring.log clique50_p-sd-alea-coloring-unif.log clique50_algo_331-sd-alea-coloring-alt.log ring100_p-sd-alea-coloring.log ring100_p-sd-alea-coloring-unif.log ring100_algo_331-sd-alea-coloring-alt.log ring200_p-sd-alea-coloring.log ring200_p-sd-alea-coloring-unif.log ring200_algo_331-sd-alea-coloring-alt.log ring300_p-sd-alea-coloring.log ring300_p-sd-alea-coloring-unif.log ring300_algo_331-sd-alea-coloring-alt.log ring400_p-sd-alea-coloring.log ring400_p-sd-alea-coloring-unif.log ring400_algo_331-sd-alea-coloring-alt.log ring500_p-sd-alea-coloring.log ring500_p-sd-alea-coloring-unif.log ring500_algo_331-sd-alea-coloring-alt.log

The interesting part is at the very end of this Makefile, where you can find the definition of the LOG and the CMXS variables.

  • The CMXS variable contains all the .cmxs files necessary to launch sasa simulations. Via a dependency, it also generates the necessary .dot files (using gg and gg-deco; cf the post explaining how to Generate Graphs).
  • the LOG variable contains all the .log files to generate: it can therefore launch all the simulations (via the run_simus function described before).
make cmxs
make -j 30 log

The -j option of make specifies the number of jobs to run simultaneously, which can speed-up the experiments a lot (well, by 30) if you own a multi-processor machine.

In average, 2200 simulations per log files were necessary (8000 at worst), so that the CI_95 size gets smaller than 1% of the estimated numbers. It lasted a couple of days using 30 CPUs.

Note the cmxs rule could have been avoided by adding at each .log files a dependence to the corresponding .cmxs file. We have chosen not to do so for the following reason: .cmxs files building can not be done concurrently, as a comment at the end of Makefile.expe-rules suggests.

Extracting data from log files

As soon as make log is run, the .log files generation starts. The following parseLog.ml Ocaml program parses the generated log files to produce .data files:

#use "parseLogUtils.ml";;
(*  [parse_log algo_labels  graphs  daemons] generates  as many  .data
   files as there are graphs  i.e., if graphs=["g1"; "g2"; etc.], then
   this function  generates "g1.data",  "g2.data", etc.  If  the .data
   files  do  not  exist,  there are  created.   Otherwise,  data  are
   appended at the end.  *)
let parse_log
    (algo_labels:(string * string) list) (* (algo label, algo directory) *)
    (graphs: string list) (* graph label (clique, ring, udg) *)
    (daemons:string list) = (* sasa daemon short option name *)
  let f l a g d =
    let log_mask = Printf.sprintf  "%s*%s-*%s.log" g d a in
    Printf.printf "parse_log \"%s\" \"%s\" \"%s\" \"%s\" mask='%s'\n%!" l a g d log_mask;
    data_from_log log_mask d l (g^".data")
  in
  List.iter (fun (l, a) -> List.iter (fun g -> List.iter (fun d ->
      f l a g d) daemons) graphs) algo_labels
;;

This programs can be used even if the log files generation is ongoing.

The remaining of the coloring_campaign.ml file illustrates the use of the parse_log function on the current coloring experiment:

Here is the content of a er.data that it has been generated by a call to gen_pdf() (via make pdf for example):

100 "Synchronous" "Uniform When Triggered" moves 140.0   178.9   226.0
100 "Synchronous" "Uniform When Triggered" steps 4.000   4.936   6.000
100 "Synchronous" "Uniform When Triggered" rounds 4.000   4.936   6.000
10 "Synchronous" "Uniform When Triggered" moves  8.0   15.9   36.0
10 "Synchronous" "Uniform When Triggered" steps  2.000    3.635   10.000
10 "Synchronous" "Uniform When Triggered" rounds  2.000    3.635   10.000
110 "Synchronous" "Uniform When Triggered" moves 159.0   195.0   232.0
110 "Synchronous" "Uniform When Triggered" steps 4   5   6
110 "Synchronous" "Uniform When Triggered" rounds 4   5   6
120 "Synchronous" "Uniform When Triggered" moves 172.0   214.3   252.0
120 "Synchronous" "Uniform When Triggered" steps 4.00   5.07   7.00
120 "Synchronous" "Uniform When Triggered" rounds 4.00   5.07   7.00
130 "Synchronous" "Uniform When Triggered" moves 201.0   235.0   274.0
130 "Synchronous" "Uniform When Triggered" steps 4.000   5.097   7.000
130 "Synchronous" "Uniform When Triggered" rounds 4.000   5.097   7.000
140 "Synchronous" "Uniform When Triggered" moves 206.0   255.6   302.0
140 "Synchronous" "Uniform When Triggered" steps 4.00   5.18   7.00
140 "Synchronous" "Uniform When Triggered" rounds 4.00   5.18   7.00
150 "Synchronous" "Uniform When Triggered" moves 234   274   318
150 "Synchronous" "Uniform When Triggered" steps 4.000   5.187   6.000
150 "Synchronous" "Uniform When Triggered" rounds 4.000   5.187   6.000
160 "Synchronous" "Uniform When Triggered" moves 246.0   293.6   349.0
160 "Synchronous" "Uniform When Triggered" steps 4.000   5.221   7.000
160 "Synchronous" "Uniform When Triggered" rounds 4.000   5.221   7.000
170 "Synchronous" "Uniform When Triggered" moves 266.0   309.6   357.0
170 "Synchronous" "Uniform When Triggered" steps 4.000   5.143   8.000
170 "Synchronous" "Uniform When Triggered" rounds 4.000   5.143   8.000
180 "Synchronous" "Uniform When Triggered" moves 285.0   330.2   395.0
180 "Synchronous" "Uniform When Triggered" steps 4.000   5.257   6.000
180 "Synchronous" "Uniform When Triggered" rounds 4.000   5.257   6.000
190 "Synchronous" "Uniform When Triggered" moves 300.0   353.6   417.0
190 "Synchronous" "Uniform When Triggered" steps 4.00   5.38   7.00
190 "Synchronous" "Uniform When Triggered" rounds 4.00   5.38   7.00
200 "Synchronous" "Uniform When Triggered" moves 330.0   369.0   429.0
200 "Synchronous" "Uniform When Triggered" steps 4.000   5.306   6.000
200 "Synchronous" "Uniform When Triggered" rounds 4.000   5.306   6.000
20 "Synchronous" "Uniform When Triggered" moves 20.0   32.6   52.0
20 "Synchronous" "Uniform When Triggered" steps 2.000   3.999   8.000
20 "Synchronous" "Uniform When Triggered" rounds 2.000   3.999   8.000
210 "Synchronous" "Uniform When Triggered" moves 339.0   387.7   459.0
210 "Synchronous" "Uniform When Triggered" steps 4.000   5.309   7.000
210 "Synchronous" "Uniform When Triggered" rounds 4.000   5.309   7.000
220 "Synchronous" "Uniform When Triggered" moves 358.0   410.3   471.0
220 "Synchronous" "Uniform When Triggered" steps 4.000   5.355   7.000
220 "Synchronous" "Uniform When Triggered" rounds 4.000   5.355   7.000
230 "Synchronous" "Uniform When Triggered" moves 371.0   425.8   494.0
230 "Synchronous" "Uniform When Triggered" steps 4.000   5.304   7.000
230 "Synchronous" "Uniform When Triggered" rounds 4.000   5.304   7.000
240 "Synchronous" "Uniform When Triggered" moves 381.0   446.3   521.0
240 "Synchronous" "Uniform When Triggered" steps 4.000   5.384   7.000
240 "Synchronous" "Uniform When Triggered" rounds 4.000   5.384   7.000
250 "Synchronous" "Uniform When Triggered" moves 410.0   462.3   524.0
250 "Synchronous" "Uniform When Triggered" steps 4.000   5.373   7.000
250 "Synchronous" "Uniform When Triggered" rounds 4.000   5.373   7.000
30 "Synchronous" "Uniform When Triggered" moves 34.00   50.34   78.00
30 "Synchronous" "Uniform When Triggered" steps 3.000   4.293   8.000
30 "Synchronous" "Uniform When Triggered" rounds 3.000   4.293   8.000
40 "Synchronous" "Uniform When Triggered" moves 45.00   67.23   96.00
40 "Synchronous" "Uniform When Triggered" steps 3.000   4.409   7.000
40 "Synchronous" "Uniform When Triggered" rounds 3.000   4.409   7.000
50 "Synchronous" "Uniform When Triggered" moves  64.00    85.36   118.00
50 "Synchronous" "Uniform When Triggered" steps 3.000   4.545   6.000
50 "Synchronous" "Uniform When Triggered" rounds 3.000   4.545   6.000
60 "Synchronous" "Uniform When Triggered" moves  75.0   103.9   144.0
60 "Synchronous" "Uniform When Triggered" steps 3.000   4.644   8.000
60 "Synchronous" "Uniform When Triggered" rounds 3.000   4.644   8.000
70 "Synchronous" "Uniform When Triggered" moves  96.0   121.7   167.0
70 "Synchronous" "Uniform When Triggered" steps 3.000   4.736   7.000
70 "Synchronous" "Uniform When Triggered" rounds 3.000   4.736   7.000
80 "Synchronous" "Uniform When Triggered" moves 115.0   140.8   177.0
80 "Synchronous" "Uniform When Triggered" steps 4.000   4.835   7.000
80 "Synchronous" "Uniform When Triggered" rounds 4.000   4.835   7.000
90 "Synchronous" "Uniform When Triggered" moves 123.0   159.9   193.0
90 "Synchronous" "Uniform When Triggered" steps 4.000   4.926   6.000
90 "Synchronous" "Uniform When Triggered" rounds 4.000   4.926   6.000
100 "Locally Central" "Uniform When Triggered" moves 1781   2152   2631
100 "Locally Central" "Uniform When Triggered" steps 37.00   44.12   54.00
100 "Locally Central" "Uniform When Triggered" rounds 1.000   1.115   2.000
10 "Locally Central" "Uniform When Triggered" moves 13.00   34.03   76.00
10 "Locally Central" "Uniform When Triggered" steps  3.000    6.895   15.000
10 "Locally Central" "Uniform When Triggered" rounds 1.000   1.351   4.000
110 "Locally Central" "Uniform When Triggered" moves 2212   2559   3011
110 "Locally Central" "Uniform When Triggered" steps 41.0   47.9   57.0
110 "Locally Central" "Uniform When Triggered" rounds 1.000   1.116   2.000
120 "Locally Central" "Uniform When Triggered" moves 2623   3053   3629
120 "Locally Central" "Uniform When Triggered" steps 43.00   52.01   62.00
120 "Locally Central" "Uniform When Triggered" rounds 1.000   1.091   2.000
130 "Locally Central" "Uniform When Triggered" moves 3033   3536   4106
130 "Locally Central" "Uniform When Triggered" steps 47.00   55.51   62.00
130 "Locally Central" "Uniform When Triggered" rounds 1.000   1.139   2.000
140 "Locally Central" "Uniform When Triggered" moves 3596   4129   4650
140 "Locally Central" "Uniform When Triggered" steps 54.00   60.24   66.00
140 "Locally Central" "Uniform When Triggered" rounds 1.000   1.137   2.000
150 "Locally Central" "Uniform When Triggered" moves 4062   4680   5146
150 "Locally Central" "Uniform When Triggered" steps 56.0   63.7   71.0
150 "Locally Central" "Uniform When Triggered" rounds 1.000   1.092   2.000
160 "Locally Central" "Uniform When Triggered" moves 4640   5339   6245
160 "Locally Central" "Uniform When Triggered" steps 60.00   67.94   79.00
160 "Locally Central" "Uniform When Triggered" rounds 1.000   1.076   2.000
170 "Locally Central" "Uniform When Triggered" moves 4931   5965   6733
170 "Locally Central" "Uniform When Triggered" steps 62.00   71.61   79.00
170 "Locally Central" "Uniform When Triggered" rounds 1.000   1.086   2.000
180 "Locally Central" "Uniform When Triggered" moves 5941   6741   7633
180 "Locally Central" "Uniform When Triggered" steps 68.00   76.37   84.00
180 "Locally Central" "Uniform When Triggered" rounds 1.000   1.094   2.000
190 "Locally Central" "Uniform When Triggered" moves 6639   7496   8697
190 "Locally Central" "Uniform When Triggered" steps 70.00   80.23   92.00
190 "Locally Central" "Uniform When Triggered" rounds 1.000   1.049   2.000
200 "Locally Central" "Uniform When Triggered" moves 7237   8286   9199
200 "Locally Central" "Uniform When Triggered" steps 73.00   84.51   93.00
200 "Locally Central" "Uniform When Triggered" rounds 1.000   1.086   2.000
20 "Locally Central" "Uniform When Triggered" moves  67.0   107.8   181.0
20 "Locally Central" "Uniform When Triggered" steps  7.00   11.22   18.00
20 "Locally Central" "Uniform When Triggered" rounds 1.000   1.273   3.000
210 "Locally Central" "Uniform When Triggered" moves  7893    9066   10458
210 "Locally Central" "Uniform When Triggered" steps 80.0   87.9   97.0
210 "Locally Central" "Uniform When Triggered" rounds 1.00   1.04   2.00
220 "Locally Central" "Uniform When Triggered" moves  8993    9949   10765
220 "Locally Central" "Uniform When Triggered" steps  87.00    92.26   101.00
220 "Locally Central" "Uniform When Triggered" rounds 1.000   1.158   2.000
230 "Locally Central" "Uniform When Triggered" moves  9402   10858   12477
230 "Locally Central" "Uniform When Triggered" steps  84.00    96.32   107.00
230 "Locally Central" "Uniform When Triggered" rounds 1.000   1.061   2.000
240 "Locally Central" "Uniform When Triggered" moves 10802   11793   14006
240 "Locally Central" "Uniform When Triggered" steps  90   100   111
240 "Locally Central" "Uniform When Triggered" rounds 1.00   1.06   2.00
250 "Locally Central" "Uniform When Triggered" moves 11292   12797   14085
250 "Locally Central" "Uniform When Triggered" steps  93.0   104.3   114.0
250 "Locally Central" "Uniform When Triggered" rounds 1.000   1.068   2.000
30 "Locally Central" "Uniform When Triggered" moves 149.0   221.8   343.0
30 "Locally Central" "Uniform When Triggered" steps 11.00   15.36   23.00
30 "Locally Central" "Uniform When Triggered" rounds 1.000   1.207   3.000
40 "Locally Central" "Uniform When Triggered" moves 243.0   376.1   513.0
40 "Locally Central" "Uniform When Triggered" steps 13.00   19.44   28.00
40 "Locally Central" "Uniform When Triggered" rounds 1.000   1.203   3.000
50 "Locally Central" "Uniform When Triggered" moves 416.0   557.6   766.0
50 "Locally Central" "Uniform When Triggered" steps 17.0   23.4   30.0
50 "Locally Central" "Uniform When Triggered" rounds 1.000   1.169   3.000
60 "Locally Central" "Uniform When Triggered" moves  615.0    802.2   1030.0
60 "Locally Central" "Uniform When Triggered" steps 21.0   27.7   35.0
60 "Locally Central" "Uniform When Triggered" rounds 1.000   1.144   3.000
70 "Locally Central" "Uniform When Triggered" moves  806   1075   1334
70 "Locally Central" "Uniform When Triggered" steps 25.00   31.75   39.00
70 "Locally Central" "Uniform When Triggered" rounds 1.000   1.143   2.000
80 "Locally Central" "Uniform When Triggered" moves 1144   1396   1700
80 "Locally Central" "Uniform When Triggered" steps 30.00   35.96   43.00
80 "Locally Central" "Uniform When Triggered" rounds 1.000   1.164   2.000
90 "Locally Central" "Uniform When Triggered" moves 1373   1760   2078
90 "Locally Central" "Uniform When Triggered" steps 32.00   40.14   46.00
90 "Locally Central" "Uniform When Triggered" rounds 1.000   1.149   2.000
100 "Distributed" "Uniform When Triggered" moves 197.0   239.6   289.0
100 "Distributed" "Uniform When Triggered" steps  5.000    7.298   10.000
100 "Distributed" "Uniform When Triggered" rounds 1.000   1.528   3.000
10 "Distributed" "Uniform When Triggered" moves  7.00   21.75   47.00
10 "Distributed" "Uniform When Triggered" steps  2.000    4.711   12.000
10 "Distributed" "Uniform When Triggered" rounds 1.000   1.805   6.000
110 "Distributed" "Uniform When Triggered" moves 221.0   264.1   315.0
110 "Distributed" "Uniform When Triggered" steps  5.000    7.472   11.000
110 "Distributed" "Uniform When Triggered" rounds 1.00   1.55   3.00
120 "Distributed" "Uniform When Triggered" moves 227   287   346
120 "Distributed" "Uniform When Triggered" steps  6.000    7.445   10.000
120 "Distributed" "Uniform When Triggered" rounds 1.000   1.441   3.000
130 "Distributed" "Uniform When Triggered" moves 255.0   313.3   367.0
130 "Distributed" "Uniform When Triggered" steps  6.00    7.63   11.00
130 "Distributed" "Uniform When Triggered" rounds 1.000   1.493   3.000
140 "Distributed" "Uniform When Triggered" moves 297.0   336.7   393.0
140 "Distributed" "Uniform When Triggered" steps  6.000    7.656   10.000
140 "Distributed" "Uniform When Triggered" rounds 1.000   1.432   3.000
150 "Distributed" "Uniform When Triggered" moves 317.0   359.7   413.0
150 "Distributed" "Uniform When Triggered" steps  6.00    7.79   11.00
150 "Distributed" "Uniform When Triggered" rounds 1.000   1.443   3.000
160 "Distributed" "Uniform When Triggered" moves 337.0   386.3   463.0
160 "Distributed" "Uniform When Triggered" steps  6.000    7.925   11.000
160 "Distributed" "Uniform When Triggered" rounds 1.000   1.396   3.000
170 "Distributed" "Uniform When Triggered" moves 358.0   410.4   474.0
170 "Distributed" "Uniform When Triggered" steps  6.000    7.959   11.000
170 "Distributed" "Uniform When Triggered" rounds 1.0   1.4   3.0
180 "Distributed" "Uniform When Triggered" moves 378.0   434.4   512.0
180 "Distributed" "Uniform When Triggered" steps  6.000    7.977   12.000
180 "Distributed" "Uniform When Triggered" rounds 1.000   1.401   3.000
190 "Distributed" "Uniform When Triggered" moves 407.0   459.5   544.0
190 "Distributed" "Uniform When Triggered" steps  6.000    8.093   11.000
190 "Distributed" "Uniform When Triggered" rounds 1.000   1.404   3.000
200 "Distributed" "Uniform When Triggered" moves 418.0   482.9   560.0
200 "Distributed" "Uniform When Triggered" steps  6.000    8.188   10.000
200 "Distributed" "Uniform When Triggered" rounds 1.000   1.465   4.000
20 "Distributed" "Uniform When Triggered" moves 27.00   46.35   77.00
20 "Distributed" "Uniform When Triggered" steps  3.000    5.573   11.000
20 "Distributed" "Uniform When Triggered" rounds 1.00   1.74   5.00
210 "Distributed" "Uniform When Triggered" moves 422.0   508.1   575.0
210 "Distributed" "Uniform When Triggered" steps  6.000    8.204   12.000
210 "Distributed" "Uniform When Triggered" rounds 1.000   1.369   3.000
220 "Distributed" "Uniform When Triggered" moves 467.0   530.8   615.0
220 "Distributed" "Uniform When Triggered" steps  6.00    8.31   12.00
220 "Distributed" "Uniform When Triggered" rounds 1.000   1.436   3.000
230 "Distributed" "Uniform When Triggered" moves 468.0   558.4   643.0
230 "Distributed" "Uniform When Triggered" steps  6.000    8.306   12.000
230 "Distributed" "Uniform When Triggered" rounds 1.000   1.386   3.000
240 "Distributed" "Uniform When Triggered" moves 521.0   581.9   664.0
240 "Distributed" "Uniform When Triggered" steps  6.000    8.375   11.000
240 "Distributed" "Uniform When Triggered" rounds 1.000   1.378   3.000
250 "Distributed" "Uniform When Triggered" moves 546.0   606.2   688.0
250 "Distributed" "Uniform When Triggered" steps  7.000    8.382   12.000
250 "Distributed" "Uniform When Triggered" rounds 1.000   1.369   3.000
30 "Distributed" "Uniform When Triggered" moves  46.00    70.75   102.00
30 "Distributed" "Uniform When Triggered" steps  4.000    5.996   10.000
30 "Distributed" "Uniform When Triggered" rounds 1.000   1.656   5.000
40 "Distributed" "Uniform When Triggered" moves  62.00    93.89   128.00
40 "Distributed" "Uniform When Triggered" steps  4.0    6.3   10.0
40 "Distributed" "Uniform When Triggered" rounds 1.000   1.656   3.000
50 "Distributed" "Uniform When Triggered" moves  86.0   118.8   161.0
50 "Distributed" "Uniform When Triggered" steps  4.000    6.492   10.000
50 "Distributed" "Uniform When Triggered" rounds 1.000   1.614   3.000
60 "Distributed" "Uniform When Triggered" moves 109.0   141.9   172.0
60 "Distributed" "Uniform When Triggered" steps 4.000   6.757   9.000
60 "Distributed" "Uniform When Triggered" rounds 1.000   1.592   3.000
70 "Distributed" "Uniform When Triggered" moves 127.0   167.4   203.0
70 "Distributed" "Uniform When Triggered" steps  5.000    6.944   10.000
70 "Distributed" "Uniform When Triggered" rounds 1.000   1.553   3.000
80 "Distributed" "Uniform When Triggered" moves 158.0   191.2   231.0
80 "Distributed" "Uniform When Triggered" steps  5.000    7.017   10.000
80 "Distributed" "Uniform When Triggered" rounds 1.00   1.49   3.00
90 "Distributed" "Uniform When Triggered" moves 169.0   215.7   274.0
90 "Distributed" "Uniform When Triggered" steps  5.000    7.203   10.000
90 "Distributed" "Uniform When Triggered" rounds 1.000   1.493   3.000
100 "Synchronous" "Smallest When Triggered" moves 1126   1240   1368
100 "Synchronous" "Smallest When Triggered" steps 18.0   21.9   26.0
100 "Synchronous" "Smallest When Triggered" rounds 18.0   21.9   26.0
10 "Synchronous" "Smallest When Triggered" moves 14.00   32.12   75.00
10 "Synchronous" "Smallest When Triggered" steps  3.000    6.126   16.000
10 "Synchronous" "Smallest When Triggered" rounds  3.000    6.126   16.000
110 "Synchronous" "Smallest When Triggered" moves 1329   1444   1573
110 "Synchronous" "Smallest When Triggered" steps 20.00   23.15   29.00
110 "Synchronous" "Smallest When Triggered" rounds 20.00   23.15   29.00
120 "Synchronous" "Smallest When Triggered" moves 1522   1660   1823
120 "Synchronous" "Smallest When Triggered" steps 21.00   24.32   29.00
120 "Synchronous" "Smallest When Triggered" rounds 21.00   24.32   29.00
130 "Synchronous" "Smallest When Triggered" moves 1732   1881   2095
130 "Synchronous" "Smallest When Triggered" steps 23.00   25.53   29.00
130 "Synchronous" "Smallest When Triggered" rounds 23.00   25.53   29.00
140 "Synchronous" "Smallest When Triggered" moves 2010   2126   2390
140 "Synchronous" "Smallest When Triggered" steps 24.00   26.94   37.00
140 "Synchronous" "Smallest When Triggered" rounds 24.00   26.94   37.00
150 "Synchronous" "Smallest When Triggered" moves 2121   2348   2488
150 "Synchronous" "Smallest When Triggered" steps 24.00   27.97   33.00
150 "Synchronous" "Smallest When Triggered" rounds 24.00   27.97   33.00
160 "Synchronous" "Smallest When Triggered" moves 2418   2620   2755
160 "Synchronous" "Smallest When Triggered" steps 26.00   29.22   38.00
160 "Synchronous" "Smallest When Triggered" rounds 26.00   29.22   38.00
170 "Synchronous" "Smallest When Triggered" moves 2730   2870   3025
170 "Synchronous" "Smallest When Triggered" steps 28.0   30.3   35.0
170 "Synchronous" "Smallest When Triggered" rounds 28.0   30.3   35.0
180 "Synchronous" "Smallest When Triggered" moves 2945   3145   3350
180 "Synchronous" "Smallest When Triggered" steps 28.00   31.14   35.00
180 "Synchronous" "Smallest When Triggered" rounds 28.00   31.14   35.00
190 "Synchronous" "Smallest When Triggered" moves 3258   3442   3621
190 "Synchronous" "Smallest When Triggered" steps 29.00   32.75   39.00
190 "Synchronous" "Smallest When Triggered" rounds 29.00   32.75   39.00
200 "Synchronous" "Smallest When Triggered" moves 3535   3714   3947
200 "Synchronous" "Smallest When Triggered" steps 30.00   33.41   39.00
200 "Synchronous" "Smallest When Triggered" rounds 30.00   33.41   39.00
20 "Synchronous" "Smallest When Triggered" moves  67.00    99.38   141.00
20 "Synchronous" "Smallest When Triggered" steps  6.000    8.965   18.000
20 "Synchronous" "Smallest When Triggered" rounds  6.000    8.965   18.000
210 "Synchronous" "Smallest When Triggered" moves 3818   4030   4208
210 "Synchronous" "Smallest When Triggered" steps 31.00   34.86   42.00
210 "Synchronous" "Smallest When Triggered" rounds 31.00   34.86   42.00
220 "Synchronous" "Smallest When Triggered" moves 4190   4349   4625
220 "Synchronous" "Smallest When Triggered" steps 32.00   35.98   42.00
220 "Synchronous" "Smallest When Triggered" rounds 32.00   35.98   42.00
230 "Synchronous" "Smallest When Triggered" moves 4522   4662   4857
230 "Synchronous" "Smallest When Triggered" steps 34.00   36.62   40.00
230 "Synchronous" "Smallest When Triggered" rounds 34.00   36.62   40.00
240 "Synchronous" "Smallest When Triggered" moves 4699   4995   5228
240 "Synchronous" "Smallest When Triggered" steps 35.00   38.11   45.00
240 "Synchronous" "Smallest When Triggered" rounds 35.00   38.11   45.00
250 "Synchronous" "Smallest When Triggered" moves 5047   5335   5646
250 "Synchronous" "Smallest When Triggered" steps 36.00   39.19   45.00
250 "Synchronous" "Smallest When Triggered" rounds 36.00   39.19   45.00
30 "Synchronous" "Smallest When Triggered" moves 144.0   188.2   247.0
30 "Synchronous" "Smallest When Triggered" steps  8.00   11.15   18.00
30 "Synchronous" "Smallest When Triggered" rounds  8.00   11.15   18.00
40 "Synchronous" "Smallest When Triggered" moves 234.0   296.6   378.0
40 "Synchronous" "Smallest When Triggered" steps  9.00   12.96   18.00
40 "Synchronous" "Smallest When Triggered" rounds  9.00   12.96   18.00
50 "Synchronous" "Smallest When Triggered" moves 337.0   420.3   492.0
50 "Synchronous" "Smallest When Triggered" steps 11.00   14.63   21.00
50 "Synchronous" "Smallest When Triggered" rounds 11.00   14.63   21.00
60 "Synchronous" "Smallest When Triggered" moves 471.0   560.7   697.0
60 "Synchronous" "Smallest When Triggered" steps 13.00   16.29   24.00
60 "Synchronous" "Smallest When Triggered" rounds 13.00   16.29   24.00
70 "Synchronous" "Smallest When Triggered" moves 631.0   711.0   788.0
70 "Synchronous" "Smallest When Triggered" steps 14.00   17.63   24.00
70 "Synchronous" "Smallest When Triggered" rounds 14.00   17.63   24.00
80 "Synchronous" "Smallest When Triggered" moves 782.0   878.8   990.0
80 "Synchronous" "Smallest When Triggered" steps 16.0   19.3   26.0
80 "Synchronous" "Smallest When Triggered" rounds 16.0   19.3   26.0
90 "Synchronous" "Smallest When Triggered" moves  924   1057   1173
90 "Synchronous" "Smallest When Triggered" steps 17.00   20.55   25.00
90 "Synchronous" "Smallest When Triggered" rounds 17.00   20.55   25.00
100 "Locally Central" "Smallest When Triggered" moves 3194   4151   5704
100 "Locally Central" "Smallest When Triggered" steps  65.00    85.92   113.00
100 "Locally Central" "Smallest When Triggered" rounds 1.000   2.788   6.000
10 "Locally Central" "Smallest When Triggered" moves  15.00    55.86   133.00
10 "Locally Central" "Smallest When Triggered" steps  4.00   10.71   30.00
10 "Locally Central" "Smallest When Triggered" rounds 1.000   2.011   7.000
110 "Locally Central" "Smallest When Triggered" moves 3856   5004   6250
110 "Locally Central" "Smallest When Triggered" steps  76.0    94.1   116.0
110 "Locally Central" "Smallest When Triggered" rounds 1.0   2.8   6.0
120 "Locally Central" "Smallest When Triggered" moves 4145   5920   7562
120 "Locally Central" "Smallest When Triggered" steps  77.0   101.9   133.0
120 "Locally Central" "Smallest When Triggered" rounds 1.000   3.014   8.000
130 "Locally Central" "Smallest When Triggered" moves 5247   6995   9460
130 "Locally Central" "Smallest When Triggered" steps  88.0   110.7   140.0
130 "Locally Central" "Smallest When Triggered" rounds 1.000   2.936   6.000
140 "Locally Central" "Smallest When Triggered" moves 6454   8053   9891
140 "Locally Central" "Smallest When Triggered" steps  92.0   118.5   141.0
140 "Locally Central" "Smallest When Triggered" rounds 1.0   2.9   7.0
150 "Locally Central" "Smallest When Triggered" moves  7145    9271   11959
150 "Locally Central" "Smallest When Triggered" steps 101.0   127.0   154.0
150 "Locally Central" "Smallest When Triggered" rounds 1.000   3.003   6.000
160 "Locally Central" "Smallest When Triggered" moves  7923   10441   12764
160 "Locally Central" "Smallest When Triggered" steps 105   134   160
160 "Locally Central" "Smallest When Triggered" rounds 1.000   2.863   6.000
170 "Locally Central" "Smallest When Triggered" moves  9409   11877   14431
170 "Locally Central" "Smallest When Triggered" steps 119.0   143.6   170.0
170 "Locally Central" "Smallest When Triggered" rounds 1.000   2.997   7.000
180 "Locally Central" "Smallest When Triggered" moves 10889   13187   15452
180 "Locally Central" "Smallest When Triggered" steps 126.0   150.4   176.0
180 "Locally Central" "Smallest When Triggered" rounds 1.000   2.897   7.000
190 "Locally Central" "Smallest When Triggered" moves 11935   14657   17886
190 "Locally Central" "Smallest When Triggered" steps 128.0   158.5   184.0
190 "Locally Central" "Smallest When Triggered" rounds 1.00   2.93   7.00
200 "Locally Central" "Smallest When Triggered" moves 12829   16327   20581
200 "Locally Central" "Smallest When Triggered" steps 135.0   166.8   210.0
200 "Locally Central" "Smallest When Triggered" rounds 1.000   2.929   7.000
20 "Locally Central" "Smallest When Triggered" moves  92.0   193.7   354.0
20 "Locally Central" "Smallest When Triggered" steps  9.00   19.66   40.00
20 "Locally Central" "Smallest When Triggered" rounds 1.000   2.238   5.000
210 "Locally Central" "Smallest When Triggered" moves 15395   18174   21918
210 "Locally Central" "Smallest When Triggered" steps 154.0   176.2   211.0
210 "Locally Central" "Smallest When Triggered" rounds 1.000   2.934   6.000
220 "Locally Central" "Smallest When Triggered" moves 16287   19674   23105
220 "Locally Central" "Smallest When Triggered" steps 153.0   182.9   216.0
220 "Locally Central" "Smallest When Triggered" rounds 1.000   3.004   6.000
230 "Locally Central" "Smallest When Triggered" moves 17557   21440   24906
230 "Locally Central" "Smallest When Triggered" steps 167.0   190.5   218.0
230 "Locally Central" "Smallest When Triggered" rounds 1.000   2.994   7.000
240 "Locally Central" "Smallest When Triggered" moves 19794   23416   29140
240 "Locally Central" "Smallest When Triggered" steps 167.0   199.0   236.0
240 "Locally Central" "Smallest When Triggered" rounds 1.000   3.077   6.000
250 "Locally Central" "Smallest When Triggered" moves 21490   25417   31369
250 "Locally Central" "Smallest When Triggered" steps 176.0   207.4   246.0
250 "Locally Central" "Smallest When Triggered" rounds 1.000   2.893   6.000
30 "Locally Central" "Smallest When Triggered" moves 246   409   640
30 "Locally Central" "Smallest When Triggered" steps 16.00   28.23   47.00
30 "Locally Central" "Smallest When Triggered" rounds 1.000   2.442   7.000
40 "Locally Central" "Smallest When Triggered" moves  436.0    708.7   1086.0
40 "Locally Central" "Smallest When Triggered" steps 22.00   36.82   58.00
40 "Locally Central" "Smallest When Triggered" rounds 1.000   2.576   6.000
50 "Locally Central" "Smallest When Triggered" moves  708   1080   1587
50 "Locally Central" "Smallest When Triggered" steps 28.00   44.84   68.00
50 "Locally Central" "Smallest When Triggered" rounds 1.000   2.619   8.000
60 "Locally Central" "Smallest When Triggered" moves 1056   1542   2218
60 "Locally Central" "Smallest When Triggered" steps 37.0   53.1   74.0
60 "Locally Central" "Smallest When Triggered" rounds 1.00   2.64   6.00
70 "Locally Central" "Smallest When Triggered" moves 1484   2068   2910
70 "Locally Central" "Smallest When Triggered" steps 45.00   61.44   87.00
70 "Locally Central" "Smallest When Triggered" rounds 1.000   2.726   6.000
80 "Locally Central" "Smallest When Triggered" moves 1897   2690   3550
80 "Locally Central" "Smallest When Triggered" steps 53.00   69.79   93.00
80 "Locally Central" "Smallest When Triggered" rounds 1.000   2.725   7.000
90 "Locally Central" "Smallest When Triggered" moves 2537   3386   4434
90 "Locally Central" "Smallest When Triggered" steps  61.00    77.67   104.00
90 "Locally Central" "Smallest When Triggered" rounds 1.000   2.783   5.000
100 "Distributed" "Smallest When Triggered" moves 1350   1499   1647
100 "Distributed" "Smallest When Triggered" steps 21.00   25.37   34.00
100 "Distributed" "Smallest When Triggered" rounds 3.000   5.003   8.000
10 "Distributed" "Smallest When Triggered" moves 13.00   39.48   89.00
10 "Distributed" "Smallest When Triggered" steps  3.000    7.597   19.000
10 "Distributed" "Smallest When Triggered" rounds 1.000   2.736   9.000
110 "Distributed" "Smallest When Triggered" moves 1597   1738   1894
110 "Distributed" "Smallest When Triggered" steps 22.00   26.56   34.00
110 "Distributed" "Smallest When Triggered" rounds 3.000   5.032   9.000
120 "Distributed" "Smallest When Triggered" moves 1813   1995   2171
120 "Distributed" "Smallest When Triggered" steps 23.00   28.13   35.00
120 "Distributed" "Smallest When Triggered" rounds 3.000   5.338   9.000
130 "Distributed" "Smallest When Triggered" moves 2060   2257   2459
130 "Distributed" "Smallest When Triggered" steps 25.00   29.51   37.00
130 "Distributed" "Smallest When Triggered" rounds 3.000   5.431   9.000
140 "Distributed" "Smallest When Triggered" moves 2377   2538   2790
140 "Distributed" "Smallest When Triggered" steps 26.00   30.55   37.00
140 "Distributed" "Smallest When Triggered" rounds 3.000   5.525   9.000
150 "Distributed" "Smallest When Triggered" moves 2623   2820   3034
150 "Distributed" "Smallest When Triggered" steps 27.00   32.09   40.00
150 "Distributed" "Smallest When Triggered" rounds  3.000    5.781   10.000
160 "Distributed" "Smallest When Triggered" moves 2861   3127   3377
160 "Distributed" "Smallest When Triggered" steps 28.00   33.28   43.00
160 "Distributed" "Smallest When Triggered" rounds  3.000    5.786   11.000
170 "Distributed" "Smallest When Triggered" moves 3175   3440   3689
170 "Distributed" "Smallest When Triggered" steps 31.00   34.47   44.00
170 "Distributed" "Smallest When Triggered" rounds 4.000   5.898   9.000
180 "Distributed" "Smallest When Triggered" moves 3506   3756   4031
180 "Distributed" "Smallest When Triggered" steps 31.00   35.47   43.00
180 "Distributed" "Smallest When Triggered" rounds 4.000   6.081   9.000
190 "Distributed" "Smallest When Triggered" moves 3859   4082   4327
190 "Distributed" "Smallest When Triggered" steps 32.00   36.58   44.00
190 "Distributed" "Smallest When Triggered" rounds  4.000    6.288   10.000
200 "Distributed" "Smallest When Triggered" moves 4144   4422   4692
200 "Distributed" "Smallest When Triggered" steps 33.00   37.66   46.00
200 "Distributed" "Smallest When Triggered" rounds  4.000    6.295   10.000
20 "Distributed" "Smallest When Triggered" moves  65   112   173
20 "Distributed" "Smallest When Triggered" steps  6.00   10.78   19.00
20 "Distributed" "Smallest When Triggered" rounds 1.000   3.157   7.000
210 "Distributed" "Smallest When Triggered" moves 4437   4771   5052
210 "Distributed" "Smallest When Triggered" steps 35.00   38.91   45.00
210 "Distributed" "Smallest When Triggered" rounds  4.000    6.475   10.000
220 "Distributed" "Smallest When Triggered" moves 4810   5130   5477
220 "Distributed" "Smallest When Triggered" steps 36.00   39.88   47.00
220 "Distributed" "Smallest When Triggered" rounds  4.000    6.451   10.000
230 "Distributed" "Smallest When Triggered" moves 5126   5514   5789
230 "Distributed" "Smallest When Triggered" steps 37.00   40.97   47.00
230 "Distributed" "Smallest When Triggered" rounds  4.0    6.6   10.0
240 "Distributed" "Smallest When Triggered" moves 5561   5890   6260
240 "Distributed" "Smallest When Triggered" steps 37.00   42.31   53.00
240 "Distributed" "Smallest When Triggered" rounds  4.000    6.881   12.000
250 "Distributed" "Smallest When Triggered" moves 5968   6279   6688
250 "Distributed" "Smallest When Triggered" steps 39.00   42.99   49.00
250 "Distributed" "Smallest When Triggered" rounds  5.000    6.819   10.000
30 "Distributed" "Smallest When Triggered" moves 148.0   212.7   284.0
30 "Distributed" "Smallest When Triggered" steps  9.00   13.31   22.00
30 "Distributed" "Smallest When Triggered" rounds  1.000    3.564   10.000
40 "Distributed" "Smallest When Triggered" moves 262.0   343.2   439.0
40 "Distributed" "Smallest When Triggered" steps 12.00   15.52   24.00
40 "Distributed" "Smallest When Triggered" rounds 1.000   3.805   7.000
50 "Distributed" "Smallest When Triggered" moves 388.0   493.8   586.0
50 "Distributed" "Smallest When Triggered" steps 12.0   17.6   25.0
50 "Distributed" "Smallest When Triggered" rounds 2.000   4.115   7.000
60 "Distributed" "Smallest When Triggered" moves 560.0   666.9   796.0
60 "Distributed" "Smallest When Triggered" steps 15.00   19.33   29.00
60 "Distributed" "Smallest When Triggered" rounds 2.000   4.316   9.000
70 "Distributed" "Smallest When Triggered" moves 740.0   849.8   977.0
70 "Distributed" "Smallest When Triggered" steps 17.00   20.94   28.00
70 "Distributed" "Smallest When Triggered" rounds 2.000   4.452   8.000
80 "Distributed" "Smallest When Triggered" moves  922   1053   1180
80 "Distributed" "Smallest When Triggered" steps 17.00   22.59   31.00
80 "Distributed" "Smallest When Triggered" rounds 3.000   4.683   8.000
90 "Distributed" "Smallest When Triggered" moves 1121   1263   1403
90 "Distributed" "Smallest When Triggered" steps 20.00   23.98   32.00
90 "Distributed" "Smallest When Triggered" rounds 3.000   4.822   9.000
100 "Synchronous" "Always the Biggest" moves 1294   1449   1706
100 "Synchronous" "Always the Biggest" steps 22.00   29.49   41.00
100 "Synchronous" "Always the Biggest" rounds 22.00   29.49   41.00
10 "Synchronous" "Always the Biggest" moves  18.00    45.32   111.00
10 "Synchronous" "Always the Biggest" steps  4.000    9.332   26.000
10 "Synchronous" "Always the Biggest" rounds  4.000    9.332   26.000
110 "Synchronous" "Always the Biggest" moves 1443   1669   2047
110 "Synchronous" "Always the Biggest" steps 24.00   31.22   45.00
110 "Synchronous" "Always the Biggest" rounds 24.00   31.22   45.00
120 "Synchronous" "Always the Biggest" moves 1703   1893   2485
120 "Synchronous" "Always the Biggest" steps 24.00   31.88   46.00
120 "Synchronous" "Always the Biggest" rounds 24.00   31.88   46.00
130 "Synchronous" "Always the Biggest" moves 1859   2129   2441
130 "Synchronous" "Always the Biggest" steps 26.00   33.16   50.00
130 "Synchronous" "Always the Biggest" rounds 26.00   33.16   50.00
140 "Synchronous" "Always the Biggest" moves 2128   2382   2704
140 "Synchronous" "Always the Biggest" steps 26.00   34.43   53.00
140 "Synchronous" "Always the Biggest" rounds 26.00   34.43   53.00
150 "Synchronous" "Always the Biggest" moves 2384   2637   3029
150 "Synchronous" "Always the Biggest" steps 28.00   35.63   47.00
150 "Synchronous" "Always the Biggest" rounds 28.00   35.63   47.00
160 "Synchronous" "Always the Biggest" moves 2657   2901   3257
160 "Synchronous" "Always the Biggest" steps 29.0   36.7   53.0
160 "Synchronous" "Always the Biggest" rounds 29.0   36.7   53.0
170 "Synchronous" "Always the Biggest" moves 2938   3194   3588
170 "Synchronous" "Always the Biggest" steps 30.0   38.3   50.0
170 "Synchronous" "Always the Biggest" rounds 30.0   38.3   50.0
180 "Synchronous" "Always the Biggest" moves 3189   3470   4039
180 "Synchronous" "Always the Biggest" steps 32.00   39.17   50.00
180 "Synchronous" "Always the Biggest" rounds 32.00   39.17   50.00
190 "Synchronous" "Always the Biggest" moves 3505   3764   4043
190 "Synchronous" "Always the Biggest" steps 34.00   40.21   53.00
190 "Synchronous" "Always the Biggest" rounds 34.00   40.21   53.00
200 "Synchronous" "Always the Biggest" moves 3770   4069   4426
200 "Synchronous" "Always the Biggest" steps 34.00   40.79   49.00
200 "Synchronous" "Always the Biggest" rounds 34.00   40.79   49.00
20 "Synchronous" "Always the Biggest" moves  77.0   134.6   243.0
20 "Synchronous" "Always the Biggest" steps  7.00   14.04   33.00
20 "Synchronous" "Always the Biggest" rounds  7.00   14.04   33.00
210 "Synchronous" "Always the Biggest" moves 4070   4405   4903
210 "Synchronous" "Always the Biggest" steps 35.00   42.25   55.00
210 "Synchronous" "Always the Biggest" rounds 35.00   42.25   55.00
220 "Synchronous" "Always the Biggest" moves 4360   4705   5164
220 "Synchronous" "Always the Biggest" steps 36.00   43.58   60.00
220 "Synchronous" "Always the Biggest" rounds 36.00   43.58   60.00
230 "Synchronous" "Always the Biggest" moves 4692   5053   5367
230 "Synchronous" "Always the Biggest" steps 36.00   44.39   61.00
230 "Synchronous" "Always the Biggest" rounds 36.00   44.39   61.00
240 "Synchronous" "Always the Biggest" moves 5046   5390   5809
240 "Synchronous" "Always the Biggest" steps 38.00   45.23   60.00
240 "Synchronous" "Always the Biggest" rounds 38.00   45.23   60.00
250 "Synchronous" "Always the Biggest" moves 5421   5747   6366
250 "Synchronous" "Always the Biggest" steps 39.00   46.14   57.00
250 "Synchronous" "Always the Biggest" rounds 39.00   46.14   57.00
30 "Synchronous" "Always the Biggest" moves 168.0   246.7   381.0
30 "Synchronous" "Always the Biggest" steps 10.00   17.08   38.00
30 "Synchronous" "Always the Biggest" rounds 10.00   17.08   38.00
40 "Synchronous" "Always the Biggest" moves 274.0   377.7   511.0
40 "Synchronous" "Always the Biggest" steps 12.00   19.56   38.00
40 "Synchronous" "Always the Biggest" rounds 12.00   19.56   38.00
50 "Synchronous" "Always the Biggest" moves 407.0   521.5   752.0
50 "Synchronous" "Always the Biggest" steps 14.00   21.45   35.00
50 "Synchronous" "Always the Biggest" rounds 14.00   21.45   35.00
60 "Synchronous" "Always the Biggest" moves 544.0   684.9   904.0
60 "Synchronous" "Always the Biggest" steps 16.00   23.59   37.00
60 "Synchronous" "Always the Biggest" rounds 16.00   23.59   37.00
70 "Synchronous" "Always the Biggest" moves  718.0    859.9   1089.0
70 "Synchronous" "Always the Biggest" steps 18.00   25.19   38.00
70 "Synchronous" "Always the Biggest" rounds 18.00   25.19   38.00
80 "Synchronous" "Always the Biggest" moves  875   1038   1252
80 "Synchronous" "Always the Biggest" steps 19.00   26.54   39.00
80 "Synchronous" "Always the Biggest" rounds 19.00   26.54   39.00
90 "Synchronous" "Always the Biggest" moves 1049   1242   1625
90 "Synchronous" "Always the Biggest" steps 21.00   28.48   43.00
90 "Synchronous" "Always the Biggest" rounds 21.00   28.48   43.00
100 "Locally Central" "Always the Biggest" moves 2943   4174   5951
100 "Locally Central" "Always the Biggest" steps  68.00    88.78   116.00
100 "Locally Central" "Always the Biggest" rounds  2.000    4.977   15.000
10 "Locally Central" "Always the Biggest" moves  22.00    63.06   146.00
10 "Locally Central" "Always the Biggest" steps  6.00   13.64   31.00
10 "Locally Central" "Always the Biggest" rounds  2.000    4.258   16.000
110 "Locally Central" "Always the Biggest" moves 3743   5036   6651
110 "Locally Central" "Always the Biggest" steps  71.00    97.14   131.00
110 "Locally Central" "Always the Biggest" rounds  2.000    5.027   16.000
120 "Locally Central" "Always the Biggest" moves 4284   5968   7824
120 "Locally Central" "Always the Biggest" steps  79.0   105.5   135.0
120 "Locally Central" "Always the Biggest" rounds  2.000    5.123   14.000
130 "Locally Central" "Always the Biggest" moves 5423   6993   9353
130 "Locally Central" "Always the Biggest" steps  89.0   113.3   147.0
130 "Locally Central" "Always the Biggest" rounds  2.000    5.085   14.000
140 "Locally Central" "Always the Biggest" moves  6221    8061   11325
140 "Locally Central" "Always the Biggest" steps  95.0   121.2   156.0
140 "Locally Central" "Always the Biggest" rounds  2.000    5.109   12.000
150 "Locally Central" "Always the Biggest" moves  7224    9220   11481
150 "Locally Central" "Always the Biggest" steps  98   129   170
150 "Locally Central" "Always the Biggest" rounds  2.000    5.151   17.000
160 "Locally Central" "Always the Biggest" moves  7877   10467   13097
160 "Locally Central" "Always the Biggest" steps 105.0   137.4   167.0
160 "Locally Central" "Always the Biggest" rounds  2.000    5.215   15.000
170 "Locally Central" "Always the Biggest" moves  9522   11812   14793
170 "Locally Central" "Always the Biggest" steps 117.0   145.4   185.0
170 "Locally Central" "Always the Biggest" rounds  2.000    5.161   15.000
180 "Locally Central" "Always the Biggest" moves 10364   13266   16915
180 "Locally Central" "Always the Biggest" steps 118.0   153.9   187.0
180 "Locally Central" "Always the Biggest" rounds  2.00    5.17   15.00
190 "Locally Central" "Always the Biggest" moves 11717   14752   18624
190 "Locally Central" "Always the Biggest" steps 130.0   161.9   203.0
190 "Locally Central" "Always the Biggest" rounds  2.000    5.166   16.000
200 "Locally Central" "Always the Biggest" moves 13213   16370   20378
200 "Locally Central" "Always the Biggest" steps 133.0   170.3   206.0
200 "Locally Central" "Always the Biggest" rounds  2.000    5.199   15.000
20 "Locally Central" "Always the Biggest" moves 100   201   371
20 "Locally Central" "Always the Biggest" steps 12.00   22.59   46.00
20 "Locally Central" "Always the Biggest" rounds  2.000    4.513   13.000
210 "Locally Central" "Always the Biggest" moves 14557   17951   22456
210 "Locally Central" "Always the Biggest" steps 143.0   177.7   213.0
210 "Locally Central" "Always the Biggest" rounds  2.000    5.226   15.000
220 "Locally Central" "Always the Biggest" moves 16407   19739   24414
220 "Locally Central" "Always the Biggest" steps 152.0   186.3   220.0
220 "Locally Central" "Always the Biggest" rounds  2.000    5.247   14.000
230 "Locally Central" "Always the Biggest" moves 17382   21550   26689
230 "Locally Central" "Always the Biggest" steps 161.0   194.1   241.0
230 "Locally Central" "Always the Biggest" rounds  3.000    5.194   17.000
240 "Locally Central" "Always the Biggest" moves 18635   23378   28762
240 "Locally Central" "Always the Biggest" steps 163.0   201.7   238.0
240 "Locally Central" "Always the Biggest" rounds  2.000    5.277   15.000
250 "Locally Central" "Always the Biggest" moves 20304   25350   29787
250 "Locally Central" "Always the Biggest" steps 164.0   209.8   248.0
250 "Locally Central" "Always the Biggest" rounds  2.000    5.259   13.000
30 "Locally Central" "Always the Biggest" moves 234.0   418.6   674.0
30 "Locally Central" "Always the Biggest" steps 18.00   31.17   49.00
30 "Locally Central" "Always the Biggest" rounds  2.000    4.692   14.000
40 "Locally Central" "Always the Biggest" moves  451.0    716.5   1250.0
40 "Locally Central" "Always the Biggest" steps 24.00   39.71   63.00
40 "Locally Central" "Always the Biggest" rounds  2.000    4.728   12.000
50 "Locally Central" "Always the Biggest" moves  683   1088   1589
50 "Locally Central" "Always the Biggest" steps 32.0   47.8   69.0
50 "Locally Central" "Always the Biggest" rounds  2.000    4.846   14.000
60 "Locally Central" "Always the Biggest" moves  951   1553   2254
60 "Locally Central" "Always the Biggest" steps 37.0   56.2   78.0
60 "Locally Central" "Always the Biggest" rounds  2.000    4.792   13.000
70 "Locally Central" "Always the Biggest" moves 1416   2087   3004
70 "Locally Central" "Always the Biggest" steps 47.0   64.5   88.0
70 "Locally Central" "Always the Biggest" rounds  2    5   14
80 "Locally Central" "Always the Biggest" moves 1859   2688   3879
80 "Locally Central" "Always the Biggest" steps 51.00   72.35   98.00
80 "Locally Central" "Always the Biggest" rounds  2.000    4.997   18.000
90 "Locally Central" "Always the Biggest" moves 2408   3390   4613
90 "Locally Central" "Always the Biggest" steps  58.00    80.74   111.00
90 "Locally Central" "Always the Biggest" rounds  2.000    5.099   18.000
100 "Distributed" "Always the Biggest" moves 1399   1717   2089
100 "Distributed" "Always the Biggest" steps 25.00   38.34   61.00
100 "Distributed" "Always the Biggest" rounds  3.00   10.16   24.00
10 "Distributed" "Always the Biggest" moves  21.00    50.12   119.00
10 "Distributed" "Always the Biggest" steps  4   11   28
10 "Distributed" "Always the Biggest" rounds  2.000    4.922   16.000
110 "Distributed" "Always the Biggest" moves 1731   1979   2287
110 "Distributed" "Always the Biggest" steps 27.00   39.93   63.00
110 "Distributed" "Always the Biggest" rounds  4.00   10.39   27.00
120 "Distributed" "Always the Biggest" moves 1993   2254   2649
120 "Distributed" "Always the Biggest" steps 29.00   41.35   64.00
120 "Distributed" "Always the Biggest" rounds  5.0   10.5   25.0
130 "Distributed" "Always the Biggest" moves 2218   2538   3059
130 "Distributed" "Always the Biggest" steps 30.0   42.9   74.0
130 "Distributed" "Always the Biggest" rounds  5.00   10.73   28.00
140 "Distributed" "Always the Biggest" moves 2486   2837   3252
140 "Distributed" "Always the Biggest" steps 31.00   44.21   70.00
140 "Distributed" "Always the Biggest" rounds  4.00   10.75   29.00
150 "Distributed" "Always the Biggest" moves 2762   3140   3577
150 "Distributed" "Always the Biggest" steps 34.00   45.45   70.00
150 "Distributed" "Always the Biggest" rounds  5   11   29
160 "Distributed" "Always the Biggest" moves 3099   3463   3879
160 "Distributed" "Always the Biggest" steps 36.00   47.06   77.00
160 "Distributed" "Always the Biggest" rounds  5.00   11.21   29.00
170 "Distributed" "Always the Biggest" moves 3404   3786   4208
170 "Distributed" "Always the Biggest" steps 37.00   48.26   72.00
170 "Distributed" "Always the Biggest" rounds  6.00   11.36   27.00
180 "Distributed" "Always the Biggest" moves 3762   4123   4728
180 "Distributed" "Always the Biggest" steps 38.00   49.27   71.00
180 "Distributed" "Always the Biggest" rounds  5.0   11.4   25.0
190 "Distributed" "Always the Biggest" moves 4021   4468   4897
190 "Distributed" "Always the Biggest" steps 38.00   50.63   73.00
190 "Distributed" "Always the Biggest" rounds  5.00   11.55   31.00
200 "Distributed" "Always the Biggest" moves 4444   4825   5260
200 "Distributed" "Always the Biggest" steps 40.00   51.67   76.00
200 "Distributed" "Always the Biggest" rounds  6.00   11.72   27.00
20 "Distributed" "Always the Biggest" moves  75.0   139.1   243.0
20 "Distributed" "Always the Biggest" steps  8.0   16.4   38.0
20 "Distributed" "Always the Biggest" rounds  2.000    6.298   20.000
210 "Distributed" "Always the Biggest" moves 4785   5191   5666
210 "Distributed" "Always the Biggest" steps 40.00   52.92   79.00
210 "Distributed" "Always the Biggest" rounds  6.00   11.82   28.00
220 "Distributed" "Always the Biggest" moves 5115   5571   6005
220 "Distributed" "Always the Biggest" steps 42.00   53.97   79.00
220 "Distributed" "Always the Biggest" rounds  5.00   11.91   30.00
230 "Distributed" "Always the Biggest" moves 5514   5946   6417
230 "Distributed" "Always the Biggest" steps 42.0   55.1   76.0
230 "Distributed" "Always the Biggest" rounds  7.00   12.08   29.00
240 "Distributed" "Always the Biggest" moves 5873   6351   6958
240 "Distributed" "Always the Biggest" steps 43.00   56.24   76.00
240 "Distributed" "Always the Biggest" rounds  6.0   12.1   28.0
250 "Distributed" "Always the Biggest" moves 6265   6745   7207
250 "Distributed" "Always the Biggest" steps 46.00   57.33   82.00
250 "Distributed" "Always the Biggest" rounds  6.00   12.29   33.00
30 "Distributed" "Always the Biggest" moves 151.0   263.2   443.0
30 "Distributed" "Always the Biggest" steps 10.00   20.96   43.00
30 "Distributed" "Always the Biggest" rounds  2.000    7.404   27.000
40 "Distributed" "Always the Biggest" moves 272.0   418.9   607.0
40 "Distributed" "Always the Biggest" steps 14.00   24.69   59.00
40 "Distributed" "Always the Biggest" rounds  3.000    8.111   36.000
50 "Distributed" "Always the Biggest" moves 405.0   595.8   818.0
50 "Distributed" "Always the Biggest" steps 15.0   27.7   50.0
50 "Distributed" "Always the Biggest" rounds  3.000    8.667   29.000
60 "Distributed" "Always the Biggest" moves  618.0    793.1   1076.0
60 "Distributed" "Always the Biggest" steps 19.00   30.46   55.00
60 "Distributed" "Always the Biggest" rounds  3.000    9.159   26.000
70 "Distributed" "Always the Biggest" moves  803   1003   1324
70 "Distributed" "Always the Biggest" steps 21.00   32.62   56.00
70 "Distributed" "Always the Biggest" rounds  4.000    9.415   27.000
80 "Distributed" "Always the Biggest" moves  984   1229   1502
80 "Distributed" "Always the Biggest" steps 22.00   34.71   57.00
80 "Distributed" "Always the Biggest" rounds  4.000    9.672   26.000
90 "Distributed" "Always the Biggest" moves 1221   1468   1768
90 "Distributed" "Always the Biggest" steps 26.00   36.61   60.00
90 "Distributed" "Always the Biggest" rounds  4.000    9.958   26.000

Similarly, the gen_pdf function has generated a ring.data file, and a er.data.

Viewing .data files with an R Script

You may have noticed that the gen_pdf function also calls the following R script, that reads .data files to produce .pdf ones.

tools/simca/gen_pdf.r

#! /usr/bin/env Rscript
args <- commandArgs(TRUE)
if (length(args) == 0) {
    stop("At least one argument is necessary
usage:
  gen_pdf.r file.data [a_label [ordinate_label]]
where the optional arguments
  a_label is used to build output file names (use current dir by default)
  ordinate_label is used to label the ordinate axis (use 'Nodes' by default)

example:
  gen_pdf.r clique.data
  gen_pdf.r clique.data coloring
  gen_pdf.r clique.data coloring Diameter
", call.=FALSE)
}

datafilename <- args[1]
campaign <- ifelse(is.na(args[2]), basename(getwd()), args[2])
abscissa  <- ifelse(is.na(args[3]),"Nodes",args[3])
graphname <- tools::file_path_sans_ext(args[1])

# Read the data file
data <- data.frame(val=read.table(datafilename))

# Give to columns a name
names(data) <- c("n", "Daemons", "Algorithms", "complexity_kind", "min", "mean", "max")

# Ordering the grid manually
data$complexity_kind_f = factor(data$complexity_kind, levels=c('rounds','steps','moves'))

# Generate a pdf visualisation of the Data with ggplot2
library(ggplot2)
library(dplyr)

gen_pdf <- function(pdffilename, x1, x2){
    pdf(pdffilename,onefile=TRUE)
    mplot <- ggplot(data, aes_string(x="n",y="mean",colour=x1))+ geom_line() +
        facet_grid(c(paste("complexity_kind_f"), paste(x2)) , scales='free') +
        ylab("Round/Step/Move Numbers")+xlab(paste(abscissa,"Number"))+
        ggtitle(paste("Compare", x1, "on various", x2, "Numbers on",
                      stringr::str_to_title(graphname), sep = " "))+
         theme(legend.position="bottom")
    mplot2 <- mplot+geom_ribbon(aes_string(x="n", ymax="max", ymin="min"), alpha=0.2) +
        ggtitle(paste("Compare", x1, "on various", x2, "Numbers on",
                      stringr::str_to_title(graphname), "(+ min/max ribbon)", sep = " "))+
         theme(legend.position="bottom")
    print(mplot)
    print(mplot2)

    for (cm in c("moves","steps","rounds")){
        datax <- filter(data, complexity_kind == cm)

        plot <- ggplot(datax,aes_string(x="n",y="mean",colour=x1))+ geom_line() +
            facet_grid(c(paste(x2)), scales='free') +
            ylab(paste(cm, "Number", sep=" ")) + xlab(paste(abscissa,"Number"))+
            ggtitle(paste(stringr::str_to_title(cm), "Numbers on",
                          stringr::str_to_title(graphname), sep = " "))+
         theme(legend.position="bottom")
        plot1 <- plot + geom_point()
        plot2 <- plot+geom_ribbon(aes_string(x="n", ymax="max", ymin="min"), alpha=0.2)+
            ggtitle(paste(stringr::str_to_title(cm), "Numbers on",
                          stringr::str_to_title(graphname),
                          "(+ min/max ribbon)", sep = " "))+
         theme(legend.position="bottom")
        print(plot1)
        print(plot2)

        plot <- ggplot(datax,aes_string(x="n",y="mean",colour=x1,shape=x2))+ geom_line() +
            ylab(paste(cm, "Number", sep=" ")) + xlab(paste(abscissa,"Number"))+
            ggtitle(paste(stringr::str_to_title(cm), "Numbers on",
                          stringr::str_to_title(graphname), sep = " "))+
         theme(legend.position="bottom")
        plot1 <- plot + geom_point()
        plot2 <- plot+geom_ribbon(aes_string(x="n", ymax="max", ymin="min"), alpha=0.2)+
            ggtitle(paste(stringr::str_to_title(cm), "Numbers on",
                          stringr::str_to_title(graphname),
                          "(+ min/max ribbon)", sep = " "))+
         theme(legend.position="bottom")
        print(plot1)
        print(plot2)
    }
    pngfilename = paste(pdffilename,".png", sep ="")
    png(pngfilename)
    print(mplot2)

}

pdffilename1 = paste(campaign, datafilename,"algos.pdf", sep ="-")
pdffilename2 = paste(campaign, datafilename,"demons.pdf", sep ="-")
gen_pdf(pdffilename1, "Algorithms", "Daemons")
gen_pdf(pdffilename2, "Daemons", "Algorithms")

Hence,

./gen_pdf.r coloring ring.data
./gen_pdf.r coloring clique.data
./gen_pdf.r coloring er.data

generates the 2 multi-pages pdf files per graph kinds (click on them):

Cliques 10..500 - Focus on Algorithms Cliques 10..500 - Focus on Daemons
Rings 100..10000 - Focus on Algorithms Rings 100..10000 - Focus on Daemons
Erdos-Renyi 10..250 - Focus on Algorithms Erdos-Renyi 10..250 - Focus on Daemons

Both pdf presents a different view of the same data. The first one focuses on Algorithms performance comparison, while the second focuses on the role of daemons.

Of course, if you run this experiment by commenting out the 2 line of the tools/simca/Makefile, you would use nonreg_test_campaign.ml instead of coloring_campaign.ml, which would lead to the same kind of graphics, but quicker, with less points and more Gaussian noise.

We describe a way to perform statistical analysis of the generated data here.


  1. “Probabilistic Self-stabilizing Vertex Coloring in Unidirectional Anonymous Networks” by Samuel Bernard, Stéphane Devismes, Katy Paroux, Maria Potop-Butucaru, and Sébastien Tixeuil [return]
  2. It is a randomized version Algorithm 3.1 (page 43) of ``Introduction to Distributed Self-Stabilizing Algorithms” By Karine Altisen, Stéphane Devismes, Swan Dubois, and Frank Petit . [return]
  3. Algorithm 3.3.1 (page 16) of “Self-stabilizing Vertex Coloring of Arbitrary Graphs” by Maria Gradinariu and Sebastien Tixeuil [return]