Initial commit. Please see the README
[golden_search.git] / stanek.py
blobcefdd3c00c3b3180d86f60480c528416eba914bb
1 from correlation_checker import CorrelationChecker
2 from measurements import MethodAnalyzer
3 import operators
4 from constants import CONSTANTS
5 from search import search
7 from stanek_data import MEASURED_DATA, PRECISE_DATA, method_resolution
10 # Data Preparation
13 # compute avg sdsq for each method
14 ma = MethodAnalyzer()
15 for m in MEASURED_DATA:
16 ma.addMeasurement(m)
17 ma.computeStats(verbose=True)
19 # compute list of Numbers from measured data
20 # this takes into account:
21 # 1) method precision
22 # 2) number of samples
24 # Convert measurements to Numbers
25 MEASUREMENTS = map(lambda m: m.toNumber(method_resolution, ma), MEASURED_DATA ) # + PRECISE_DATA)
26 # Now I add some derived numbers, (like rectangle surface (a*b), once you have measured `a` and `b`.
27 md = dict( (n.string, n) for n in MEASUREMENTS )
29 obvod = 2 * md['Predek_Sirka'] + 2 * md['Bok_Sirka']
30 obvod.parents = None
31 obvod.string = 'Obvod_Stanku'
32 MEASUREMENTS.append(obvod)
34 for base in [ "Dvere", "Menu_Deska", "Stitek", "Klicova_Dirka", "Bok_O_2", "Predek_O_1", "Vnitrek_Okynka" ]:
35 obsah = md[ base + "_Vyska" ] * md[ base + "_Sirka" ]
36 obsah.parents = None
37 obsah.string = base + '_Obsah'
38 print md[ base + "_Vyska" ].longStr()
39 print md[ base + "_Sirka" ].longStr()
40 print obsah.longStr()
41 MEASUREMENTS.append(obsah)
43 if __name__ == "__main__":
45 # Define searching operators
49 MAX_ROUND = 1
50 OPS_1 = [ ]
51 OPS_2 = [ ]
52 OPS_3 = [ ]
53 OPS_1.append(operators.Div())
55 #OPS_1.append(operators.Plus())
56 #OPS_1.append(operators.Minus())
57 #OPS_1.extend(operators.OPERATORS_ARITHMETIC)
58 for num in [1]: #, 10**10, 10**9, 10**6, 10**3]:#, 1/3.0, 1/6.0, 1/9.0]:
59 OPS_2.append(operators.Times(num))
61 for num in [10**10, 10**9, 10**6, 10**3]:#, 1/3.0, 1/6.0, 1/9.0]:
62 OPS_2.append(operators.Times(num))
63 #OPS_2.extend(reversed(operators.OPERATORS_ARITHMETIC))
64 OPS_2.append( operators.Div() )
66 OPS = dict([
67 (1, OPS_1),
68 (2, OPS_2),
69 ('default', OPS_3)
72 """
73 OPS_1 = [ ]
74 #OPS_1.append(operators.Div())
75 OPS_1.append(operators.Plus())
76 OPS_1.append(operators.Minus())
77 #OPS_1.extend(perators.OPERATORS_ARITHMETIC)
78 for num in [10**9, 10**6, 10**3, 1/3.0, 1/6.0, 1/9.0]:
79 OPS_1.append(operators.Times(num))
80 #OPS_2 = list(reversed(operators.OPERATORS_ARITHMETIC))
81 OPS_2 = [ operators.Div() ]
83 OPS = dict([
84 (1, OPS_1),
85 ('default', OPS_2)
87 """
89 # Search Targets
92 # we want to look for constants
93 TARGETS = CorrelationChecker(CONSTANTS)
96 # Run the search!
99 search( MEASUREMENTS, OPS, TARGETS, MAX_ROUND, mem_limit=1*1024**2)