-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresults_evaluation_classic.py
More file actions
52 lines (38 loc) · 1.34 KB
/
results_evaluation_classic.py
File metadata and controls
52 lines (38 loc) · 1.34 KB
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
import pickle
from utils import *
import matplotlib.pyplot as plt
# Settings
n_trials = 1000
n_steps = 100
def defuzzify(tensor):
return (tensor > 0.5).float()
with open('results', 'rb') as f:
sat_results = pickle.load(f)
ltn_results = [None] * n_steps
lrl_results = [None] * n_steps
for formula_file, results in sat_results.items():
print(formula_file)
with open(formula_file, 'r') as f:
l = f.readlines()
# Read knowledge
clauses, n = parse_cnf(l)
predicates = create_predicates(n)
f = create_formula(predicates, clauses)
for r in results:
if ltn_results[r['i']] is None:
ltn_results[r['i']] = []
if lrl_results[r['i']] is None:
lrl_results[r['i']] = []
ltn_results[r['i']].append(torch.mean(f.satisfaction(defuzzify(r['ltn']))).tolist())
lrl_results[r['i']].append(torch.mean(f.satisfaction(defuzzify(r['lrl']))).tolist())
ltn_average_fuzzy_sat = [np.mean(r) for r in ltn_results]
lrl_average_sat = [np.mean(r) for r in lrl_results]
with open('results_ltn_classic', 'wb') as f:
pickle.dump(ltn_average_fuzzy_sat, f)
with open('results_lrl_classic', 'wb') as f:
pickle.dump(lrl_average_sat, f)
x_axis = list(range(n_steps))
plt.plot(x_axis, ltn_average_fuzzy_sat, 'b', x_axis, lrl_average_sat, 'k')
plt.xlabel('iteration')
plt.ylabel('sat')
plt.show()