1
1
[@@@ ocaml " -33" ]
2
2
open Core
3
3
(* open Generalized_gpw *)
4
- open Majority_gpw
5
4
(* open Gpw *)
6
5
open Utils
7
6
open Gnuplot
8
7
9
8
module Spec : Majority_alg .SPEC = struct
10
9
11
- let constant_Maj_B = 30
10
+ let constant_Maj_B = 10
12
11
13
- let constant_2D_A = 5
12
+ let constant_2D_A = 10
14
13
15
14
end
16
15
17
- module MajoritySampler = Majority_alg. MajoritySamplingAlgorithm (Spec ) (MajorityGPW )
16
+ module MajoritySampler = Majority_alg. MajoritySamplingAlgorithm (Spec ) (Majority_gpw. MajorityGPW )
18
17
19
18
20
19
let plot_output x =
@@ -32,9 +31,9 @@ let print_output ~f ~filename data =
32
31
33
32
34
33
35
- let () =
34
+ let generate_input_tests () =
36
35
i_to_j 4 100 |> List. map ~f: (fun size ->
37
- let instance = MajorityGPW. generate_true_instance size in
36
+ let instance = Majority_gpw. MajorityGPW. generate_true_instance size in
38
37
let count = 10 in
39
38
Float. of_int size, i_to_j 0 count |> List. map ~f: (fun _ ->
40
39
let (result, _) = MajoritySampler. evaluate instance in
@@ -48,7 +47,7 @@ let () =
48
47
~filename: " data/plt1_1inst_is.dat" ;
49
48
50
49
i_to_j 4 100 |> List. map ~f: (fun size ->
51
- let instance = MajorityGPW. generate_false_instance size in
50
+ let instance = Majority_gpw. MajorityGPW. generate_false_instance size in
52
51
let count = 10 in
53
52
Float. of_int size, i_to_j 0 count |> List. map ~f: (fun _ ->
54
53
let (result, _) = MajoritySampler. evaluate instance in
@@ -61,11 +60,121 @@ let () =
61
60
~f: (fun (a ,b ) -> Printf. sprintf " %2f %2f" a b)
62
61
~filename: " data/plt1_0inst_is.dat"
63
62
63
+ let generate_experiment_1 () =
64
+ let size = 20 in
65
+ let samples = 100 in
66
+ i_to_j 0 10
67
+ |> List. map ~f: (fun valid_count ->
68
+ let instance =
69
+ Majority_gpw.MajorityGPW. generate_false_instance
70
+ ~options: (Majority_gpw.MajorityGPW. FixedValidCount valid_count) size in
71
+ i_to_j 0 samples
72
+ |> List. map ~f: begin fun _ ->
73
+ fst (MajoritySampler. evaluate instance)
74
+ end
75
+ |> List. map ~f: (fun v -> if v then 1 else 0 )
76
+ |> List. fold ~init: 0 ~f: (+ )
77
+ |> fun v -> valid_count, Float. (of_int v / of_int samples)
78
+ )
79
+ |> print_output
80
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
81
+ ~filename: " ../data/experiment1.dat"
82
+
83
+ let generate_experiment_2 () =
84
+ let samples = 100 in
85
+ i_to_j 4 21
86
+ |> List. map ~f: (fun input_size ->
87
+ let instance =
88
+ Majority_gpw.MajorityGPW. generate_true_instance input_size in
89
+ i_to_j 0 samples
90
+ |> List. map ~f: begin fun _ ->
91
+ snd (MajoritySampler. evaluate instance)
92
+ end
93
+ |> List. fold ~init: 0 ~f: (+ )
94
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
95
+ )
96
+ |> print_output
97
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
98
+ ~filename: " ../data/experiment2a.dat" ;
99
+ i_to_j 4 21
100
+ |> List. map ~f: (fun input_size ->
101
+ let instance =
102
+ Majority_gpw.MajorityGPW. generate_false_instance input_size in
103
+ i_to_j 0 samples
104
+ |> List. map ~f: begin fun _ ->
105
+ snd (MajoritySampler. evaluate instance)
106
+ end
107
+ |> List. fold ~init: 0 ~f: (+ )
108
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
109
+ )
110
+ |> print_output
111
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
112
+ ~filename: " ../data/experiment2b.dat"
113
+
114
+
115
+ let generate_experiment_3 () =
116
+ let samples = 100 in
117
+ i_to_j 4 31
118
+ |> List. map ~f: (fun input_size ->
119
+ i_to_j 0 samples
120
+ |> List. concat_map ~f: begin fun _ ->
121
+ let instance = Majority_gpw.MajorityGPW. generate_true_instance input_size in
122
+ i_to_j 0 10
123
+ |> List. map ~f: (fun _ -> snd (MajoritySampler. evaluate instance))
124
+ end
125
+ |> List. fold ~init: 0 ~f: (+ )
126
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
127
+ )
128
+ |> print_output
129
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
130
+ ~filename: " ../data/experiment3a.dat" ;
131
+ i_to_j 4 31
132
+ |> List. map ~f: (fun input_size ->
133
+ i_to_j 0 samples
134
+ |> List. concat_map ~f: begin fun _ ->
135
+ let instance = Majority_gpw.MajorityGPW. generate_true_instance
136
+ ~options: (Majority_gpw.MajorityGPW. RandomPointers ) input_size in
137
+ i_to_j 0 10
138
+ |> List. map ~f: (fun _ -> snd (MajoritySampler. evaluate instance))
139
+ end
140
+ |> List. fold ~init: 0 ~f: (+ )
141
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
142
+ )
143
+ |> print_output
144
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
145
+ ~filename: " ../data/experiment3b.dat" ;
146
+ i_to_j 4 31
147
+ |> List. map ~f: (fun input_size ->
148
+ i_to_j 0 samples
149
+ |> List. concat_map ~f: begin fun _ ->
150
+ let instance = Majority_gpw.MajorityGPW. generate_false_instance
151
+ ~options: (Majority_gpw.MajorityGPW. RandomPointers ) input_size in
152
+ i_to_j 0 10
153
+ |> List. map ~f: (fun _ -> snd (MajoritySampler. evaluate instance))
154
+ end
155
+ |> List. fold ~init: 0 ~f: (+ )
156
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
157
+ )
158
+ |> print_output
159
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
160
+ ~filename: " ../data/experiment3c.dat" ;
161
+ i_to_j 4 31
162
+ |> List. map ~f: (fun input_size ->
163
+ i_to_j 0 samples
164
+ |> List. concat_map ~f: begin fun _ ->
165
+ let instance = Majority_gpw.MajorityGPW. generate_false_instance
166
+ ~options: (Majority_gpw.MajorityGPW. RandomPointers ) input_size in
167
+ i_to_j 0 10
168
+ |> List. map ~f: (fun _ -> snd (MajoritySampler. evaluate instance))
169
+ end
170
+ |> List. fold ~init: 0 ~f: (+ )
171
+ |> fun v -> input_size, Float. (of_int v / of_int samples)
172
+ )
173
+ |> print_output
174
+ ~f: (fun (valid_count ,v ) -> Printf. sprintf " %d %f" valid_count v )
175
+ ~filename: " ../data/experiment3d.dat"
64
176
65
-
66
- (* List.iter ~f:(fun (size,no_false_positives) ->
67
- * Printf.printf "%3d: %3f\n" size no_false_positives
68
- * ) *)
69
-
70
-
71
-
177
+ let () =
178
+ generate_experiment_1 () ;
179
+ generate_experiment_2 () ;
180
+ generate_experiment_3 ()
0 commit comments