From bb4745f4307e4f325174fc366cf25fe660603018 Mon Sep 17 00:00:00 2001 From: Luca Moretti Date: Wed, 16 Dec 2020 20:34:19 +0100 Subject: [PATCH] Added parameters aplha_xu and tau_xu and ensambled model simulation --- .../estimators/fam_score_calculator.py | 2 +- .../structure_constraint_based_estimator.py | 9 +- .../classes/estimators/structure_estimator.py | 16 + .../structure_score_based_estimator.py | 11 +- .../optimizers/hill_climbing_search.py | 2 + .../classes/optimizers/tabu_search.py | 2 + main_package/tests/results/results.csv | 200 ++- .../tests/results/results16-32RAM.csv | 20 + main_package/tests/results/results_tabu.csv | 1153 +++++++++++++++++ .../tests/simulators/test_ensambled_model.py | 84 ++ .../simulators/test_ensambled_model_all.py | 134 ++ .../tests/simulators/test_simulation_score.py | 3 +- 12 files changed, 1627 insertions(+), 9 deletions(-) create mode 100644 main_package/tests/results/results16-32RAM.csv create mode 100644 main_package/tests/results/results_tabu.csv create mode 100644 main_package/tests/simulators/test_ensambled_model.py create mode 100644 main_package/tests/simulators/test_ensambled_model_all.py diff --git a/main_package/classes/estimators/fam_score_calculator.py b/main_package/classes/estimators/fam_score_calculator.py index 92fb3be..d8333ec 100644 --- a/main_package/classes/estimators/fam_score_calculator.py +++ b/main_package/classes/estimators/fam_score_calculator.py @@ -207,7 +207,7 @@ class FamScoreCalculator: def get_fam_score(self, cims: np.array, - tau_xu: float=1, + tau_xu: float=0.1, alpha_xu: float=1): """ calculate the FamScore value of the node identified by the label node_id diff --git a/main_package/classes/estimators/structure_constraint_based_estimator.py b/main_package/classes/estimators/structure_constraint_based_estimator.py index 2517308..db533c2 100644 --- a/main_package/classes/estimators/structure_constraint_based_estimator.py +++ b/main_package/classes/estimators/structure_constraint_based_estimator.py @@ -211,7 +211,7 @@ class StructureConstraintBasedEstimator(se.StructureEstimator): tot_vars_count = tot_vars_count) optimizer_obj.optimize_structure() - @timing_write + @timing def ctpc_algorithm(self): """ Compute the CTPC algorithm. @@ -224,4 +224,11 @@ class StructureConstraintBasedEstimator(se.StructureEstimator): total_vars_numb = self.sample_path.total_variables_count [ctpc_algo(n, total_vars_numb) for n in self.nodes] + @timing + def estimate_structure(self): + self.ctpc_algorithm() + return set(self.complete_graph.edges) + + + diff --git a/main_package/classes/estimators/structure_estimator.py b/main_package/classes/estimators/structure_estimator.py index 621f9ec..db24847 100644 --- a/main_package/classes/estimators/structure_estimator.py +++ b/main_package/classes/estimators/structure_estimator.py @@ -10,6 +10,8 @@ from networkx.readwrite import json_graph from abc import ABC +import abc + import utility.cache as ch import structure_graph.conditional_intensity_matrix as condim import structure_graph.network_graph as ng @@ -94,3 +96,17 @@ class StructureEstimator(ABC): s0, s1 = matrix.strides return strided(matrix.ravel()[1:], shape=(m - 1, m), strides=(s0 + s1, s1)).reshape(m, -1) + + @abc.abstractmethod + def estimate_structure(self) -> typing.List: + """ + Compute Optimization process for a structure_estimator + + Parameters: + + Returns: + the estimated structure for the node + + """ + pass + diff --git a/main_package/classes/estimators/structure_score_based_estimator.py b/main_package/classes/estimators/structure_score_based_estimator.py index 7cedbec..3876b92 100644 --- a/main_package/classes/estimators/structure_score_based_estimator.py +++ b/main_package/classes/estimators/structure_score_based_estimator.py @@ -41,11 +41,13 @@ class StructureScoreBasedEstimator(se.StructureEstimator): """ - def __init__(self, sample_path: sp.SamplePath): + def __init__(self, sample_path: sp.SamplePath, tau_xu:int=0.1, alpha_xu:int = 1): super().__init__(sample_path) + self.tau_xu=tau_xu + self.alpha_xu=alpha_xu - @timing_write + @timing def estimate_structure(self, max_parents:int = None, iterations_number:int= 40, patience:int = None, tabu_length:int = None, tabu_rules_duration:int = None, optimizer: str = 'hill',disable_multiprocessing:bool= False ): @@ -176,7 +178,8 @@ class StructureScoreBasedEstimator(se.StructureEstimator): return optimizer.optimize_structure() - def get_score_from_graph(self,graph: ng.NetworkGraph,node_id:str): + def get_score_from_graph(self, + graph: ng.NetworkGraph,node_id:str): """ Use the FamScore of a node in order to find the best parent nodes Parameters: @@ -198,7 +201,7 @@ class StructureScoreBasedEstimator(se.StructureEstimator): 'calculate the FamScore for the node' fam_score_obj = fam_score.FamScoreCalculator() - score = fam_score_obj.get_fam_score(SoCims.actual_cims) + score = fam_score_obj.get_fam_score(SoCims.actual_cims,tau_xu = self.tau_xu,alpha_xu=self.alpha_xu) #print(f" lo score per {node_id} risulta: {score} ") return score diff --git a/main_package/classes/optimizers/hill_climbing_search.py b/main_package/classes/optimizers/hill_climbing_search.py index 6e1cdc3..e0da330 100644 --- a/main_package/classes/optimizers/hill_climbing_search.py +++ b/main_package/classes/optimizers/hill_climbing_search.py @@ -34,6 +34,8 @@ class HillClimbing(Optimizer): Compute Optimization process for a structure_estimator Parameters: + node_id: the node label + structure_estimator: a structure estimator object with the information about the net max_parents: maximum number of parents for each variable. If None, disabled iterations_number: maximum number of optimization algorithm's iteration patience: number of iteration without any improvement before to stop the search.If None, disabled diff --git a/main_package/classes/optimizers/tabu_search.py b/main_package/classes/optimizers/tabu_search.py index f294ca3..9675945 100644 --- a/main_package/classes/optimizers/tabu_search.py +++ b/main_package/classes/optimizers/tabu_search.py @@ -38,6 +38,8 @@ class TabuSearch(Optimizer): Compute Optimization process for a structure_estimator Parameters: + node_id: the node label + structure_estimator: a structure estimator object with the information about the net max_parents: maximum number of parents for each variable. If None, disabled iterations_number: maximum number of optimization algorithm's iteration patience: number of iteration without any improvement before to stop the search.If None, disabled diff --git a/main_package/tests/results/results.csv b/main_package/tests/results/results.csv index 78286e8..5ed166d 100644 --- a/main_package/tests/results/results.csv +++ b/main_package/tests/results/results.csv @@ -1,4 +1,4 @@ -Time,Constraint,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall +Time,Type,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall 89.185,1,15,0.1,3,0,0.88,0.786,1.0 96.358,1,15,0.1,3,1,0.939,0.885,1.0 83.178,1,15,0.1,3,2,0.954,0.913,1.0 @@ -1150,4 +1150,200 @@ Time,Constraint,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall 45.044,0,10,0.4,4,2,0.793,1.0,0.657 112.711,0,15,0.4,4,0,0.311,1.0,0.184 119.185,0,15,0.4,4,1,0.46,1.0,0.299 -119.897,0,15,0.4,4,2,0.383,1.0,0.237 \ No newline at end of file +119.897,0,15,0.4,4,2,0.383,1.0,0.237 +2,2,3,0.1,2,0,1.0,1.0,1.0 +2,2,3,0.1,2,1,1.0,1.0,1.0 +2,2,3,0.1,2,2,1.0,1.0,1.0 +2,2,3,0.1,2,3,1.0,1.0,1.0 +2,2,3,0.1,2,4,1.0,1.0,1.0 +2,2,3,0.1,2,5,1.0,1.0,1.0 +2,2,3,0.1,2,6,1.0,1.0,1.0 +2,2,3,0.1,2,7,1.0,1.0,1.0 +2,2,3,0.1,2,8,1.0,1.0,1.0 +2,2,3,0.1,2,9,1.0,1.0,1.0 +2,2,4,0.1,2,0,1.0,1.0,1.0 +2,2,4,0.1,2,1,1.0,1.0,1.0 +2,2,4,0.1,2,2,1.0,1.0,1.0 +2,2,4,0.1,2,3,1.0,1.0,1.0 +2,2,4,0.1,2,4,1.0,1.0,1.0 +2,2,4,0.1,2,5,1.0,1.0,1.0 +2,2,4,0.1,2,6,1.0,1.0,1.0 +2,2,4,0.1,2,7,1.0,1.0,1.0 +2,2,4,0.1,2,8,1.0,1.0,1.0 +2,2,4,0.1,2,9,1.0,1.0,1.0 +2,2,5,0.1,2,0,1.0,1.0,1.0 +2,2,5,0.1,2,1,1.0,1.0,1.0 +2,2,5,0.1,2,2,1.0,1.0,1.0 +2,2,5,0.1,2,3,1.0,1.0,1.0 +2,2,5,0.1,2,4,1.0,1.0,1.0 +2,2,5,0.1,2,5,1.0,1.0,1.0 +2,2,5,0.1,2,6,1.0,1.0,1.0 +2,2,5,0.1,2,7,1.0,1.0,1.0 +2,2,5,0.1,2,8,1.0,1.0,1.0 +2,2,5,0.1,2,9,1.0,1.0,1.0 +2,2,6,0.1,2,0,0.889,1.0,0.8 +2,2,6,0.1,2,1,1.0,1.0,1.0 +2,2,6,0.1,2,2,1.0,1.0,1.0 +2,2,6,0.1,2,3,1.0,1.0,1.0 +2,2,6,0.1,2,4,1.0,1.0,1.0 +2,2,6,0.1,2,5,1.0,1.0,1.0 +2,2,6,0.1,2,6,1.0,1.0,1.0 +2,2,6,0.1,2,7,1.0,1.0,1.0 +2,2,6,0.1,2,8,1.0,1.0,1.0 +2,2,6,0.1,2,9,1.0,1.0,1.0 +2,2,10,0.1,2,0,1.0,1.0,1.0 +2,2,10,0.1,2,1,1.0,1.0,1.0 +2,2,10,0.1,2,2,1.0,1.0,1.0 +2,2,15,0.1,2,0,1.0,1.0,1.0 +2,2,15,0.1,2,1,1.0,1.0,1.0 +2,2,15,0.1,2,2,1.0,1.0,1.0 +2,2,20,0.1,2,0,1.0,1.0,1.0 +2,2,20,0.1,2,1,1.0,1.0,1.0 +2,2,20,0.1,2,2,1.0,1.0,1.0 +2,2,3,0.2,2,0,1.0,1.0,1.0 +2,2,3,0.2,2,1,1.0,1.0,1.0 +2,2,3,0.2,2,2,1.0,1.0,1.0 +2,2,3,0.2,2,3,1.0,1.0,1.0 +2,2,3,0.2,2,4,1.0,1.0,1.0 +2,2,3,0.2,2,5,1.0,1.0,1.0 +2,2,3,0.2,2,6,1.0,1.0,1.0 +2,2,3,0.2,2,7,1.0,1.0,1.0 +2,2,3,0.2,2,8,1.0,1.0,1.0 +2,2,3,0.2,2,9,1.0,1.0,1.0 +2,2,4,0.2,2,0,1.0,1.0,1.0 +2,2,4,0.2,2,1,1.0,1.0,1.0 +2,2,4,0.2,2,2,1.0,1.0,1.0 +2,2,4,0.2,2,3,1.0,1.0,1.0 +2,2,4,0.2,2,4,1.0,1.0,1.0 +2,2,4,0.2,2,5,1.0,1.0,1.0 +2,2,4,0.2,2,6,1.0,1.0,1.0 +2,2,4,0.2,2,7,1.0,1.0,1.0 +2,2,4,0.2,2,8,1.0,1.0,1.0 +2,2,4,0.2,2,9,1.0,1.0,1.0 +2,2,5,0.2,2,0,1.0,1.0,1.0 +2,2,5,0.2,2,1,1.0,1.0,1.0 +2,2,5,0.2,2,2,1.0,1.0,1.0 +2,2,5,0.2,2,3,1.0,1.0,1.0 +2,2,5,0.2,2,4,1.0,1.0,1.0 +2,2,5,0.2,2,5,1.0,1.0,1.0 +2,2,5,0.2,2,6,1.0,1.0,1.0 +2,2,5,0.2,2,7,1.0,1.0,1.0 +2,2,5,0.2,2,8,1.0,1.0,1.0 +2,2,5,0.2,2,9,1.0,1.0,1.0 +2,2,6,0.2,2,0,1.0,1.0,1.0 +2,2,6,0.2,2,1,1.0,1.0,1.0 +2,2,6,0.2,2,2,1.0,1.0,1.0 +2,2,6,0.2,2,3,1.0,1.0,1.0 +2,2,6,0.2,2,4,1.0,1.0,1.0 +2,2,6,0.2,2,5,1.0,1.0,1.0 +2,2,6,0.2,2,6,1.0,1.0,1.0 +2,2,6,0.2,2,7,1.0,1.0,1.0 +2,2,6,0.2,2,8,1.0,1.0,1.0 +2,2,6,0.2,2,9,1.0,1.0,1.0 +2,2,10,0.2,2,0,0.971,0.944,1.0 +2,2,10,0.2,2,1,1.0,1.0,1.0 +2,2,10,0.2,2,2,1.0,1.0,1.0 +2,2,15,0.2,2,0,1.0,1.0,1.0 +2,2,15,0.2,2,1,1.0,1.0,1.0 +2,2,15,0.2,2,2,1.0,1.0,1.0 +2,2,20,0.2,2,0,1.0,1.0,1.0 +2,2,20,0.2,2,1,1.0,1.0,1.0 +2,2,20,0.2,2,2,1.0,1.0,1.0 +2,2,3,0.3,2,0,1.0,1.0,1.0 +2,2,3,0.3,2,1,1.0,1.0,1.0 +2,2,3,0.3,2,2,1.0,1.0,1.0 +2,2,3,0.3,2,3,1.0,1.0,1.0 +2,2,3,0.3,2,4,1.0,1.0,1.0 +2,2,3,0.3,2,5,1.0,1.0,1.0 +2,2,3,0.3,2,6,1.0,1.0,1.0 +2,2,3,0.3,2,7,1.0,1.0,1.0 +2,2,3,0.3,2,8,1.0,1.0,1.0 +2,2,3,0.3,2,9,1.0,1.0,1.0 +2,2,4,0.3,2,0,1.0,1.0,1.0 +2,2,4,0.3,2,1,1.0,1.0,1.0 +2,2,4,0.3,2,2,1.0,1.0,1.0 +2,2,4,0.3,2,3,1.0,1.0,1.0 +2,2,4,0.3,2,4,1.0,1.0,1.0 +2,2,4,0.3,2,5,1.0,1.0,1.0 +2,2,4,0.3,2,6,1.0,1.0,1.0 +2,2,4,0.3,2,7,1.0,1.0,1.0 +2,2,4,0.3,2,8,1.0,1.0,1.0 +2,2,4,0.3,2,9,1.0,1.0,1.0 +2,2,5,0.3,2,0,1.0,1.0,1.0 +2,2,5,0.3,2,1,1.0,1.0,1.0 +2,2,5,0.3,2,2,1.0,1.0,1.0 +2,2,5,0.3,2,3,1.0,1.0,1.0 +2,2,5,0.3,2,4,1.0,1.0,1.0 +2,2,5,0.3,2,5,1.0,1.0,1.0 +2,2,5,0.3,2,6,1.0,1.0,1.0 +2,2,5,0.3,2,7,1.0,1.0,1.0 +2,2,5,0.3,2,8,1.0,1.0,1.0 +2,2,5,0.3,2,9,1.0,1.0,1.0 +2,2,6,0.3,2,0,1.0,1.0,1.0 +2,2,6,0.3,2,1,1.0,1.0,1.0 +2,2,6,0.3,2,2,1.0,1.0,1.0 +2,2,6,0.3,2,3,1.0,1.0,1.0 +2,2,6,0.3,2,4,0.941,1.0,0.889 +2,2,6,0.3,2,5,1.0,1.0,1.0 +2,2,6,0.3,2,6,1.0,1.0,1.0 +2,2,6,0.3,2,7,1.0,1.0,1.0 +2,2,6,0.3,2,8,1.0,1.0,1.0 +2,2,6,0.3,2,9,1.0,1.0,1.0 +2,2,10,0.3,2,0,1.0,1.0,1.0 +2,2,10,0.3,2,1,1.0,1.0,1.0 +2,2,10,0.3,2,2,1.0,1.0,1.0 +2,2,15,0.3,2,0,1.0,1.0,1.0 +2,2,15,0.3,2,1,1.0,1.0,1.0 +2,2,15,0.3,2,2,1.0,1.0,1.0 +2,2,20,0.3,2,0,1.0,1.0,1.0 +2,2,20,0.3,2,1,1.0,1.0,1.0 +2,2,20,0.3,2,2,1.0,1.0,1.0 +2,2,3,0.4,2,0,1.0,1.0,1.0 +2,2,3,0.4,2,1,1.0,1.0,1.0 +2,2,3,0.4,2,2,1.0,1.0,1.0 +2,2,3,0.4,2,3,1.0,1.0,1.0 +2,2,3,0.4,2,4,1.0,1.0,1.0 +2,2,3,0.4,2,5,1.0,1.0,1.0 +2,2,3,0.4,2,6,1.0,1.0,1.0 +2,2,3,0.4,2,7,1.0,1.0,1.0 +2,2,3,0.4,2,8,1.0,1.0,1.0 +2,2,3,0.4,2,9,1.0,1.0,1.0 +2,2,4,0.4,2,0,1.0,1.0,1.0 +2,2,4,0.4,2,1,1.0,1.0,1.0 +2,2,4,0.4,2,2,1.0,1.0,1.0 +2,2,4,0.4,2,3,1.0,1.0,1.0 +2,2,4,0.4,2,4,1.0,1.0,1.0 +2,2,4,0.4,2,5,0.923,0.857,1.0 +2,2,4,0.4,2,6,1.0,1.0,1.0 +2,2,4,0.4,2,7,1.0,1.0,1.0 +2,2,4,0.4,2,8,1.0,1.0,1.0 +2,2,4,0.4,2,9,1.0,1.0,1.0 +2,2,5,0.4,2,0,1.0,1.0,1.0 +2,2,5,0.4,2,1,1.0,1.0,1.0 +2,2,5,0.4,2,2,1.0,1.0,1.0 +2,2,5,0.4,2,3,1.0,1.0,1.0 +2,2,5,0.4,2,4,1.0,1.0,1.0 +2,2,5,0.4,2,5,1.0,1.0,1.0 +2,2,5,0.4,2,6,1.0,1.0,1.0 +2,2,5,0.4,2,7,1.0,1.0,1.0 +2,2,5,0.4,2,8,1.0,1.0,1.0 +2,2,5,0.4,2,9,1.0,1.0,1.0 +2,2,6,0.4,2,0,1.0,1.0,1.0 +2,2,6,0.4,2,1,1.0,1.0,1.0 +2,2,6,0.4,2,2,1.0,1.0,1.0 +2,2,6,0.4,2,3,1.0,1.0,1.0 +2,2,6,0.4,2,4,1.0,1.0,1.0 +2,2,6,0.4,2,5,1.0,1.0,1.0 +2,2,6,0.4,2,6,1.0,1.0,1.0 +2,2,6,0.4,2,7,1.0,1.0,1.0 +2,2,6,0.4,2,8,1.0,1.0,1.0 +2,2,6,0.4,2,9,1.0,1.0,1.0 +2,2,10,0.4,2,0,1.0,1.0,1.0 +2,2,10,0.4,2,1,1.0,1.0,1.0 +2,2,10,0.4,2,2,1.0,1.0,1.0 +2,2,15,0.4,2,0,1.0,1.0,1.0 +2,2,15,0.4,2,1,1.0,1.0,1.0 +2,2,15,0.4,2,2,1.0,1.0,1.0 +2,2,20,0.4,2,0,0.961,1.0,0.925 +2,2,20,0.4,2,1,0.87,1.0,0.769 +2,2,20,0.4,2,2,0.963,1.0,0.929 \ No newline at end of file diff --git a/main_package/tests/results/results16-32RAM.csv b/main_package/tests/results/results16-32RAM.csv new file mode 100644 index 0000000..e266adb --- /dev/null +++ b/main_package/tests/results/results16-32RAM.csv @@ -0,0 +1,20 @@ +6.255,0,3,0.2,2,0,1.0,1.0,1.0 +7.305,0,4,0.2,2,0,1.0,1.0,1.0 +13.017,0,5,0.2,2,0,1.0,1.0,1.0 +18.742,0,6,0.2,2,0,1.0,1.0,1.0 +47.785,0,10,0.2,2,0,1.0,1.0,1.0 +161.731,0,15,0.2,2,0,1.0,1.0,1.0 +284.029,0,20,0.2,2,0,0.989,0.978,1.0 +7.5,0,3,0.2,3,0,1.0,1.0,1.0 +11.541,0,4,0.2,3,0,1.0,1.0,1.0 +19.318,0,5,0.2,3,0,1.0,1.0,1.0 +29.8,0,6,0.2,3,0,1.0,1.0,1.0 +106.663,0,10,0.2,3,0,1.0,1.0,1.0 +265.436,0,15,0.2,3,0,0.876,1.0,0.78 +511.009,0,20,0.2,3,0,0.95,1.0,0.905 +9.866,0,3,0.2,4,0,1.0,1.0,1.0 +16.127,0,4,0.2,4,0,1.0,1.0,1.0 +25.694,0,5,0.2,4,0,1.0,1.0,1.0 +44.268,0,6,0.2,4,0,1.0,1.0,1.0 +146.875,0,10,0.2,4,0,1.0,1.0,1.0 +403.063,0,15,0.2,4,0,0.935,1.0,0.878 \ No newline at end of file diff --git a/main_package/tests/results/results_tabu.csv b/main_package/tests/results/results_tabu.csv new file mode 100644 index 0000000..62ee335 --- /dev/null +++ b/main_package/tests/results/results_tabu.csv @@ -0,0 +1,1153 @@ +Time,Type,Variables,Density_Network,Cardinality,Index,F1,Precision,Recall +89.185,1,15,0.1,3,0,0.88,0.786,1.0 +96.358,1,15,0.1,3,1,0.939,0.885,1.0 +83.178,1,15,0.1,3,2,0.954,0.913,1.0 +70.18,0,15,0.1,3,0,1.0,1.0,1.0 +77.368,0,15,0.1,3,1,1.0,1.0,1.0 +76.239,0,15,0.1,3,2,1.0,1.0,1.0 +286.024,1,20,0.1,3,0,0.967,0.936,1.0 +285.421,1,20,0.1,3,1,0.98,0.961,1.0 +274.174,1,20,0.1,3,2,0.945,0.896,1.0 +232.594,0,20,0.1,3,0,1.0,1.0,1.0 +224.365,0,20,0.1,3,1,1.0,1.0,1.0 +229.797,0,20,0.1,3,2,0.988,1.0,0.977 +18.538,1,10,0.1,3,0,0.941,0.889,1.0 +20.889,1,10,0.1,3,1,1.0,1.0,1.0 +21.828,1,10,0.1,3,2,0.909,0.833,1.0 +24.52,0,10,0.1,3,0,1.0,1.0,1.0 +22.606,0,10,0.1,3,1,1.0,1.0,1.0 +27.887,0,10,0.1,3,2,1.0,1.0,1.0 +4.285,1,6,0.1,3,0,0.923,0.857,1.0 +3.306,1,6,0.1,3,1,1.0,1.0,1.0 +3.262,1,6,0.1,3,2,1.0,1.0,1.0 +4.285,1,6,0.1,3,3,0.857,0.75,1.0 +4.583,1,6,0.1,3,4,1.0,1.0,1.0 +3.21,1,6,0.1,3,5,1.0,1.0,1.0 +3.262,1,6,0.1,3,6,0.8,0.667,1.0 +4.03,1,6,0.1,3,7,0.909,0.833,1.0 +3.195,1,6,0.1,3,8,1.0,1.0,1.0 +3.52,1,6,0.1,3,9,0.889,0.8,1.0 +9.183,0,6,0.1,3,0,1.0,1.0,1.0 +8.894,0,6,0.1,3,1,1.0,1.0,1.0 +8.882,0,6,0.1,3,2,1.0,1.0,1.0 +8.971,0,6,0.1,3,3,1.0,1.0,1.0 +9.391,0,6,0.1,3,4,1.0,1.0,1.0 +9.114,0,6,0.1,3,5,1.0,1.0,1.0 +8.439,0,6,0.1,3,6,1.0,1.0,1.0 +9.54,0,6,0.1,3,7,1.0,1.0,1.0 +9.043,0,6,0.1,3,8,1.0,1.0,1.0 +9.744,0,6,0.1,3,9,1.0,1.0,1.0 +1.921,1,5,0.1,3,0,0.889,0.8,1.0 +1.567,1,5,0.1,3,1,1.0,1.0,1.0 +2.0,1,5,0.1,3,2,1.0,1.0,1.0 +2.105,1,5,0.1,3,3,0.889,0.8,1.0 +2.264,1,5,0.1,3,4,1.0,1.0,1.0 +2.317,1,5,0.1,3,5,0.769,0.625,1.0 +2.244,1,5,0.1,3,6,0.727,0.571,1.0 +1.998,1,5,0.1,3,7,0.889,0.8,1.0 +1.718,1,5,0.1,3,8,1.0,1.0,1.0 +2.387,1,5,0.1,3,9,1.0,1.0,1.0 +7.091,0,5,0.1,3,0,1.0,1.0,1.0 +6.221,0,5,0.1,3,1,1.0,1.0,1.0 +6.945,0,5,0.1,3,2,1.0,1.0,1.0 +7.138,0,5,0.1,3,3,1.0,1.0,1.0 +6.903,0,5,0.1,3,4,1.0,1.0,1.0 +6.972,0,5,0.1,3,5,1.0,1.0,1.0 +7.052,0,5,0.1,3,6,1.0,1.0,1.0 +6.911,0,5,0.1,3,7,1.0,1.0,1.0 +6.843,0,5,0.1,3,8,1.0,1.0,1.0 +8.103,0,5,0.1,3,9,1.0,1.0,1.0 +5.421,0,4,0.1,3,0,1.0,1.0,1.0 +5.777,0,4,0.1,3,1,1.0,1.0,1.0 +5.247,0,4,0.1,3,2,1.0,1.0,1.0 +5.308,0,4,0.1,3,3,1.0,1.0,1.0 +5.678,0,4,0.1,3,4,1.0,1.0,1.0 +5.654,0,4,0.1,3,5,1.0,1.0,1.0 +5.263,0,4,0.1,3,6,1.0,1.0,1.0 +5.632,0,4,0.1,3,7,1.0,1.0,1.0 +5.377,0,4,0.1,3,8,1.0,1.0,1.0 +5.509,0,4,0.1,3,9,1.0,1.0,1.0 +1.269,1,4,0.1,3,0,0.857,0.75,1.0 +0.866,1,4,0.1,3,1,0.667,0.5,1.0 +0.916,1,4,0.1,3,2,0.857,0.75,1.0 +0.96,1,4,0.1,3,3,1.0,1.0,1.0 +0.855,1,4,0.1,3,4,1.0,1.0,1.0 +1.211,1,4,0.1,3,5,0.75,0.6,1.0 +0.89,1,4,0.1,3,6,1.0,1.0,1.0 +0.932,1,4,0.1,3,7,1.0,1.0,1.0 +0.711,1,4,0.1,3,8,0.8,0.667,1.0 +0.841,1,4,0.1,3,9,1.0,1.0,1.0 +0.318,1,3,0.1,3,0,1.0,1.0,1.0 +0.327,1,3,0.1,3,1,1.0,1.0,1.0 +0.426,1,3,0.1,3,2,1.0,1.0,1.0 +0.358,1,3,0.1,3,3,0.8,0.667,1.0 +0.316,1,3,0.1,3,4,1.0,1.0,1.0 +0.366,1,3,0.1,3,5,1.0,1.0,1.0 +0.343,1,3,0.1,3,6,0.667,0.5,1.0 +0.348,1,3,0.1,3,7,0.8,0.667,1.0 +0.353,1,3,0.1,3,8,0.8,0.667,1.0 +0.343,1,3,0.1,3,9,1.0,1.0,1.0 +3.851,0,3,0.1,3,0,1.0,1.0,1.0 +4.047,0,3,0.1,3,1,1.0,1.0,1.0 +4.129,0,3,0.1,3,2,1.0,1.0,1.0 +4.26,0,3,0.1,3,3,1.0,1.0,1.0 +4.134,0,3,0.1,3,4,1.0,1.0,1.0 +4.353,0,3,0.1,3,5,1.0,1.0,1.0 +4.904,0,3,0.1,3,6,1.0,1.0,1.0 +4.892,0,3,0.1,3,7,1.0,1.0,1.0 +4.609,0,3,0.1,3,8,1.0,1.0,1.0 +4.58,0,3,0.1,3,9,1.0,1.0,1.0 +0.318,1,3,0.2,3,0,1.0,1.0,1.0 +0.41,1,3,0.2,3,1,1.0,1.0,1.0 +0.297,1,3,0.2,3,2,0.8,0.667,1.0 +0.399,1,3,0.2,3,3,1.0,1.0,1.0 +0.384,1,3,0.2,3,4,1.0,1.0,1.0 +0.355,1,3,0.2,3,5,1.0,1.0,1.0 +0.333,1,3,0.2,3,6,1.0,1.0,1.0 +0.32,1,3,0.2,3,7,1.0,1.0,1.0 +0.385,1,3,0.2,3,8,1.0,1.0,1.0 +0.394,1,3,0.2,3,9,0.857,0.75,1.0 +0.915,1,4,0.2,3,0,0.857,0.75,1.0 +1.087,1,4,0.2,3,1,1.0,1.0,1.0 +0.884,1,4,0.2,3,2,0.889,0.8,1.0 +0.95,1,4,0.2,3,3,1.0,1.0,1.0 +1.204,1,4,0.2,3,4,0.889,0.8,1.0 +0.689,1,4,0.2,3,5,1.0,1.0,1.0 +0.907,1,4,0.2,3,6,1.0,1.0,1.0 +0.884,1,4,0.2,3,7,1.0,1.0,1.0 +0.809,1,4,0.2,3,8,0.857,0.75,1.0 +0.685,1,4,0.2,3,9,1.0,1.0,1.0 +1.899,1,5,0.2,3,0,1.0,1.0,1.0 +2.177,1,5,0.2,3,1,1.0,1.0,1.0 +2.276,1,5,0.2,3,2,0.909,0.833,1.0 +3.268,1,5,0.2,3,3,0.941,0.889,1.0 +2.412,1,5,0.2,3,4,1.0,1.0,1.0 +2.218,1,5,0.2,3,5,1.0,1.0,1.0 +2.093,1,5,0.2,3,6,1.0,1.0,1.0 +1.542,1,5,0.2,3,7,0.75,0.6,1.0 +2.438,1,5,0.2,3,8,0.8,0.667,1.0 +2.503,1,5,0.2,3,9,0.909,0.833,1.0 +3.469,1,6,0.2,3,0,1.0,1.0,1.0 +3.45,1,6,0.2,3,1,0.923,0.857,1.0 +4.485,1,6,0.2,3,2,1.0,1.0,1.0 +2.936,1,6,0.2,3,3,1.0,1.0,1.0 +3.17,1,6,0.2,3,4,1.0,1.0,1.0 +3.033,1,6,0.2,3,5,0.727,0.571,1.0 +3.689,1,6,0.2,3,6,1.0,1.0,1.0 +5.302,1,6,0.2,3,7,1.0,1.0,1.0 +4.174,1,6,0.2,3,8,0.933,0.875,1.0 +3.694,1,6,0.2,3,9,1.0,1.0,1.0 +26.953,1,10,0.2,3,0,0.979,0.958,1.0 +26.558,1,10,0.2,3,1,1.0,1.0,1.0 +25.296,1,10,0.2,3,2,0.971,0.944,1.0 +161.151,1,15,0.2,3,0,1.0,1.0,1.0 +119.37,1,15,0.2,3,1,0.94,0.975,0.907 +141.138,1,15,0.2,3,2,1.0,1.0,1.0 +343.127,1,20,0.2,3,0,0.992,0.984,1.0 +369.146,1,20,0.2,3,1,0.993,1.0,0.986 +439.966,1,20,0.2,3,2,0.969,1.0,0.939 +3.64,0,3,0.2,3,0,1.0,1.0,1.0 +3.925,0,3,0.2,3,1,1.0,1.0,1.0 +3.719,0,3,0.2,3,2,1.0,1.0,1.0 +3.953,0,3,0.2,3,3,1.0,1.0,1.0 +3.883,0,3,0.2,3,4,1.0,1.0,1.0 +3.921,0,3,0.2,3,5,1.0,1.0,1.0 +3.84,0,3,0.2,3,6,1.0,1.0,1.0 +3.809,0,3,0.2,3,7,1.0,1.0,1.0 +3.959,0,3,0.2,3,8,1.0,1.0,1.0 +4.031,0,3,0.2,3,9,1.0,1.0,1.0 +4.679,0,4,0.2,3,0,1.0,1.0,1.0 +5.158,0,4,0.2,3,1,1.0,1.0,1.0 +5.014,0,4,0.2,3,2,1.0,1.0,1.0 +5.116,0,4,0.2,3,3,1.0,1.0,1.0 +5.265,0,4,0.2,3,4,1.0,1.0,1.0 +4.814,0,4,0.2,3,5,1.0,1.0,1.0 +4.996,0,4,0.2,3,6,1.0,1.0,1.0 +4.985,0,4,0.2,3,7,1.0,1.0,1.0 +4.949,0,4,0.2,3,8,1.0,1.0,1.0 +4.733,0,4,0.2,3,9,1.0,1.0,1.0 +6.817,0,5,0.2,3,0,1.0,1.0,1.0 +6.581,0,5,0.2,3,1,1.0,1.0,1.0 +6.608,0,5,0.2,3,2,1.0,1.0,1.0 +7.391,0,5,0.2,3,3,1.0,1.0,1.0 +7.426,0,5,0.2,3,4,1.0,1.0,1.0 +6.317,0,5,0.2,3,5,1.0,1.0,1.0 +6.338,0,5,0.2,3,6,1.0,1.0,1.0 +5.979,0,5,0.2,3,7,1.0,1.0,1.0 +6.797,0,5,0.2,3,8,1.0,1.0,1.0 +6.513,0,5,0.2,3,9,1.0,1.0,1.0 +8.725,0,6,0.2,3,0,1.0,1.0,1.0 +9.161,0,6,0.2,3,1,1.0,1.0,1.0 +9.094,0,6,0.2,3,2,1.0,1.0,1.0 +8.358,0,6,0.2,3,3,1.0,1.0,1.0 +8.459,0,6,0.2,3,4,1.0,1.0,1.0 +8.157,0,6,0.2,3,5,1.0,1.0,1.0 +9.043,0,6,0.2,3,6,1.0,1.0,1.0 +9.535,0,6,0.2,3,7,1.0,1.0,1.0 +8.837,0,6,0.2,3,8,1.0,1.0,1.0 +9.336,0,6,0.2,3,9,1.0,1.0,1.0 +28.779,0,10,0.2,3,0,1.0,1.0,1.0 +30.831,0,10,0.2,3,1,1.0,1.0,1.0 +28.31,0,10,0.2,3,2,1.0,1.0,1.0 +96.291,0,15,0.2,3,0,0.876,1.0,0.78 +95.839,0,15,0.2,3,1,0.838,1.0,0.721 +105.675,0,15,0.2,3,2,0.938,1.0,0.884 +234.928,0,20,0.2,3,0,0.95,1.0,0.905 +247.535,0,20,0.2,3,1,0.916,1.0,0.845 +241.698,0,20,0.2,3,2,0.82,1.0,0.695 +0.434,1,3,0.3,3,0,1.0,1.0,1.0 +0.466,1,3,0.3,3,1,1.0,1.0,1.0 +0.363,1,3,0.3,3,2,1.0,1.0,1.0 +0.41,1,3,0.3,3,3,1.0,1.0,1.0 +0.367,1,3,0.3,3,4,1.0,1.0,1.0 +0.453,1,3,0.3,3,5,0.857,0.75,1.0 +0.422,1,3,0.3,3,6,1.0,1.0,1.0 +0.32,1,3,0.3,3,7,1.0,1.0,1.0 +0.325,1,3,0.3,3,8,1.0,1.0,1.0 +0.368,1,3,0.3,3,9,1.0,1.0,1.0 +0.985,1,4,0.3,3,0,1.0,1.0,1.0 +0.974,1,4,0.3,3,1,1.0,1.0,1.0 +0.98,1,4,0.3,3,2,1.0,1.0,1.0 +1.709,1,4,0.3,3,3,1.0,1.0,1.0 +1.145,1,4,0.3,3,4,0.909,0.833,1.0 +0.825,1,4,0.3,3,5,1.0,1.0,1.0 +1.216,1,4,0.3,3,6,0.909,0.833,1.0 +0.994,1,4,0.3,3,7,1.0,1.0,1.0 +1.306,1,4,0.3,3,8,1.0,1.0,1.0 +1.227,1,4,0.3,3,9,1.0,1.0,1.0 +2.314,1,5,0.3,3,0,0.933,0.875,1.0 +2.307,1,5,0.3,3,1,1.0,1.0,1.0 +2.125,1,5,0.3,3,2,1.0,1.0,1.0 +2.773,1,5,0.3,3,3,0.889,0.8,1.0 +2.657,1,5,0.3,3,4,1.0,1.0,1.0 +2.896,1,5,0.3,3,5,0.941,0.889,1.0 +1.592,1,5,0.3,3,6,1.0,1.0,1.0 +2.394,1,5,0.3,3,7,0.923,0.857,1.0 +2.182,1,5,0.3,3,8,1.0,1.0,1.0 +3.725,1,5,0.3,3,9,0.889,0.8,1.0 +4.207,1,6,0.3,3,0,1.0,1.0,1.0 +5.426,1,6,0.3,3,1,0.952,0.909,1.0 +6.049,1,6,0.3,3,2,1.0,1.0,1.0 +3.973,1,6,0.3,3,3,0.933,0.875,1.0 +7.383,1,6,0.3,3,4,1.0,1.0,1.0 +4.478,1,6,0.3,3,5,0.952,0.909,1.0 +6.23,1,6,0.3,3,6,0.96,0.923,1.0 +4.86,1,6,0.3,3,7,0.957,0.917,1.0 +4.145,1,6,0.3,3,8,1.0,1.0,1.0 +4.398,1,6,0.3,3,9,0.8,0.667,1.0 +35.778,1,10,0.3,3,0,0.952,0.938,0.968 +34.75,1,10,0.3,3,1,0.969,0.939,1.0 +21.66,1,10,0.3,3,2,0.966,0.933,1.0 +1336.782,1,15,0.3,3,0,1.0,1.0,1.0 +153.441,1,15,0.3,3,1,0.959,1.0,0.922 +138.906,1,15,0.3,3,2,0.885,1.0,0.794 +483.147,1,20,0.3,3,0,0.92,1.0,0.851 +394.776,1,20,0.3,3,1,0.758,0.986,0.615 +486.95,1,20,0.3,3,2,0.777,0.988,0.64 +0.468,1,3,0.4,3,0,1.0,1.0,1.0 +0.299,1,3,0.4,3,1,0.8,0.667,1.0 +0.475,1,3,0.4,3,2,1.0,1.0,1.0 +0.432,1,3,0.4,3,3,0.889,0.8,1.0 +0.361,1,3,0.4,3,4,1.0,1.0,1.0 +0.316,1,3,0.4,3,5,0.8,0.667,1.0 +0.35,1,3,0.4,3,6,1.0,1.0,1.0 +0.309,1,3,0.4,3,7,1.0,1.0,1.0 +0.309,1,3,0.4,3,8,1.0,1.0,1.0 +0.417,1,3,0.4,3,9,1.0,1.0,1.0 +1.02,1,4,0.4,3,0,1.0,1.0,1.0 +1.45,1,4,0.4,3,1,0.933,0.875,1.0 +1.251,1,4,0.4,3,2,1.0,1.0,1.0 +1.189,1,4,0.4,3,3,1.0,1.0,1.0 +1.338,1,4,0.4,3,4,0.923,0.857,1.0 +1.128,1,4,0.4,3,5,1.0,1.0,1.0 +0.903,1,4,0.4,3,6,0.889,0.8,1.0 +1.013,1,4,0.4,3,7,0.889,0.8,1.0 +1.203,1,4,0.4,3,8,1.0,1.0,1.0 +1.263,1,4,0.4,3,9,0.8,0.667,1.0 +3.298,1,5,0.4,3,0,0.909,0.833,1.0 +2.563,1,5,0.4,3,1,1.0,1.0,1.0 +2.964,1,5,0.4,3,2,0.941,0.889,1.0 +2.236,1,5,0.4,3,3,0.923,0.857,1.0 +2.517,1,5,0.4,3,4,0.923,0.857,1.0 +3.293,1,5,0.4,3,5,0.941,0.889,1.0 +3.982,1,5,0.4,3,6,0.889,0.8,1.0 +3.11,1,5,0.4,3,7,1.0,1.0,1.0 +2.594,1,5,0.4,3,8,1.0,1.0,1.0 +3.682,1,5,0.4,3,9,0.952,0.909,1.0 +5.849,1,6,0.4,3,0,1.0,1.0,1.0 +6.763,1,6,0.4,3,1,0.929,0.867,1.0 +7.578,1,6,0.4,3,2,0.966,0.933,1.0 +4.927,1,6,0.4,3,3,0.857,0.75,1.0 +6.75,1,6,0.4,3,4,0.968,0.938,1.0 +5.433,1,6,0.4,3,5,1.0,1.0,1.0 +4.761,1,6,0.4,3,6,0.947,0.9,1.0 +6.659,1,6,0.4,3,7,0.963,0.929,1.0 +5.526,1,6,0.4,3,8,0.966,0.933,1.0 +4.485,1,6,0.4,3,9,0.947,0.9,1.0 +52.322,1,10,0.4,3,0,1.0,1.0,1.0 +42.89,1,10,0.4,3,1,0.932,0.971,0.895 +53.392,1,10,0.4,3,2,1.0,1.0,1.0 +255.384,1,15,0.4,3,0,0.863,0.985,0.767 +177.34,1,15,0.4,3,1,0.78,0.982,0.647 +221.834,1,15,0.4,3,2,0.958,1.0,0.92 +323.144,1,20,0.4,3,0,0.5,0.98,0.336 +417.004,1,20,0.4,3,1,0.635,1.0,0.465 +358.291,1,20,0.4,3,2,0.436,0.936,0.284 +4.228,0,3,0.3,3,0,1.0,1.0,1.0 +4.679,0,3,0.3,3,1,1.0,1.0,1.0 +4.582,0,3,0.3,3,2,1.0,1.0,1.0 +4.093,0,3,0.3,3,3,1.0,1.0,1.0 +3.755,0,3,0.3,3,4,1.0,1.0,1.0 +3.775,0,3,0.3,3,5,1.0,1.0,1.0 +3.747,0,3,0.3,3,6,1.0,1.0,1.0 +3.714,0,3,0.3,3,7,1.0,1.0,1.0 +3.783,0,3,0.3,3,8,1.0,1.0,1.0 +4.023,0,3,0.3,3,9,1.0,1.0,1.0 +4.831,0,4,0.3,3,0,1.0,1.0,1.0 +4.893,0,4,0.3,3,1,1.0,1.0,1.0 +4.892,0,4,0.3,3,2,1.0,1.0,1.0 +5.289,0,4,0.3,3,3,1.0,1.0,1.0 +5.529,0,4,0.3,3,4,1.0,1.0,1.0 +5.959,0,4,0.3,3,5,1.0,1.0,1.0 +5.57,0,4,0.3,3,6,1.0,1.0,1.0 +5.571,0,4,0.3,3,7,1.0,1.0,1.0 +5.249,0,4,0.3,3,8,1.0,1.0,1.0 +5.728,0,4,0.3,3,9,1.0,1.0,1.0 +6.842,0,5,0.3,3,0,1.0,1.0,1.0 +6.747,0,5,0.3,3,1,1.0,1.0,1.0 +6.873,0,5,0.3,3,2,1.0,1.0,1.0 +7.045,0,5,0.3,3,3,1.0,1.0,1.0 +7.885,0,5,0.3,3,4,1.0,1.0,1.0 +7.335,0,5,0.3,3,5,1.0,1.0,1.0 +7.019,0,5,0.3,3,6,1.0,1.0,1.0 +7.236,0,5,0.3,3,7,1.0,1.0,1.0 +7.869,0,5,0.3,3,8,1.0,1.0,1.0 +7.327,0,5,0.3,3,9,1.0,1.0,1.0 +10.222,0,6,0.3,3,0,1.0,1.0,1.0 +10.859,0,6,0.3,3,1,1.0,1.0,1.0 +10.408,0,6,0.3,3,2,1.0,1.0,1.0 +9.085,0,6,0.3,3,3,1.0,1.0,1.0 +9.771,0,6,0.3,3,4,1.0,1.0,1.0 +9.554,0,6,0.3,3,5,1.0,1.0,1.0 +10.01,0,6,0.3,3,6,1.0,1.0,1.0 +10.31,0,6,0.3,3,7,1.0,1.0,1.0 +9.55,0,6,0.3,3,8,1.0,1.0,1.0 +9.691,0,6,0.3,3,9,1.0,1.0,1.0 +33.645,0,10,0.3,3,0,0.893,1.0,0.806 +35.127,0,10,0.3,3,1,1.0,1.0,1.0 +26.593,0,10,0.3,3,2,1.0,1.0,1.0 +100.709,0,15,0.3,3,0,0.884,1.0,0.792 +108.355,0,15,0.3,3,1,0.887,1.0,0.797 +94.366,0,15,0.3,3,2,0.788,1.0,0.651 +271.388,0,20,0.3,3,0,0.712,1.0,0.553 +228.641,0,20,0.3,3,1,0.51,1.0,0.342 +217.456,0,20,0.3,3,2,0.438,1.0,0.28 +3.896,0,3,0.4,3,0,1.0,1.0,1.0 +3.748,0,3,0.4,3,1,1.0,1.0,1.0 +4.04,0,3,0.4,3,2,1.0,1.0,1.0 +3.987,0,3,0.4,3,3,1.0,1.0,1.0 +3.943,0,3,0.4,3,4,1.0,1.0,1.0 +3.986,0,3,0.4,3,5,1.0,1.0,1.0 +4.047,0,3,0.4,3,6,1.0,1.0,1.0 +4.014,0,3,0.4,3,7,1.0,1.0,1.0 +3.786,0,3,0.4,3,8,1.0,1.0,1.0 +4.12,0,3,0.4,3,9,1.0,1.0,1.0 +5.357,0,4,0.4,3,0,1.0,1.0,1.0 +5.275,0,4,0.4,3,1,1.0,1.0,1.0 +5.11,0,4,0.4,3,2,1.0,1.0,1.0 +5.222,0,4,0.4,3,3,1.0,1.0,1.0 +5.103,0,4,0.4,3,4,1.0,1.0,1.0 +5.235,0,4,0.4,3,5,1.0,1.0,1.0 +4.9,0,4,0.4,3,6,1.0,1.0,1.0 +4.561,0,4,0.4,3,7,1.0,1.0,1.0 +5.0,0,4,0.4,3,8,1.0,1.0,1.0 +5.178,0,4,0.4,3,9,1.0,1.0,1.0 +6.971,0,5,0.4,3,0,1.0,1.0,1.0 +6.964,0,5,0.4,3,1,1.0,1.0,1.0 +7.318,0,5,0.4,3,2,1.0,1.0,1.0 +6.14,0,5,0.4,3,3,1.0,1.0,1.0 +6.472,0,5,0.4,3,4,1.0,1.0,1.0 +6.793,0,5,0.4,3,5,1.0,1.0,1.0 +6.586,0,5,0.4,3,6,1.0,1.0,1.0 +6.891,0,5,0.4,3,7,1.0,1.0,1.0 +6.809,0,5,0.4,3,8,1.0,1.0,1.0 +6.926,0,5,0.4,3,9,1.0,1.0,1.0 +9.546,0,6,0.4,3,0,1.0,1.0,1.0 +9.71,0,6,0.4,3,1,1.0,1.0,1.0 +9.771,0,6,0.4,3,2,1.0,1.0,1.0 +8.987,0,6,0.4,3,3,1.0,1.0,1.0 +10.362,0,6,0.4,3,4,1.0,1.0,1.0 +9.806,0,6,0.4,3,5,1.0,1.0,1.0 +8.892,0,6,0.4,3,6,1.0,1.0,1.0 +9.96,0,6,0.4,3,7,1.0,1.0,1.0 +9.968,0,6,0.4,3,8,1.0,1.0,1.0 +9.02,0,6,0.4,3,9,1.0,1.0,1.0 +29.557,0,10,0.4,3,0,0.807,1.0,0.676 +33.077,0,10,0.4,3,1,0.899,1.0,0.816 +35.888,0,10,0.4,3,2,1.0,1.0,1.0 +83.804,0,15,0.4,3,0,0.45,1.0,0.291 +79.044,0,15,0.4,3,1,0.482,1.0,0.318 +93.742,0,15,0.4,3,2,0.729,1.0,0.573 +188.057,0,20,0.4,3,0,0.205,1.0,0.114 +185.315,0,20,0.4,3,1,0.236,1.0,0.134 +178.808,0,20,0.4,3,2,0.11,1.0,0.058 +0.217,1,3,0.1,2,0,1.0,1.0,1.0 +0.153,1,3,0.1,2,1,1.0,1.0,1.0 +0.186,1,3,0.1,2,2,1.0,1.0,1.0 +0.198,1,3,0.1,2,3,1.0,1.0,1.0 +0.137,1,3,0.1,2,4,1.0,1.0,1.0 +0.135,1,3,0.1,2,5,1.0,1.0,1.0 +0.137,1,3,0.1,2,6,1.0,1.0,1.0 +0.18,1,3,0.1,2,7,1.0,1.0,1.0 +0.152,1,3,0.1,2,8,1.0,1.0,1.0 +0.151,1,3,0.1,2,9,1.0,1.0,1.0 +0.325,1,4,0.1,2,0,1.0,1.0,1.0 +0.35,1,4,0.1,2,1,1.0,1.0,1.0 +0.346,1,4,0.1,2,2,1.0,1.0,1.0 +0.437,1,4,0.1,2,3,1.0,1.0,1.0 +0.409,1,4,0.1,2,4,1.0,1.0,1.0 +0.4,1,4,0.1,2,5,1.0,1.0,1.0 +0.49,1,4,0.1,2,6,1.0,1.0,1.0 +0.35,1,4,0.1,2,7,1.0,1.0,1.0 +0.455,1,4,0.1,2,8,1.0,1.0,1.0 +0.433,1,4,0.1,2,9,1.0,1.0,1.0 +0.656,1,5,0.1,2,0,1.0,1.0,1.0 +0.833,1,5,0.1,2,1,1.0,1.0,1.0 +1.292,1,5,0.1,2,2,1.0,1.0,1.0 +0.776,1,5,0.1,2,3,1.0,1.0,1.0 +1.099,1,5,0.1,2,4,1.0,1.0,1.0 +1.463,1,5,0.1,2,5,1.0,1.0,1.0 +0.946,1,5,0.1,2,6,1.0,1.0,1.0 +0.929,1,5,0.1,2,7,1.0,1.0,1.0 +0.892,1,5,0.1,2,8,1.0,1.0,1.0 +0.857,1,5,0.1,2,9,1.0,1.0,1.0 +1.577,1,6,0.1,2,0,0.889,1.0,0.8 +1.483,1,6,0.1,2,1,1.0,1.0,1.0 +1.563,1,6,0.1,2,2,1.0,1.0,1.0 +1.998,1,6,0.1,2,3,1.0,1.0,1.0 +1.799,1,6,0.1,2,4,1.0,1.0,1.0 +1.461,1,6,0.1,2,5,1.0,1.0,1.0 +1.972,1,6,0.1,2,6,1.0,1.0,1.0 +1.775,1,6,0.1,2,7,1.0,1.0,1.0 +1.498,1,6,0.1,2,8,1.0,1.0,1.0 +1.762,1,6,0.1,2,9,1.0,1.0,1.0 +12.238,1,10,0.1,2,0,1.0,1.0,1.0 +8.715,1,10,0.1,2,1,1.0,1.0,1.0 +9.8,1,10,0.1,2,2,1.0,1.0,1.0 +50.266,1,15,0.1,2,0,0.982,1.0,0.964 +35.118,1,15,0.1,2,1,1.0,1.0,1.0 +43.414,1,15,0.1,2,2,0.984,1.0,0.968 +115.608,1,20,0.1,2,0,1.0,1.0,1.0 +105.992,1,20,0.1,2,1,1.0,1.0,1.0 +105.024,1,20,0.1,2,2,1.0,1.0,1.0 +0.187,1,3,0.2,2,0,1.0,1.0,1.0 +0.184,1,3,0.2,2,1,1.0,1.0,1.0 +0.194,1,3,0.2,2,2,1.0,1.0,1.0 +0.198,1,3,0.2,2,3,1.0,1.0,1.0 +0.171,1,3,0.2,2,4,1.0,1.0,1.0 +0.137,1,3,0.2,2,5,1.0,1.0,1.0 +0.155,1,3,0.2,2,6,1.0,1.0,1.0 +0.187,1,3,0.2,2,7,1.0,1.0,1.0 +0.186,1,3,0.2,2,8,1.0,1.0,1.0 +0.2,1,3,0.2,2,9,1.0,1.0,1.0 +0.413,1,4,0.2,2,0,1.0,1.0,1.0 +0.375,1,4,0.2,2,1,1.0,1.0,1.0 +0.506,1,4,0.2,2,2,1.0,1.0,1.0 +0.413,1,4,0.2,2,3,1.0,1.0,1.0 +0.446,1,4,0.2,2,4,1.0,1.0,1.0 +0.48,1,4,0.2,2,5,1.0,1.0,1.0 +0.348,1,4,0.2,2,6,1.0,1.0,1.0 +0.365,1,4,0.2,2,7,1.0,1.0,1.0 +0.468,1,4,0.2,2,8,1.0,1.0,1.0 +0.516,1,4,0.2,2,9,1.0,1.0,1.0 +0.961,1,5,0.2,2,0,1.0,1.0,1.0 +1.085,1,5,0.2,2,1,1.0,1.0,1.0 +0.894,1,5,0.2,2,2,1.0,1.0,1.0 +1.024,1,5,0.2,2,3,1.0,1.0,1.0 +0.931,1,5,0.2,2,4,1.0,1.0,1.0 +1.093,1,5,0.2,2,5,1.0,1.0,1.0 +0.822,1,5,0.2,2,6,1.0,1.0,1.0 +0.885,1,5,0.2,2,7,1.0,1.0,1.0 +1.115,1,5,0.2,2,8,1.0,1.0,1.0 +0.761,1,5,0.2,2,9,1.0,1.0,1.0 +1.949,1,6,0.2,2,0,1.0,1.0,1.0 +1.572,1,6,0.2,2,1,1.0,1.0,1.0 +1.718,1,6,0.2,2,2,1.0,1.0,1.0 +1.679,1,6,0.2,2,3,1.0,1.0,1.0 +1.721,1,6,0.2,2,4,1.0,1.0,1.0 +1.635,1,6,0.2,2,5,1.0,1.0,1.0 +1.203,1,6,0.2,2,6,1.0,1.0,1.0 +1.927,1,6,0.2,2,7,1.0,1.0,1.0 +2.162,1,6,0.2,2,8,1.0,1.0,1.0 +1.746,1,6,0.2,2,9,1.0,1.0,1.0 +10.011,1,10,0.2,2,0,0.941,0.941,0.941 +11.99,1,10,0.2,2,1,1.0,1.0,1.0 +10.912,1,10,0.2,2,2,0.966,1.0,0.933 +54.015,1,15,0.2,2,0,0.987,1.0,0.974 +71.46,1,15,0.2,2,1,0.976,1.0,0.953 +71.038,1,15,0.2,2,2,0.979,1.0,0.958 +249.455,1,20,0.2,2,0,0.947,1.0,0.9 +205.531,1,20,0.2,2,1,0.984,1.0,0.969 +184.04,1,20,0.2,2,2,0.987,1.0,0.974 +0.188,1,3,0.3,2,0,1.0,1.0,1.0 +0.196,1,3,0.3,2,1,1.0,1.0,1.0 +0.201,1,3,0.3,2,2,1.0,1.0,1.0 +0.184,1,3,0.3,2,3,1.0,1.0,1.0 +0.196,1,3,0.3,2,4,1.0,1.0,1.0 +0.176,1,3,0.3,2,5,1.0,1.0,1.0 +0.214,1,3,0.3,2,6,1.0,1.0,1.0 +0.195,1,3,0.3,2,7,1.0,1.0,1.0 +0.172,1,3,0.3,2,8,1.0,1.0,1.0 +0.194,1,3,0.3,2,9,1.0,1.0,1.0 +0.456,1,4,0.3,2,0,1.0,1.0,1.0 +0.596,1,4,0.3,2,1,1.0,1.0,1.0 +0.681,1,4,0.3,2,2,1.0,1.0,1.0 +0.63,1,4,0.3,2,3,1.0,1.0,1.0 +0.528,1,4,0.3,2,4,1.0,1.0,1.0 +0.501,1,4,0.3,2,5,1.0,1.0,1.0 +0.527,1,4,0.3,2,6,1.0,1.0,1.0 +0.635,1,4,0.3,2,7,1.0,1.0,1.0 +0.564,1,4,0.3,2,8,1.0,1.0,1.0 +0.489,1,4,0.3,2,9,1.0,1.0,1.0 +1.142,1,5,0.3,2,0,1.0,1.0,1.0 +0.839,1,5,0.3,2,1,1.0,1.0,1.0 +0.725,1,5,0.3,2,2,1.0,1.0,1.0 +1.038,1,5,0.3,2,3,1.0,1.0,1.0 +1.384,1,5,0.3,2,4,1.0,1.0,1.0 +1.024,1,5,0.3,2,5,1.0,1.0,1.0 +0.701,1,5,0.3,2,6,1.0,1.0,1.0 +1.81,1,5,0.3,2,7,1.0,1.0,1.0 +1.75,1,5,0.3,2,8,1.0,1.0,1.0 +1.087,1,5,0.3,2,9,1.0,1.0,1.0 +1.639,1,6,0.3,2,0,1.0,1.0,1.0 +1.895,1,6,0.3,2,1,1.0,1.0,1.0 +2.144,1,6,0.3,2,2,1.0,1.0,1.0 +2.461,1,6,0.3,2,3,1.0,1.0,1.0 +1.734,1,6,0.3,2,4,0.941,1.0,0.889 +2.732,1,6,0.3,2,5,1.0,1.0,1.0 +1.464,1,6,0.3,2,6,1.0,1.0,1.0 +2.079,1,6,0.3,2,7,0.941,1.0,0.889 +1.765,1,6,0.3,2,8,1.0,1.0,1.0 +3.043,1,6,0.3,2,9,1.0,1.0,1.0 +13.001,1,10,0.3,2,0,1.0,1.0,1.0 +16.57,1,10,0.3,2,1,0.98,1.0,0.96 +15.009,1,10,0.3,2,2,0.98,1.0,0.96 +81.787,1,15,0.3,2,0,0.972,1.0,0.945 +77.374,1,15,0.3,2,1,0.963,1.0,0.929 +83.046,1,15,0.3,2,2,0.958,1.0,0.919 +372.13,1,20,0.3,2,0,0.913,1.0,0.84 +271.56,1,20,0.3,2,1,0.933,1.0,0.874 +246.234,1,20,0.3,2,2,0.884,1.0,0.793 +0.19,1,3,0.4,2,0,1.0,1.0,1.0 +0.19,1,3,0.4,2,1,1.0,1.0,1.0 +0.153,1,3,0.4,2,2,1.0,1.0,1.0 +0.222,1,3,0.4,2,3,1.0,1.0,1.0 +0.162,1,3,0.4,2,4,1.0,1.0,1.0 +0.23,1,3,0.4,2,5,1.0,1.0,1.0 +0.235,1,3,0.4,2,6,1.0,1.0,1.0 +0.221,1,3,0.4,2,7,1.0,1.0,1.0 +0.228,1,3,0.4,2,8,1.0,1.0,1.0 +0.206,1,3,0.4,2,9,1.0,1.0,1.0 +0.462,1,4,0.4,2,0,1.0,1.0,1.0 +0.646,1,4,0.4,2,1,1.0,1.0,1.0 +0.414,1,4,0.4,2,2,1.0,1.0,1.0 +0.674,1,4,0.4,2,3,1.0,1.0,1.0 +0.472,1,4,0.4,2,4,1.0,1.0,1.0 +0.622,1,4,0.4,2,5,0.923,0.857,1.0 +0.541,1,4,0.4,2,6,1.0,1.0,1.0 +0.495,1,4,0.4,2,7,1.0,1.0,1.0 +0.514,1,4,0.4,2,8,1.0,1.0,1.0 +0.728,1,4,0.4,2,9,1.0,1.0,1.0 +1.112,1,5,0.4,2,0,1.0,1.0,1.0 +1.929,1,5,0.4,2,1,1.0,1.0,1.0 +1.463,1,5,0.4,2,2,1.0,1.0,1.0 +1.328,1,5,0.4,2,3,1.0,1.0,1.0 +1.133,1,5,0.4,2,4,1.0,1.0,1.0 +1.17,1,5,0.4,2,5,1.0,1.0,1.0 +1.133,1,5,0.4,2,6,1.0,1.0,1.0 +1.158,1,5,0.4,2,7,1.0,1.0,1.0 +2.522,1,5,0.4,2,8,1.0,1.0,1.0 +1.004,1,5,0.4,2,9,1.0,1.0,1.0 +2.917,1,6,0.4,2,0,1.0,1.0,1.0 +2.933,1,6,0.4,2,1,1.0,1.0,1.0 +3.384,1,6,0.4,2,2,1.0,1.0,1.0 +2.534,1,6,0.4,2,3,1.0,1.0,1.0 +2.527,1,6,0.4,2,4,1.0,1.0,1.0 +2.017,1,6,0.4,2,5,1.0,1.0,1.0 +2.605,1,6,0.4,2,6,0.966,1.0,0.933 +2.7,1,6,0.4,2,7,1.0,1.0,1.0 +2.777,1,6,0.4,2,8,1.0,1.0,1.0 +2.13,1,6,0.4,2,9,1.0,1.0,1.0 +30.231,1,10,0.4,2,0,0.976,1.0,0.952 +12.204,1,10,0.4,2,1,0.98,1.0,0.96 +19.849,1,10,0.4,2,2,1.0,1.0,1.0 +127.966,1,15,0.4,2,0,0.94,1.0,0.886 +91.451,1,15,0.4,2,1,0.857,1.0,0.75 +123.172,1,15,0.4,2,2,0.923,1.0,0.857 +259.487,1,20,0.4,2,0,0.685,1.0,0.521 +373.08,1,20,0.4,2,1,0.727,1.0,0.571 +302.251,1,20,0.4,2,2,0.732,1.0,0.577 +3.914,0,3,0.1,2,0,1.0,1.0,1.0 +4.733,0,3,0.1,2,1,1.0,1.0,1.0 +4.274,0,3,0.1,2,2,1.0,1.0,1.0 +4.52,0,3,0.1,2,3,1.0,1.0,1.0 +4.1,0,3,0.1,2,4,1.0,1.0,1.0 +4.176,0,3,0.1,2,5,1.0,1.0,1.0 +4.2,0,3,0.1,2,6,1.0,1.0,1.0 +3.899,0,3,0.1,2,7,1.0,1.0,1.0 +4.445,0,3,0.1,2,8,1.0,1.0,1.0 +4.155,0,3,0.1,2,9,1.0,1.0,1.0 +4.596,0,4,0.1,2,0,1.0,1.0,1.0 +4.082,0,4,0.1,2,1,1.0,1.0,1.0 +4.643,0,4,0.1,2,2,1.0,1.0,1.0 +4.139,0,4,0.1,2,3,1.0,1.0,1.0 +4.442,0,4,0.1,2,4,1.0,1.0,1.0 +4.69,0,4,0.1,2,5,1.0,1.0,1.0 +4.912,0,4,0.1,2,6,1.0,1.0,1.0 +4.036,0,4,0.1,2,7,1.0,1.0,1.0 +4.485,0,4,0.1,2,8,1.0,1.0,1.0 +4.61,0,4,0.1,2,9,1.0,1.0,1.0 +4.644,0,5,0.1,2,0,1.0,1.0,1.0 +4.86,0,5,0.1,2,1,1.0,1.0,1.0 +5.355,0,5,0.1,2,2,1.0,1.0,1.0 +5.201,0,5,0.1,2,3,1.0,1.0,1.0 +5.101,0,5,0.1,2,4,1.0,1.0,1.0 +5.815,0,5,0.1,2,5,1.0,1.0,1.0 +5.946,0,5,0.1,2,6,1.0,1.0,1.0 +5.379,0,5,0.1,2,7,1.0,1.0,1.0 +5.101,0,5,0.1,2,8,1.0,1.0,1.0 +4.922,0,5,0.1,2,9,1.0,1.0,1.0 +6.291,0,6,0.1,2,0,0.889,1.0,0.8 +5.751,0,6,0.1,2,1,1.0,1.0,1.0 +5.491,0,6,0.1,2,2,1.0,1.0,1.0 +6.649,0,6,0.1,2,3,1.0,1.0,1.0 +6.203,0,6,0.1,2,4,1.0,1.0,1.0 +5.805,0,6,0.1,2,5,1.0,1.0,1.0 +6.65,0,6,0.1,2,6,1.0,1.0,1.0 +6.331,0,6,0.1,2,7,1.0,1.0,1.0 +5.915,0,6,0.1,2,8,1.0,1.0,1.0 +5.978,0,6,0.1,2,9,1.0,1.0,1.0 +18.99,0,10,0.1,2,0,1.0,1.0,1.0 +14.186,0,10,0.1,2,1,1.0,1.0,1.0 +16.813,0,10,0.1,2,2,1.0,1.0,1.0 +47.531,0,15,0.1,2,0,1.0,1.0,1.0 +42.783,0,15,0.1,2,1,1.0,1.0,1.0 +47.987,0,15,0.1,2,2,1.0,1.0,1.0 +129.567,0,20,0.1,2,0,1.0,1.0,1.0 +122.603,0,20,0.1,2,1,1.0,1.0,1.0 +123.766,0,20,0.1,2,2,1.0,1.0,1.0 +4.109,0,3,0.2,2,0,1.0,1.0,1.0 +4.322,0,3,0.2,2,1,1.0,1.0,1.0 +4.493,0,3,0.2,2,2,1.0,1.0,1.0 +4.063,0,3,0.2,2,3,1.0,1.0,1.0 +4.66,0,3,0.2,2,4,1.0,1.0,1.0 +3.962,0,3,0.2,2,5,1.0,1.0,1.0 +3.922,0,3,0.2,2,6,1.0,1.0,1.0 +4.666,0,3,0.2,2,7,1.0,1.0,1.0 +3.794,0,3,0.2,2,8,1.0,1.0,1.0 +4.016,0,3,0.2,2,9,1.0,1.0,1.0 +4.938,0,4,0.2,2,0,1.0,1.0,1.0 +4.976,0,4,0.2,2,1,1.0,1.0,1.0 +4.782,0,4,0.2,2,2,1.0,1.0,1.0 +4.323,0,4,0.2,2,3,1.0,1.0,1.0 +4.76,0,4,0.2,2,4,1.0,1.0,1.0 +4.343,0,4,0.2,2,5,1.0,1.0,1.0 +4.481,0,4,0.2,2,6,1.0,1.0,1.0 +5.737,0,4,0.2,2,7,1.0,1.0,1.0 +5.848,0,4,0.2,2,8,1.0,1.0,1.0 +4.983,0,4,0.2,2,9,1.0,1.0,1.0 +5.976,0,5,0.2,2,0,1.0,1.0,1.0 +5.914,0,5,0.2,2,1,1.0,1.0,1.0 +5.258,0,5,0.2,2,2,1.0,1.0,1.0 +5.91,0,5,0.2,2,3,1.0,1.0,1.0 +5.601,0,5,0.2,2,4,1.0,1.0,1.0 +5.351,0,5,0.2,2,5,1.0,1.0,1.0 +5.129,0,5,0.2,2,6,1.0,1.0,1.0 +4.733,0,5,0.2,2,7,1.0,1.0,1.0 +5.462,0,5,0.2,2,8,1.0,1.0,1.0 +4.615,0,5,0.2,2,9,1.0,1.0,1.0 +7.951,0,6,0.2,2,0,1.0,1.0,1.0 +7.09,0,6,0.2,2,1,1.0,1.0,1.0 +7.129,0,6,0.2,2,2,1.0,1.0,1.0 +6.375,0,6,0.2,2,3,1.0,1.0,1.0 +6.744,0,6,0.2,2,4,1.0,1.0,1.0 +5.767,0,6,0.2,2,5,1.0,1.0,1.0 +5.896,0,6,0.2,2,6,1.0,1.0,1.0 +6.586,0,6,0.2,2,7,1.0,1.0,1.0 +6.999,0,6,0.2,2,8,1.0,1.0,1.0 +7.048,0,6,0.2,2,9,1.0,1.0,1.0 +16.39,0,10,0.2,2,0,1.0,1.0,1.0 +17.607,0,10,0.2,2,1,1.0,1.0,1.0 +18.24,0,10,0.2,2,2,1.0,1.0,1.0 +62.994,0,15,0.2,2,0,1.0,1.0,1.0 +56.199,0,15,0.2,2,1,1.0,1.0,1.0 +60.651,0,15,0.2,2,2,1.0,1.0,1.0 +165.157,0,20,0.2,2,0,1.0,1.0,1.0 +147.716,0,20,0.2,2,1,1.0,1.0,1.0 +165.653,0,20,0.2,2,2,1.0,1.0,1.0 +4.22,0,3,0.3,2,0,1.0,1.0,1.0 +4.435,0,3,0.3,2,1,1.0,1.0,1.0 +3.979,0,3,0.3,2,2,1.0,1.0,1.0 +3.641,0,3,0.3,2,3,1.0,1.0,1.0 +3.721,0,3,0.3,2,4,1.0,1.0,1.0 +4.117,0,3,0.3,2,5,1.0,1.0,1.0 +3.657,0,3,0.3,2,6,1.0,1.0,1.0 +3.888,0,3,0.3,2,7,1.0,1.0,1.0 +3.619,0,3,0.3,2,8,1.0,1.0,1.0 +4.121,0,3,0.3,2,9,1.0,1.0,1.0 +4.378,0,4,0.3,2,0,1.0,1.0,1.0 +4.845,0,4,0.3,2,1,1.0,1.0,1.0 +4.185,0,4,0.3,2,2,1.0,1.0,1.0 +4.783,0,4,0.3,2,3,1.0,1.0,1.0 +5.361,0,4,0.3,2,4,1.0,1.0,1.0 +4.671,0,4,0.3,2,5,1.0,1.0,1.0 +4.59,0,4,0.3,2,6,1.0,1.0,1.0 +5.01,0,4,0.3,2,7,1.0,1.0,1.0 +4.38,0,4,0.3,2,8,1.0,1.0,1.0 +4.423,0,4,0.3,2,9,1.0,1.0,1.0 +5.913,0,5,0.3,2,0,0.909,1.0,0.833 +5.251,0,5,0.3,2,1,1.0,1.0,1.0 +5.134,0,5,0.3,2,2,1.0,1.0,1.0 +5.608,0,5,0.3,2,3,1.0,1.0,1.0 +5.707,0,5,0.3,2,4,1.0,1.0,1.0 +5.439,0,5,0.3,2,5,1.0,1.0,1.0 +4.947,0,5,0.3,2,6,1.0,1.0,1.0 +5.969,0,5,0.3,2,7,1.0,1.0,1.0 +5.837,0,5,0.3,2,8,1.0,1.0,1.0 +5.493,0,5,0.3,2,9,1.0,1.0,1.0 +6.878,0,6,0.3,2,0,1.0,1.0,1.0 +7.121,0,6,0.3,2,1,1.0,1.0,1.0 +7.131,0,6,0.3,2,2,1.0,1.0,1.0 +7.337,0,6,0.3,2,3,1.0,1.0,1.0 +7.527,0,6,0.3,2,4,0.941,1.0,0.889 +7.248,0,6,0.3,2,5,1.0,1.0,1.0 +6.775,0,6,0.3,2,6,1.0,1.0,1.0 +6.952,0,6,0.3,2,7,1.0,1.0,1.0 +7.454,0,6,0.3,2,8,1.0,1.0,1.0 +7.835,0,6,0.3,2,9,1.0,1.0,1.0 +17.744,0,10,0.3,2,0,1.0,1.0,1.0 +18.538,0,10,0.3,2,1,1.0,1.0,1.0 +20.173,0,10,0.3,2,2,1.0,1.0,1.0 +66.885,0,15,0.3,2,0,1.0,1.0,1.0 +63.485,0,15,0.3,2,1,1.0,1.0,1.0 +60.502,0,15,0.3,2,2,1.0,1.0,1.0 +177.964,0,20,0.3,2,0,1.0,1.0,1.0 +175.469,0,20,0.3,2,1,1.0,1.0,1.0 +191.346,0,20,0.3,2,2,1.0,1.0,1.0 +3.797,0,3,0.4,2,0,1.0,1.0,1.0 +4.005,0,3,0.4,2,1,1.0,1.0,1.0 +3.469,0,3,0.4,2,2,1.0,1.0,1.0 +3.623,0,3,0.4,2,3,1.0,1.0,1.0 +3.849,0,3,0.4,2,4,1.0,1.0,1.0 +3.703,0,3,0.4,2,5,1.0,1.0,1.0 +3.963,0,3,0.4,2,6,1.0,1.0,1.0 +3.565,0,3,0.4,2,7,1.0,1.0,1.0 +3.561,0,3,0.4,2,8,1.0,1.0,1.0 +3.676,0,3,0.4,2,9,1.0,1.0,1.0 +4.196,0,4,0.4,2,0,1.0,1.0,1.0 +4.139,0,4,0.4,2,1,1.0,1.0,1.0 +3.917,0,4,0.4,2,2,1.0,1.0,1.0 +4.196,0,4,0.4,2,3,1.0,1.0,1.0 +4.01,0,4,0.4,2,4,1.0,1.0,1.0 +4.072,0,4,0.4,2,5,1.0,1.0,1.0 +4.359,0,4,0.4,2,6,1.0,1.0,1.0 +4.133,0,4,0.4,2,7,1.0,1.0,1.0 +4.0,0,4,0.4,2,8,1.0,1.0,1.0 +4.226,0,4,0.4,2,9,1.0,1.0,1.0 +4.957,0,5,0.4,2,0,1.0,1.0,1.0 +5.066,0,5,0.4,2,1,1.0,1.0,1.0 +5.011,0,5,0.4,2,2,1.0,1.0,1.0 +5.018,0,5,0.4,2,3,1.0,1.0,1.0 +5.115,0,5,0.4,2,4,1.0,1.0,1.0 +4.97,0,5,0.4,2,5,1.0,1.0,1.0 +4.78,0,5,0.4,2,6,1.0,1.0,1.0 +5.139,0,5,0.4,2,7,1.0,1.0,1.0 +5.471,0,5,0.4,2,8,1.0,1.0,1.0 +4.995,0,5,0.4,2,9,1.0,1.0,1.0 +6.591,0,6,0.4,2,0,1.0,1.0,1.0 +6.558,0,6,0.4,2,1,1.0,1.0,1.0 +6.803,0,6,0.4,2,2,1.0,1.0,1.0 +6.485,0,6,0.4,2,3,1.0,1.0,1.0 +5.938,0,6,0.4,2,4,1.0,1.0,1.0 +6.274,0,6,0.4,2,5,1.0,1.0,1.0 +6.621,0,6,0.4,2,6,1.0,1.0,1.0 +6.392,0,6,0.4,2,7,1.0,1.0,1.0 +6.753,0,6,0.4,2,8,1.0,1.0,1.0 +6.613,0,6,0.4,2,9,1.0,1.0,1.0 +21.158,0,10,0.4,2,0,1.0,1.0,1.0 +15.645,0,10,0.4,2,1,1.0,1.0,1.0 +19.941,0,10,0.4,2,2,1.0,1.0,1.0 +67.137,0,15,0.4,2,0,1.0,1.0,1.0 +76.037,0,15,0.4,2,1,1.0,1.0,1.0 +68.206,0,15,0.4,2,2,1.0,1.0,1.0 +209.516,0,20,0.4,2,0,0.961,1.0,0.925 +187.045,0,20,0.4,2,1,0.87,1.0,0.769 +224.279,0,20,0.4,2,2,0.96,1.0,0.923 +0.613,1,3,0.1,4,0,1.0,1.0,1.0 +0.609,1,3,0.1,4,1,0.667,0.5,1.0 +0.613,1,3,0.1,4,2,0.8,0.667,1.0 +0.606,1,3,0.1,4,3,0.8,0.667,1.0 +0.54,1,3,0.1,4,4,0.8,0.667,1.0 +0.727,1,3,0.1,4,5,1.0,1.0,1.0 +0.665,1,3,0.1,4,6,0.8,0.667,1.0 +0.618,1,3,0.1,4,7,1.0,1.0,1.0 +0.619,1,3,0.1,4,8,0.75,0.6,1.0 +0.504,1,3,0.1,4,9,0.667,0.5,1.0 +1.911,1,4,0.1,4,0,0.889,0.8,1.0 +1.254,1,4,0.1,4,1,0.571,0.4,1.0 +1.682,1,4,0.1,4,2,1.0,1.0,1.0 +1.512,1,4,0.1,4,3,0.667,0.5,1.0 +1.308,1,4,0.1,4,4,0.667,0.5,1.0 +1.584,1,4,0.1,4,5,0.571,0.4,1.0 +1.593,1,4,0.1,4,6,0.889,0.8,1.0 +1.603,1,4,0.1,4,7,0.571,0.4,1.0 +1.331,1,4,0.1,4,8,0.8,0.667,1.0 +1.934,1,4,0.1,4,9,0.833,0.714,1.0 +2.635,1,5,0.1,4,0,0.857,0.75,1.0 +4.108,1,5,0.1,4,1,0.778,0.636,1.0 +3.063,1,5,0.1,4,2,0.727,0.571,1.0 +3.046,1,5,0.1,4,3,0.727,0.571,1.0 +3.021,1,5,0.1,4,4,0.8,0.667,1.0 +2.904,1,5,0.1,4,5,0.75,0.6,1.0 +3.643,1,5,0.1,4,6,0.667,0.5,1.0 +3.079,1,5,0.1,4,7,0.8,0.667,1.0 +3.013,1,5,0.1,4,8,0.889,0.8,1.0 +3.776,1,5,0.1,4,9,0.857,0.75,1.0 +5.269,1,6,0.1,4,0,0.8,0.667,1.0 +5.795,1,6,0.1,4,1,0.667,0.5,1.0 +4.383,1,6,0.1,4,2,0.727,0.571,1.0 +4.819,1,6,0.1,4,3,0.615,0.444,1.0 +6.401,1,6,0.1,4,4,0.8,0.667,1.0 +5.537,1,6,0.1,4,5,0.8,0.667,1.0 +6.634,1,6,0.1,4,6,0.714,0.556,1.0 +5.375,1,6,0.1,4,7,0.824,0.7,1.0 +5.291,1,6,0.1,4,8,0.909,0.833,1.0 +6.153,1,6,0.1,4,9,0.75,0.6,1.0 +32.928,1,10,0.1,4,0,0.688,0.524,1.0 +34.674,1,10,0.1,4,1,0.821,0.696,1.0 +30.713,1,10,0.1,4,2,0.774,0.632,1.0 +160.622,1,15,0.1,4,0,0.833,0.714,1.0 +141.218,1,15,0.1,4,1,0.717,0.559,1.0 +156.825,1,15,0.1,4,2,0.787,0.649,1.0 +0.582,1,3,0.2,4,0,0.857,0.75,1.0 +0.64,1,3,0.2,4,1,1.0,1.0,1.0 +0.551,1,3,0.2,4,2,0.8,0.667,1.0 +0.545,1,3,0.2,4,3,0.8,0.667,1.0 +0.603,1,3,0.2,4,4,0.75,0.6,1.0 +0.63,1,3,0.2,4,5,0.667,0.5,1.0 +0.583,1,3,0.2,4,6,0.857,0.75,1.0 +0.614,1,3,0.2,4,7,1.0,1.0,1.0 +0.498,1,3,0.2,4,8,0.8,0.667,1.0 +0.597,1,3,0.2,4,9,0.857,0.75,1.0 +1.09,1,4,0.2,4,0,1.0,1.0,1.0 +1.332,1,4,0.2,4,1,0.857,0.75,1.0 +1.58,1,4,0.2,4,2,0.857,0.75,1.0 +1.321,1,4,0.2,4,3,0.75,0.6,1.0 +2.033,1,4,0.2,4,4,0.824,0.7,1.0 +1.562,1,4,0.2,4,5,1.0,1.0,1.0 +1.982,1,4,0.2,4,6,0.857,0.75,1.0 +1.194,1,4,0.2,4,7,1.0,1.0,1.0 +1.478,1,4,0.2,4,8,1.0,1.0,1.0 +1.104,1,4,0.2,4,9,1.0,1.0,1.0 +2.701,1,5,0.2,4,0,1.0,1.0,1.0 +3.362,1,5,0.2,4,1,0.875,0.778,1.0 +3.601,1,5,0.2,4,2,0.769,0.625,1.0 +3.415,1,5,0.2,4,3,0.769,0.625,1.0 +2.901,1,5,0.2,4,4,0.923,0.857,1.0 +3.033,1,5,0.2,4,5,0.933,0.875,1.0 +2.537,1,5,0.2,4,6,1.0,1.0,1.0 +3.13,1,5,0.2,4,7,0.545,0.375,1.0 +3.82,1,5,0.2,4,8,0.857,0.75,1.0 +2.683,1,5,0.2,4,9,0.909,0.833,1.0 +6.741,1,6,0.2,4,0,0.9,0.818,1.0 +5.46,1,6,0.2,4,1,0.933,0.875,1.0 +6.838,1,6,0.2,4,2,0.778,0.636,1.0 +6.126,1,6,0.2,4,3,0.778,0.636,1.0 +4.915,1,6,0.2,4,4,0.8,0.667,1.0 +4.452,1,6,0.2,4,5,0.833,0.714,1.0 +7.968,1,6,0.2,4,6,0.696,0.533,1.0 +7.348,1,6,0.2,4,7,0.706,0.545,1.0 +6.326,1,6,0.2,4,8,0.7,0.538,1.0 +7.081,1,6,0.2,4,9,1.0,1.0,1.0 +52.525,1,10,0.2,4,0,0.837,0.72,1.0 +45.067,1,10,0.2,4,1,0.898,0.815,1.0 +41.784,1,10,0.2,4,2,0.833,0.714,1.0 +190.81,1,15,0.2,4,0,0.932,0.872,1.0 +163.946,1,15,0.2,4,1,0.921,0.891,0.953 +219.373,1,15,0.2,4,2,0.932,0.873,1.0 +0.536,1,3,0.3,4,0,0.8,0.667,1.0 +0.499,1,3,0.3,4,1,0.667,0.5,1.0 +0.679,1,3,0.3,4,2,1.0,1.0,1.0 +0.488,1,3,0.3,4,3,1.0,1.0,1.0 +0.508,1,3,0.3,4,4,1.0,1.0,1.0 +0.547,1,3,0.3,4,5,0.8,0.667,1.0 +0.581,1,3,0.3,4,6,0.667,0.5,1.0 +0.596,1,3,0.3,4,7,1.0,1.0,1.0 +0.661,1,3,0.3,4,8,0.857,0.75,1.0 +0.566,1,3,0.3,4,9,0.8,0.667,1.0 +1.918,1,4,0.3,4,0,0.889,0.8,1.0 +1.744,1,4,0.3,4,1,0.833,0.714,1.0 +1.616,1,4,0.3,4,2,0.923,0.857,1.0 +1.122,1,4,0.3,4,3,0.8,0.667,1.0 +1.699,1,4,0.3,4,4,0.909,0.833,1.0 +1.982,1,4,0.3,4,5,0.8,0.667,1.0 +1.733,1,4,0.3,4,6,0.833,0.714,1.0 +1.592,1,4,0.3,4,7,0.889,0.8,1.0 +1.435,1,4,0.3,4,8,0.889,0.8,1.0 +2.049,1,4,0.3,4,9,0.933,0.875,1.0 +3.507,1,5,0.3,4,0,0.923,0.857,1.0 +3.983,1,5,0.3,4,1,0.737,0.583,1.0 +5.556,1,5,0.3,4,2,0.917,0.846,1.0 +3.066,1,5,0.3,4,3,0.933,0.875,1.0 +4.202,1,5,0.3,4,4,0.9,0.818,1.0 +3.499,1,5,0.3,4,5,0.923,0.857,1.0 +3.083,1,5,0.3,4,6,0.8,0.667,1.0 +6.038,1,5,0.3,4,7,0.833,0.714,1.0 +4.173,1,5,0.3,4,8,0.769,0.625,1.0 +3.13,1,5,0.3,4,9,0.889,0.8,1.0 +8.128,1,6,0.3,4,0,0.833,0.714,1.0 +6.663,1,6,0.3,4,1,0.87,0.769,1.0 +7.726,1,6,0.3,4,2,0.88,0.786,1.0 +8.416,1,6,0.3,4,3,0.917,0.846,1.0 +6.013,1,6,0.3,4,4,0.737,0.583,1.0 +9.416,1,6,0.3,4,5,0.897,0.812,1.0 +5.963,1,6,0.3,4,6,0.714,0.556,1.0 +5.789,1,6,0.3,4,7,0.947,0.9,1.0 +8.601,1,6,0.3,4,8,0.889,0.8,1.0 +6.411,1,6,0.3,4,9,0.818,0.692,1.0 +47.81,1,10,0.3,4,0,0.943,0.893,1.0 +59.714,1,10,0.3,4,1,0.848,0.8,0.903 +45.597,1,10,0.3,4,2,0.852,0.742,1.0 +148.935,1,15,0.3,4,0,0.8,0.667,1.0 +131.963,1,15,0.3,4,1,0.708,0.548,1.0 +153.059,1,15,0.3,4,2,0.833,0.714,1.0 +0.642,1,3,0.4,4,0,0.889,0.8,1.0 +0.558,1,3,0.4,4,1,0.857,0.75,1.0 +0.598,1,3,0.4,4,2,0.75,0.6,1.0 +0.706,1,3,0.4,4,3,0.857,0.75,1.0 +0.65,1,3,0.4,4,4,0.857,0.75,1.0 +0.598,1,3,0.4,4,5,1.0,1.0,1.0 +0.561,1,3,0.4,4,6,0.8,0.667,1.0 +0.567,1,3,0.4,4,7,0.8,0.667,1.0 +0.639,1,3,0.4,4,8,0.889,0.8,1.0 +0.519,1,3,0.4,4,9,1.0,1.0,1.0 +1.783,1,4,0.4,4,0,0.923,0.857,1.0 +1.951,1,4,0.4,4,1,0.933,0.875,1.0 +1.651,1,4,0.4,4,2,1.0,1.0,1.0 +1.434,1,4,0.4,4,3,0.75,0.6,1.0 +1.665,1,4,0.4,4,4,1.0,1.0,1.0 +1.28,1,4,0.4,4,5,0.857,0.75,1.0 +2.231,1,4,0.4,4,6,0.889,0.8,1.0 +2.368,1,4,0.4,4,7,0.889,0.8,1.0 +1.298,1,4,0.4,4,8,0.667,0.5,1.0 +2.352,1,4,0.4,4,9,0.833,0.714,1.0 +4.486,1,5,0.4,4,0,0.778,0.636,1.0 +4.287,1,5,0.4,4,1,0.842,0.727,1.0 +7.605,1,5,0.4,4,2,0.909,0.833,1.0 +3.526,1,5,0.4,4,3,0.857,0.75,1.0 +5.554,1,5,0.4,4,4,0.966,0.933,1.0 +3.152,1,5,0.4,4,5,0.778,0.636,1.0 +5.064,1,5,0.4,4,6,0.8,0.667,1.0 +3.705,1,5,0.4,4,7,0.714,0.556,1.0 +4.212,1,5,0.4,4,8,0.8,0.667,1.0 +5.417,1,5,0.4,4,9,0.737,0.583,1.0 +8.794,1,6,0.4,4,0,0.815,0.688,1.0 +10.26,1,6,0.4,4,1,0.889,0.8,1.0 +6.887,1,6,0.4,4,2,0.929,0.867,1.0 +11.176,1,6,0.4,4,3,0.875,0.778,1.0 +6.964,1,6,0.4,4,4,0.706,0.545,1.0 +9.482,1,6,0.4,4,5,0.88,0.786,1.0 +8.018,1,6,0.4,4,6,0.889,0.8,1.0 +9.064,1,6,0.4,4,7,0.815,0.688,1.0 +8.092,1,6,0.4,4,8,0.938,0.882,1.0 +12.492,1,6,0.4,4,9,0.857,0.75,1.0 +64.055,1,10,0.4,4,0,0.972,0.946,1.0 +72.067,1,10,0.4,4,1,0.927,0.95,0.905 +47.943,1,10,0.4,4,2,0.892,0.967,0.829 +224.389,1,15,0.4,4,0,0.691,0.923,0.552 +290.023,1,15,0.4,4,1,0.815,0.948,0.714 +240.671,1,15,0.4,4,2,0.794,0.945,0.684 +5.48,0,3,0.1,4,0,1.0,1.0,1.0 +5.494,0,3,0.1,4,1,1.0,1.0,1.0 +6.251,0,3,0.1,4,2,1.0,1.0,1.0 +5.389,0,3,0.1,4,3,1.0,1.0,1.0 +5.021,0,3,0.1,4,4,1.0,1.0,1.0 +5.885,0,3,0.1,4,5,1.0,1.0,1.0 +5.243,0,3,0.1,4,6,1.0,1.0,1.0 +5.528,0,3,0.1,4,7,1.0,1.0,1.0 +5.356,0,3,0.1,4,8,1.0,1.0,1.0 +5.059,0,3,0.1,4,9,1.0,1.0,1.0 +6.948,0,4,0.1,4,0,1.0,1.0,1.0 +6.797,0,4,0.1,4,1,1.0,1.0,1.0 +7.481,0,4,0.1,4,2,1.0,1.0,1.0 +6.589,0,4,0.1,4,3,1.0,1.0,1.0 +6.907,0,4,0.1,4,4,1.0,1.0,1.0 +7.44,0,4,0.1,4,5,1.0,1.0,1.0 +7.511,0,4,0.1,4,6,1.0,1.0,1.0 +6.949,0,4,0.1,4,7,1.0,1.0,1.0 +7.042,0,4,0.1,4,8,1.0,1.0,1.0 +7.858,0,4,0.1,4,9,1.0,1.0,1.0 +9.522,0,5,0.1,4,0,1.0,1.0,1.0 +10.646,0,5,0.1,4,1,1.0,1.0,1.0 +9.245,0,5,0.1,4,2,1.0,1.0,1.0 +9.782,0,5,0.1,4,3,1.0,1.0,1.0 +9.778,0,5,0.1,4,4,1.0,1.0,1.0 +9.432,0,5,0.1,4,5,1.0,1.0,1.0 +9.69,0,5,0.1,4,6,1.0,1.0,1.0 +9.908,0,5,0.1,4,7,1.0,1.0,1.0 +9.593,0,5,0.1,4,8,1.0,1.0,1.0 +9.94,0,5,0.1,4,9,1.0,1.0,1.0 +12.798,0,6,0.1,4,0,1.0,1.0,1.0 +14.017,0,6,0.1,4,1,1.0,1.0,1.0 +12.614,0,6,0.1,4,2,1.0,1.0,1.0 +12.432,0,6,0.1,4,3,1.0,1.0,1.0 +13.906,0,6,0.1,4,4,1.0,1.0,1.0 +13.621,0,6,0.1,4,5,1.0,1.0,1.0 +13.135,0,6,0.1,4,6,1.0,1.0,1.0 +13.553,0,6,0.1,4,7,1.0,1.0,1.0 +13.528,0,6,0.1,4,8,1.0,1.0,1.0 +13.694,0,6,0.1,4,9,1.0,1.0,1.0 +39.284,0,10,0.1,4,0,1.0,1.0,1.0 +42.762,0,10,0.1,4,1,1.0,1.0,1.0 +40.723,0,10,0.1,4,2,1.0,1.0,1.0 +138.874,0,15,0.1,4,0,1.0,1.0,1.0 +123.908,0,15,0.1,4,1,1.0,1.0,1.0 +130.094,0,15,0.1,4,2,0.884,1.0,0.792 +5.054,0,3,0.2,4,0,1.0,1.0,1.0 +5.288,0,3,0.2,4,1,1.0,1.0,1.0 +5.728,0,3,0.2,4,2,1.0,1.0,1.0 +5.187,0,3,0.2,4,3,1.0,1.0,1.0 +5.174,0,3,0.2,4,4,1.0,1.0,1.0 +5.34,0,3,0.2,4,5,1.0,1.0,1.0 +5.152,0,3,0.2,4,6,1.0,1.0,1.0 +5.184,0,3,0.2,4,7,1.0,1.0,1.0 +5.174,0,3,0.2,4,8,1.0,1.0,1.0 +5.138,0,3,0.2,4,9,1.0,1.0,1.0 +6.888,0,4,0.2,4,0,1.0,1.0,1.0 +6.845,0,4,0.2,4,1,1.0,1.0,1.0 +7.196,0,4,0.2,4,2,1.0,1.0,1.0 +7.401,0,4,0.2,4,3,1.0,1.0,1.0 +7.617,0,4,0.2,4,4,1.0,1.0,1.0 +7.122,0,4,0.2,4,5,1.0,1.0,1.0 +7.41,0,4,0.2,4,6,1.0,1.0,1.0 +7.008,0,4,0.2,4,7,1.0,1.0,1.0 +7.202,0,4,0.2,4,8,1.0,1.0,1.0 +7.116,0,4,0.2,4,9,1.0,1.0,1.0 +9.625,0,5,0.2,4,0,1.0,1.0,1.0 +10.153,0,5,0.2,4,1,1.0,1.0,1.0 +9.764,0,5,0.2,4,2,1.0,1.0,1.0 +9.461,0,5,0.2,4,3,1.0,1.0,1.0 +10.19,0,5,0.2,4,4,1.0,1.0,1.0 +9.681,0,5,0.2,4,5,1.0,1.0,1.0 +9.766,0,5,0.2,4,6,1.0,1.0,1.0 +9.453,0,5,0.2,4,7,1.0,1.0,1.0 +10.224,0,5,0.2,4,8,1.0,1.0,1.0 +9.766,0,5,0.2,4,9,1.0,1.0,1.0 +14.99,0,6,0.2,4,0,1.0,1.0,1.0 +13.597,0,6,0.2,4,1,1.0,1.0,1.0 +13.449,0,6,0.2,4,2,1.0,1.0,1.0 +14.786,0,6,0.2,4,3,1.0,1.0,1.0 +14.101,0,6,0.2,4,4,1.0,1.0,1.0 +13.999,0,6,0.2,4,5,1.0,1.0,1.0 +14.907,0,6,0.2,4,6,1.0,1.0,1.0 +14.218,0,6,0.2,4,7,1.0,1.0,1.0 +15.086,0,6,0.2,4,8,1.0,1.0,1.0 +16.234,0,6,0.2,4,9,1.0,1.0,1.0 +46.968,0,10,0.2,4,0,1.0,1.0,1.0 +45.725,0,10,0.2,4,1,0.872,1.0,0.773 +45.156,0,10,0.2,4,2,1.0,1.0,1.0 +145.535,0,15,0.2,4,0,0.935,1.0,0.878 +135.002,0,15,0.2,4,1,0.868,1.0,0.767 +140.394,0,15,0.2,4,2,0.884,1.0,0.792 +4.555,0,3,0.3,4,0,1.0,1.0,1.0 +4.555,0,3,0.3,4,1,1.0,1.0,1.0 +4.659,0,3,0.3,4,2,1.0,1.0,1.0 +4.569,0,3,0.3,4,3,1.0,1.0,1.0 +4.773,0,3,0.3,4,4,1.0,1.0,1.0 +4.503,0,3,0.3,4,5,1.0,1.0,1.0 +5.04,0,3,0.3,4,6,1.0,1.0,1.0 +4.669,0,3,0.3,4,7,1.0,1.0,1.0 +4.603,0,3,0.3,4,8,1.0,1.0,1.0 +4.589,0,3,0.3,4,9,1.0,1.0,1.0 +6.521,0,4,0.3,4,0,1.0,1.0,1.0 +6.473,0,4,0.3,4,1,1.0,1.0,1.0 +6.707,0,4,0.3,4,2,1.0,1.0,1.0 +5.876,0,4,0.3,4,3,1.0,1.0,1.0 +6.361,0,4,0.3,4,4,1.0,1.0,1.0 +6.883,0,4,0.3,4,5,1.0,1.0,1.0 +6.619,0,4,0.3,4,6,1.0,1.0,1.0 +6.253,0,4,0.3,4,7,1.0,1.0,1.0 +6.469,0,4,0.3,4,8,1.0,1.0,1.0 +6.855,0,4,0.3,4,9,1.0,1.0,1.0 +8.817,0,5,0.3,4,0,1.0,1.0,1.0 +9.007,0,5,0.3,4,1,1.0,1.0,1.0 +10.312,0,5,0.3,4,2,1.0,1.0,1.0 +8.901,0,5,0.3,4,3,1.0,1.0,1.0 +9.674,0,5,0.3,4,4,1.0,1.0,1.0 +9.179,0,5,0.3,4,5,1.0,1.0,1.0 +8.786,0,5,0.3,4,6,1.0,1.0,1.0 +9.675,0,5,0.3,4,7,1.0,1.0,1.0 +8.888,0,5,0.3,4,8,1.0,1.0,1.0 +8.351,0,5,0.3,4,9,1.0,1.0,1.0 +13.022,0,6,0.3,4,0,1.0,1.0,1.0 +12.967,0,6,0.3,4,1,1.0,1.0,1.0 +13.528,0,6,0.3,4,2,1.0,1.0,1.0 +13.596,0,6,0.3,4,3,1.0,1.0,1.0 +11.576,0,6,0.3,4,4,1.0,1.0,1.0 +13.883,0,6,0.3,4,5,1.0,1.0,1.0 +11.712,0,6,0.3,4,6,1.0,1.0,1.0 +13.224,0,6,0.3,4,7,1.0,1.0,1.0 +14.677,0,6,0.3,4,8,1.0,1.0,1.0 +13.235,0,6,0.3,4,9,1.0,1.0,1.0 +46.524,0,10,0.3,4,0,1.0,1.0,1.0 +46.531,0,10,0.3,4,1,0.893,1.0,0.806 +43.19,0,10,0.3,4,2,1.0,1.0,1.0 +121.834,0,15,0.3,4,0,1.0,1.0,1.0 +119.824,0,15,0.3,4,1,1.0,1.0,1.0 +120.162,0,15,0.3,4,2,0.889,1.0,0.8 +4.594,0,3,0.4,4,0,1.0,1.0,1.0 +4.686,0,3,0.4,4,1,1.0,1.0,1.0 +4.707,0,3,0.4,4,2,1.0,1.0,1.0 +5.269,0,3,0.4,4,3,1.0,1.0,1.0 +4.729,0,3,0.4,4,4,1.0,1.0,1.0 +4.6,0,3,0.4,4,5,1.0,1.0,1.0 +4.727,0,3,0.4,4,6,1.0,1.0,1.0 +4.707,0,3,0.4,4,7,1.0,1.0,1.0 +4.69,0,3,0.4,4,8,1.0,1.0,1.0 +4.944,0,3,0.4,4,9,1.0,1.0,1.0 +6.441,0,4,0.4,4,0,1.0,1.0,1.0 +6.75,0,4,0.4,4,1,1.0,1.0,1.0 +6.198,0,4,0.4,4,2,1.0,1.0,1.0 +6.496,0,4,0.4,4,3,1.0,1.0,1.0 +6.631,0,4,0.4,4,4,1.0,1.0,1.0 +6.262,0,4,0.4,4,5,1.0,1.0,1.0 +6.865,0,4,0.4,4,6,1.0,1.0,1.0 +6.739,0,4,0.4,4,7,1.0,1.0,1.0 +6.357,0,4,0.4,4,8,1.0,1.0,1.0 +7.206,0,4,0.4,4,9,1.0,1.0,1.0 +8.677,0,5,0.4,4,0,1.0,1.0,1.0 +9.465,0,5,0.4,4,1,1.0,1.0,1.0 +10.355,0,5,0.4,4,2,1.0,1.0,1.0 +9.04,0,5,0.4,4,3,1.0,1.0,1.0 +10.206,0,5,0.4,4,4,1.0,1.0,1.0 +8.605,0,5,0.4,4,5,1.0,1.0,1.0 +9.591,0,5,0.4,4,6,1.0,1.0,1.0 +9.072,0,5,0.4,4,7,1.0,1.0,1.0 +9.002,0,5,0.4,4,8,1.0,1.0,1.0 +9.264,0,5,0.4,4,9,1.0,1.0,1.0 +13.615,0,6,0.4,4,0,1.0,1.0,1.0 +13.133,0,6,0.4,4,1,1.0,1.0,1.0 +13.687,0,6,0.4,4,2,1.0,1.0,1.0 +13.901,0,6,0.4,4,3,1.0,1.0,1.0 +12.545,0,6,0.4,4,4,1.0,1.0,1.0 +13.513,0,6,0.4,4,5,1.0,1.0,1.0 +14.006,0,6,0.4,4,6,1.0,1.0,1.0 +13.376,0,6,0.4,4,7,1.0,1.0,1.0 +14.285,0,6,0.4,4,8,1.0,1.0,1.0 +14.759,0,6,0.4,4,9,1.0,1.0,1.0 +45.247,0,10,0.4,4,0,0.833,1.0,0.714 +44.191,0,10,0.4,4,1,0.746,1.0,0.595 +45.044,0,10,0.4,4,2,0.793,1.0,0.657 +112.711,0,15,0.4,4,0,0.311,1.0,0.184 +119.185,0,15,0.4,4,1,0.46,1.0,0.299 +119.897,0,15,0.4,4,2,0.383,1.0,0.237 \ No newline at end of file diff --git a/main_package/tests/simulators/test_ensambled_model.py b/main_package/tests/simulators/test_ensambled_model.py new file mode 100644 index 0000000..0375a87 --- /dev/null +++ b/main_package/tests/simulators/test_ensambled_model.py @@ -0,0 +1,84 @@ +import sys +sys.path.append("../../classes/") +import glob +import math +import os +import unittest + +import networkx as nx +import numpy as np +import psutil +from line_profiler import LineProfiler +import copy + +import utility.cache as ch +import structure_graph.sample_path as sp +import estimators.structure_score_based_estimator as se +import estimators.structure_constraint_based_estimator as se_ +import utility.json_importer as ji + + + +class TestHybridMethod(unittest.TestCase): + + @classmethod + def setUpClass(cls): + #cls.read_files = glob.glob(os.path.join('../../data', "*.json")) + cls.importer = ji.JsonImporter("../../data/networks_and_trajectories_binary_data_04_3.json", 'samples', 'dyn.str', 'variables', 'Time', 'Name') + cls.s1 = sp.SamplePath(cls.importer) + cls.s1.build_trajectories() + cls.s1.build_structure() + + + + def test_structure(self): + true_edges = copy.deepcopy(self.s1.structure.edges) + true_edges = set(map(tuple, true_edges)) + + s2= copy.deepcopy(self.s1) + + se1 = se.StructureScoreBasedEstimator(self.s1,1,1) + edges_score = se1.estimate_structure( + max_parents = None, + iterations_number = 100, + patience = 50, + tabu_length = 20, + tabu_rules_duration = 20, + optimizer = 'tabu' + ) + + se2 = se_.StructureConstraintBasedEstimator(s2, 0.1, 0.1) + edges_constraint = se2.estimate_structure() + + set_list_edges = set.union(edges_constraint,edges_score) + + + n_added_fake_edges = len(set_list_edges.difference(true_edges)) + + n_missing_edges = len(true_edges.difference(set_list_edges)) + + n_true_positive = len(true_edges) - n_missing_edges + + precision = n_true_positive / (n_true_positive + n_added_fake_edges) + + recall = n_true_positive / (n_true_positive + n_missing_edges) + + f1_measure = round(2* (precision*recall) / (precision+recall),3) + + # print(f"n archi reali non trovati: {n_missing_edges}") + # print(f"n archi non reali aggiunti: {n_added_fake_edges}") + print(true_edges) + print(set_list_edges) + print(f"precision: {precision} ") + print(f"recall: {recall} ") + print(f"F1: {f1_measure} ") + + + + self.assertEqual(set_list_edges, true_edges) + + + +if __name__ == '__main__': + unittest.main() + diff --git a/main_package/tests/simulators/test_ensambled_model_all.py b/main_package/tests/simulators/test_ensambled_model_all.py new file mode 100644 index 0000000..fb839fb --- /dev/null +++ b/main_package/tests/simulators/test_ensambled_model_all.py @@ -0,0 +1,134 @@ +import sys +sys.path.append("../../classes/") +import glob +import math +import os +import unittest + +import networkx as nx +import numpy as np +import psutil +from line_profiler import LineProfiler +import copy + +import utility.cache as ch +import structure_graph.sample_path as sp +import estimators.structure_score_based_estimator as se +import estimators.structure_constraint_based_estimator as se_ +import utility.json_importer as ji + + + +class TestTabuSearch(unittest.TestCase): + + @classmethod + def setUpClass(cls): + pass + + + + def test_constr(self): + + list_vals= [3,4,5,6,10,15,20] + + list_card=[[3,"ternary"],[4,"quaternary"]] + + list_dens = [["0.1","_01"],["0.2","_02"], ["0.3",""], ["0.4","_04"] ] + + for card in list_card: + for dens in list_dens: + + list_vals= [3,4,5,6,10,15,20] + + if card[0]==4: + list_vals.remove(20) + + for var_n in list_vals: + + patience = 20 + + var_number= var_n + + if var_number > 11: + patience = 25 + + if var_number > 16: + patience = 35 + + + cardinality = card[0] + cardinality_string = card[1] + + density= dens[0] + density_string = dens[1] + + constraint = 2 + + index = 0 + num_networks=10 + + if var_number > 9: + num_networks=3 + + while index < num_networks: + #cls.read_files = glob.glob(os.path.join('../../data', "*.json")) + self.importer = ji.JsonImporter(f"../../data/networks_and_trajectories_{cardinality_string}_data{density_string}_{var_number}.json", + 'samples', 'dyn.str', 'variables', 'Time', 'Name', index ) + self.s1 = sp.SamplePath(self.importer) + self.s1.build_trajectories() + self.s1.build_structure() + + + true_edges = copy.deepcopy(self.s1.structure.edges) + true_edges = set(map(tuple, true_edges)) + + s2= copy.deepcopy(self.s1) + + se1 = se.StructureScoreBasedEstimator(self.s1,1,1) + edges_score = se1.estimate_structure( + max_parents = None, + iterations_number = 100, + patience = patience, + tabu_length = var_number, + tabu_rules_duration = var_number, + optimizer = 'tabu' + ) + + se2 = se_.StructureConstraintBasedEstimator(s2, 0.1, 0.1) + edges_constraint = se2.estimate_structure() + + set_list_edges = set.union(edges_constraint,edges_score) + + + n_added_fake_edges = len(set_list_edges.difference(true_edges)) + + n_missing_edges = len(true_edges.difference(set_list_edges)) + + n_true_positive = len(true_edges) - n_missing_edges + + precision = n_true_positive / (n_true_positive + n_added_fake_edges) + + recall = n_true_positive / (n_true_positive + n_missing_edges) + + f1_measure = round(2* (precision*recall) / (precision+recall),3) + + # print(f"n archi reali non trovati: {n_missing_edges}") + # print(f"n archi non reali aggiunti: {n_added_fake_edges}") + print(true_edges) + print(set_list_edges) + print(f"precision: {precision} ") + print(f"recall: {recall} ") + + + with open("../results/results.csv", 'a+') as fi: + fi.write(f"\n2,{constraint},{var_number},{density},{cardinality},{index},{f1_measure},{round(precision,3)},{round(recall,3)}") + + index += 1 + + self.assertEqual(set_list_edges, true_edges) + + + +if __name__ == '__main__': + unittest.main() + diff --git a/main_package/tests/simulators/test_simulation_score.py b/main_package/tests/simulators/test_simulation_score.py index ad2fd21..6ff3695 100644 --- a/main_package/tests/simulators/test_simulation_score.py +++ b/main_package/tests/simulators/test_simulation_score.py @@ -61,6 +61,7 @@ class TestTabuSearch(unittest.TestCase): if var_number > 9: num_networks=3 + while index < num_networks: #cls.read_files = glob.glob(os.path.join('../../data', "*.json")) self.importer = ji.JsonImporter(f"../../data/networks_and_trajectories_{cardinality_string}_data{density_string}_{var_number}.json", @@ -80,7 +81,7 @@ class TestTabuSearch(unittest.TestCase): patience = patience, tabu_length = var_number, tabu_rules_duration = var_number, - optimizer = 'tabu' + optimizer = 'hill' )