Added license info into the .py files.
[golden_search.git] / stanek.py
blob3dc7abc386d18d54177f8681845f63743c06e3e6
1 # For licensing info see the included LICENSE file
3 # Josef Moudrik, <J dot Moudrik at standard google mail ending>, 2012
5 from correlation_checker import CorrelationChecker
6 from measurements import MethodAnalyzer
7 import operators
8 from constants import CONSTANTS
9 from search import search
11 from stanek_data import MEASURED_DATA, PRECISE_DATA, method_resolution
14 # Data Preparation
17 # compute avg sdsq for each method
18 ma = MethodAnalyzer()
19 for m in MEASURED_DATA:
20 ma.addMeasurement(m)
21 ma.computeStats(verbose=True)
23 # compute list of Numbers from measured data
24 # this takes into account:
25 # 1) method precision
26 # 2) number of samples
28 # Convert measurements to Numbers
29 MEASUREMENTS = map(lambda m: m.toNumber(method_resolution, ma), MEASURED_DATA ) # + PRECISE_DATA)
30 # Now I add some derived numbers, (like rectangle surface (a*b), once you have measured `a` and `b`.
31 md = dict( (n.string, n) for n in MEASUREMENTS )
33 obvod = 2 * md['Predek_Sirka'] + 2 * md['Bok_Sirka']
34 obvod.parents = None
35 obvod.string = 'Obvod_Stanku'
36 MEASUREMENTS.append(obvod)
38 for base in [ "Dvere", "Menu_Deska", "Stitek", "Klicova_Dirka", "Bok_O_2", "Predek_O_1", "Vnitrek_Okynka" ]:
39 obsah = md[ base + "_Vyska" ] * md[ base + "_Sirka" ]
40 obsah.parents = None
41 obsah.string = base + '_Obsah'
42 print md[ base + "_Vyska" ].longStr()
43 print md[ base + "_Sirka" ].longStr()
44 print obsah.longStr()
45 MEASUREMENTS.append(obsah)
47 if __name__ == "__main__":
49 # Define searching operators
53 MAX_ROUND = 1
54 OPS_1 = [ ]
55 #OPS_2 = [ ]
56 #OPS_3 = [ ]
58 OPS_1.append(operators.Div())
60 #OPS_1.append(operators.Plus())
61 #OPS_1.append(operators.Minus())
62 #OPS_1.extend(operators.OPERATORS_ARITHMETIC)
63 # for num in [1]: #, 10**10, 10**9, 10**6, 10**3]:#, 1/3.0, 1/6.0, 1/9.0]:
64 #OPS_2.append(operators.Times(num))
66 #for num in [10**10, 10**9, 10**6, 10**3]:#, 1/3.0, 1/6.0, 1/9.0]:
67 # OPS_2.append(operators.Times(num))
68 #OPS_2.extend(reversed(operators.OPERATORS_ARITHMETIC))
69 #OPS_2.append( operators.Div() )
71 OPS = dict([
72 (1, OPS_1)
75 """
76 OPS_1 = [ ]
77 #OPS_1.append(operators.Div())
78 OPS_1.append(operators.Plus())
79 OPS_1.append(operators.Minus())
80 #OPS_1.extend(perators.OPERATORS_ARITHMETIC)
81 for num in [10**9, 10**6, 10**3 ]: # 1/3.0, 1/6.0, 1/9.0]:
82 OPS_1.append(operators.Times(num))
83 #OPS_2 = list(reversed(operators.OPERATORS_ARITHMETIC))
84 OPS_2 = [ operators.Div() ]
86 OPS = dict([
87 (1, OPS_1),
88 ('default', OPS_2)
90 """
92 # Search Targets
95 # we want to look for constants
96 TARGETS = CorrelationChecker(CONSTANTS)
99 # Run the search!
102 search( MEASUREMENTS, OPS, TARGETS, MAX_ROUND, mem_limit=1*1024**2)