https://gitlab.lrde.epita.fr/akheireddine/bmctool
Tip revision: 93e6598916290fbd0570c71285af7b9d5854e9d6 authored by akheireddine on 02 December 2020, 16:19:29 UTC
Update makefile and painless submodule :
Update makefile and painless submodule :
Tip revision: 93e6598
quantifies_learning.py
from os import listdir
from os.path import isfile, join
import csv
import sys
def couting_till_learning(writer, pathname, filename, time_learning) :
f = open(pathname+filename,"r")
lines = f.readlines()
f.close()
start_original = False
start_learning = False
original_cls = 0
learning_cls = 0
if "k-1" in filename :
start_original = True
for line in lines:
if ("p cnf" in line) and (line[0] == "p") :
start_original = True
continue
if ("c GENERATE BMCTree" in line) or ("c End of dimacs dumping" in line):
start_original = False
start_learning = True
continue
if ("c" in line) or (" 0" not in line) :
continue
if start_original :
original_cls = original_cls + 1
if start_learning :
learning_cls = learning_cls + 1
print("Filename : ",filename)
print("Original clauses : ",original_cls)
print("Learnt clauses : ",learning_cls)
if original_cls > 0 :
print("Ratio of learning (in ",time_learning,") : ", (learning_cls * 100.0)/original_cls)
if original_cls > 0 :
ratio = (learning_cls * 100.0)/original_cls
else :
ratio = "NaN"
writer.writerow([filename, time_learning, original_cls, learning_cls, ratio])
def count_files( path, time_learning, csvname ) :
print(" csvn ", csvname)
with open(csvname, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(["filename", "Learning Time","Original Cls", "Learnt Cls", "Ratio"])
onlyfiles = [f for f in listdir(path) if isfile(join(path, f))]
for f in onlyfiles :
if "_k-1" in f :
couting_till_learning(writer, path, f, time_learning)
if __name__ == "__main__":
args = sys.argv[1:]
if len(args) < 2 :
print(" ERROR no args ")
exit(1)
print(" args size ",args[0])
count_files( args[0], args[1], args[0]+".csv" )