lolamontes69

Ch12 8: Optimization. Programming Colllective Intelligence

Oct 8th, 2013
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 49.40 KB | None | 0 0
  1. """ Chapter 12 Programming Collective Intelligence: Optimization.
  2.  
  3.    As the chapter has no exercises in it I have decided to create a practical
  4.    application for each of the Algorithms and Methods described.
  5.    Lastly Optimization.
  6.  
  7.    This performs optimization on the Titanic dataset using four successive methods;
  8.       annealing, genetic, hillclimb and random-restart annealing.
  9.    I used leave-one-out-cross-validation in the cost function and psyco to speed things up.
  10.  
  11.    I have had fun working through this book and have improved upon my knowledge of Python.
  12.    Thanks Toby :)
  13.    
  14.                 --lolamontes69
  15. """
  16.  
  17. import math
  18. import random as random
  19.  
  20. def euclidean(v1,v2):
  21.     d=0.0
  22.     for i in range(len(v1)):
  23.         d+=(v1[i]-v2[i])**2
  24.     return math.sqrt(d)
  25.  
  26. def gaussian(dist,sigma=10.0):
  27.     return math.e**(-dist**2/(2*sigma**2))
  28.  
  29. def getdistances(data,vec1):
  30.     distancelist=[]
  31.     for i in range(len(data)):
  32.         vec2=data[i]['input']
  33.         distancelist.append((euclidean(vec1,vec2),i))
  34.     distancelist.sort()
  35.     return distancelist
  36.  
  37. def weightedknn(data,vec1,k=5,weightf=gaussian):
  38.     # Get distances
  39.     dlist=getdistances(data,vec1)
  40.     avg=0.0
  41.     totalweight=0.0
  42.  
  43.     # Get weighted average
  44.     for i in range(k):
  45.         dist=dlist[i][0]
  46.         idx=dlist[i][1]
  47.         weight=weightf(dist)
  48.         avg+=weight*data[idx]['result']
  49.         totalweight+=weight
  50.     if totalweight==0: return 0
  51.     avg=avg/totalweight
  52.     return avg
  53.  
  54. def rescale(data,scale):
  55.     scaledata=[]
  56.     for row in data:
  57.         scaled=[scale[i]*row['input'][i] for i in range(len(scale))]
  58.         scaledata.append({'input':scaled,'result':row['result']})
  59.     return scaledata
  60.  
  61. def createcostfunction(algf,data):
  62.     def costf(scale):
  63.         print "scale =",scale
  64.         sdata=rescale(data,scale)
  65.         return loo_crossvalidate(algf,data)
  66.     return costf       # Returns the function itself
  67.  
  68. def testalgorithm(algf,trainset,testset):
  69.     error=0.0
  70.     for row in testset:
  71.         guess=algf(trainset,row['input'])
  72.         error+=(row['result']-guess)**2
  73.     if len(testset)==0: return 0.0   # If no testset is produced
  74.     return error/len(testset)
  75.  
  76. def loo_crossvalidate(algf,data):
  77.     error=0.0
  78.     for row in range(len(data)):
  79.         trainset = []
  80.         trainset = trainset+data
  81.         testset=[]
  82.         testset.append(data[row])
  83.         trainset.remove(data[row])
  84.         error+=testalgorithm(algf,trainset,testset)
  85.     return error/len(data)
  86.  
  87. def hillclimb(domain,costf):
  88.     sol=[random.randint(domain[i][0],domain[i][1]) for i in range(len(domain))]
  89.     while 1:
  90.         neighbors=[]
  91.         for j in range(len(domain)):
  92.             if (domain[j][0] == 0) and (domain[j][1] == 0): pass   # Workaround for when domain is (0,0)
  93.             else:
  94.                 if sol[j] > domain[j][0] and sol[j] < domain[j][1]:
  95.                     neighbors.append(sol[0:j]+[sol[j]+1]+sol[j+1:])
  96.                     neighbors.append(sol[0:j]+[sol[j]-1]+sol[j+1:])
  97.                 if sol[j] == domain[j][0]:
  98.                     neighbors.append(sol[0:j]+[sol[j]+1]+sol[j+1:])
  99.                 if sol[j] == domain[j][1]:
  100.                     neighbors.append(sol[0:j]+[sol[j]-1]+sol[j+1:])
  101.         current=costf(sol)
  102.         best=current
  103.         for j in range(len(neighbors)):
  104.             cost=costf(neighbors[j])
  105.             if cost<best:
  106.                 best=cost
  107.                 sol=neighbors[j]
  108.         if best==current:
  109.             break
  110.     return sol
  111.  
  112. def annealingoptimize(domain,costf,T=10000.0,cool=0.95,step=1):
  113.     vec=[(random.randint(domain[i][0],domain[i][1])) for i in range(len(domain))]
  114.     while T>0.1:
  115.         i=random.randint(0,len(domain)-1)
  116.         dir=random.randint(-step,step)
  117.         vecb=vec[:]
  118.         vecb[i]+=dir
  119.         if vecb[i]<domain[i][0]: vecb[i]=domain[i][0]
  120.         elif vecb[i]>domain[i][1]: vecb[i]=domain[i][1]
  121.         ea=costf(vec)
  122.         eb=costf(vecb)
  123.         p=pow(math.e,(-eb-ea)/T)
  124.         if (eb<ea or random.random()<p):
  125.             vec=vecb
  126.         T=T*cool
  127.     return vec
  128.  
  129. def randomrestart_annealing(domain,costf,T1=10000.0,cool=0.95,step=1,maxiter=100):
  130.     T = T1
  131.     best=999999999
  132.     bestr=None
  133.     for i in range(maxiter):
  134.         vec=[(random.randint(domain[i][0],domain[i][1])) for i in range(len(domain))]
  135.         while T>0.1:
  136.             i=random.randint(0,len(domain)-1)
  137.             dir=random.randint(-step,step)
  138.             vecb=vec[:]
  139.             vecb[i]+=dir
  140.             if vecb[i]<domain[i][0]: vecb[i]=domain[i][0]
  141.             elif vecb[i]>domain[i][1]: vecb[i]=domain[i][1]
  142.             ea=costf(vec)
  143.             eb=costf(vecb)
  144.             p=pow(math.e,(-eb-ea)/T)
  145.             if (eb<ea or random.random()<p):
  146.                 vec=vecb
  147.             T=T*cool  # Decrease the temperature
  148.         cost = costf(vec)
  149.         T = T1
  150.         if cost<best:
  151.             best=cost
  152.             bestr=vec
  153.     return bestr
  154.  
  155. def geneticoptimize(domain,costf,popsize=50,step=1,mutprob=0.2,elite=0.2,maxiter=100):
  156.     def mutate(vec):
  157.         i=random.randint(0,len(domain)-1)
  158.         if random.random()<0.5 and vec[i]-step>domain[i][0]:
  159.             return vec[0:i]+[vec[i]-step]+vec[i+1:]
  160.         elif vec[i]+step<domain[i][1]:
  161.             return vec[0:i]+[vec[i]+step]+vec[i+1:]
  162.         else:
  163.             return vec           # Corrected otherwise if vec[i] is unsatisfactory nothing returns
  164.     def crossover(r1,r2):
  165.         if len(domain)-2>=1:
  166.             i=random.randint(1,len(domain)-2)
  167.             return r1[0:i]+r2[i:]
  168.         else:
  169.             i=random.randint(1,len(domain))
  170.             return r1[0:i]+r2[i:]
  171.     pop=[]
  172.     for i in range(popsize):
  173.         vec=[random.randint(domain[i][0],domain[i][1]) for i in range(len(domain))]
  174.         pop.append(vec)
  175.     topelite=int(elite*popsize)            # How many winners from each generation?
  176.     for i in range(maxiter):
  177.         scores=[(costf(v),v) for v in pop]
  178.         scores.sort()
  179.         if i == maxiter-1: pass            # Corrected from here for last iteration
  180.         else:
  181.             ranked=[v for (s,v) in scores]
  182.             # Start with the pure winners
  183.             pop=ranked[0:topelite]
  184.             # Add mutated and bred forms of the winners
  185.             while len(pop)<popsize:
  186.                 if random.random()<mutprob:
  187.                     c=random.randint(0,topelite)           # Mutation
  188.                     pop.append(mutate(ranked[c]))
  189.                 else:
  190.                     c1=random.randint(0,topelite)          # Crossover
  191.                     c2=random.randint(0,topelite)
  192.                     pop.append(crossover(ranked[c1],ranked[c2]))
  193.             print scores[0][0]
  194.     return scores[0][1]
  195.  
  196. """ Chapter 12 Programming Collective Intelligence: Optimization.
  197.  
  198.    As the chapter has no exercises in it I have decided to create a practical
  199.    application for each of the Algorithms and Methods described.
  200.    Lastly Optimization.
  201.  
  202.    This performs optimization on the Titanic dataset using four successive methods;
  203.       annealing, genetic, hillclimb and random-restart annealing.
  204.    I used psyco to speed things up, pypy is also waiting to be used. I am watching the current Numpy effort with interest :)
  205.  
  206.    I have had fun working through this book and have improved upon my knowledge of Python.
  207.    Thanks Toby :)
  208.               --lolamontes69
  209. """
  210.  
  211. datalist=[{'input': [3, 0, 22.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 38.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 26.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 35.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 0, 54.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 2.0, 3, 1, 2], 'result': 0}, {'input': [3, 1, 27.0, 0, 2, 2], 'result': 1}, {'input': [2, 1, 14.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 4.0, 1, 1, 2], 'result': 1}, {'input': [1, 1, 58.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 39.0, 1, 5, 2], 'result': 0}, {'input': [3, 1, 14.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 55.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 2.0, 4, 1, 1], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 31.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 0], 'result': 1}, {'input': [2, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 34.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 15.0, 0, 0, 1], 'result': 1}, {'input': [1, 0, 28.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 8.0, 3, 1, 2], 'result': 0}, {'input': [3, 1, 38.0, 1, 5, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 19.0, 3, 2, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 40.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [2, 0, 66.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 28.0, 1, 0, 0], 'result': 0}, {'input': [1, 0, 42.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 18.0, 2, 0, 2], 'result': 0}, {'input': [3, 1, 14.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 40.0, 1, 0, 2], 'result': 0}, {'input': [2, 1, 27.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [2, 1, 3.0, 1, 2, 0], 'result': 1}, {'input': [3, 1, 19.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 1], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 2, 0, 0], 'result': 0}, {'input': [3, 1, 18.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 7.0, 4, 1, 2], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 49.0, 1, 0, 0], 'result': 1}, {'input': [2, 1, 29.0, 1, 0, 2], 'result': 1}, {'input': [1, 0, 65.0, 0, 1, 0], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 21.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 28.5, 0, 0, 0], 'result': 0}, {'input': [2, 1, 5.0, 1, 2, 2], 'result': 1}, {'input': [3, 0, 11.0, 5, 2, 2], 'result': 0}, {'input': [3, 0, 22.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 38.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 45.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 4.0, 3, 2, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 0.0, 1, 1, 0], 'result': 1}, {'input': [2, 1, 29.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 17.0, 4, 2, 2], 'result': 1}, {'input': [3, 0, 26.0, 2, 0, 2], 'result': 0}, {'input': [2, 0, 32.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 16.0, 5, 2, 2], 'result': 0}, {'input': [2, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 26.0, 1, 0, 0], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 0.82999999999999996, 0, 2, 2], 'result': 1}, {'input': [3, 1, 30.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 29.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [1, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 17.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 33.0, 3, 0, 2], 'result': 1}, {'input': [3, 0, 16.0, 1, 3, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 23.0, 3, 2, 2], 'result': 1}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 46.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 26.0, 1, 2, 2], 'result': 0}, {'input': [3, 0, 59.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 71.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 23.0, 0, 1, 0], 'result': 1}, {'input': [2, 1, 34.0, 0, 1, 2], 'result': 1}, {'input': [2, 0, 34.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 21.0, 0, 1, 2], 'result': 0}, {'input': [3, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 37.0, 2, 0, 2], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 21.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 38.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 1, 0, 1], 'result': 1}, {'input': [1, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 14.5, 1, 0, 0], 'result': 0}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 20.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 17.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 70.5, 0, 0, 1], 'result': 0}, {'input': [2, 0, 29.0, 1, 0, 2], 'result': 0}, {'input': [1, 0, 24.0, 0, 1, 0], 'result': 0}, {'input': [3, 1, 2.0, 4, 2, 2], 'result': 0}, {'input': [2, 0, 21.0, 2, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 32.5, 1, 0, 0], 'result': 0}, {'input': [2, 1, 32.5, 0, 0, 2], 'result': 1}, {'input': [1, 0, 54.0, 0, 1, 2], 'result': 0}, {'input': [3, 0, 12.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 1, 1, 0], 'result': 1}, {'input': [3, 0, 45.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 33.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 47.0, 1, 0, 2], 'result': 0}, {'input': [2, 1, 29.0, 1, 0, 2], 'result': 1}, {'input': [2, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 23.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 19.0, 0, 2, 2], 'result': 1}, {'input': [1, 0, 37.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 24.0, 0, 0, 0], 'result': 0}, {'input': [3, 1, 0.0, 0, 2, 0], 'result': 0}, {'input': [3, 1, 22.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 24.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 19.0, 0, 0, 1], 'result': 0}, {'input': [2, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 19.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 27.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 9.0, 2, 2, 2], 'result': 0}, {'input': [2, 0, 36.5, 0, 2, 2], 'result': 0}, {'input': [2, 0, 42.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 51.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 22.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 55.5, 0, 0, 2], 'result': 0}, {'input': [3, 0, 40.5, 0, 2, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 51.0, 0, 1, 0], 'result': 0}, {'input': [3, 1, 16.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 8, 2, 2], 'result': 0}, {'input': [3, 0, 44.0, 0, 1, 2], 'result': 0}, {'input': [2, 1, 40.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 17.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 1.0, 4, 1, 2], 'result': 0}, {'input': [3, 0, 9.0, 0, 2, 2], 'result': 1}, {'input': [1, 1, 0.0, 0, 1, 2], 'result': 1}, {'input': [3, 1, 45.0, 1, 4, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 61.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 4.0, 4, 1, 1], 'result': 0}, {'input': [3, 1, 1.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 56.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 18.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 0.0, 3, 1, 2], 'result': 0}, {'input': [1, 1, 50.0, 0, 0, 0], 'result': 0}, {'input': [2, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 36.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 8, 2, 2], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 9.0, 4, 2, 2], 'result': 0}, {'input': [2, 0, 1.0, 2, 1, 2], 'result': 1}, {'input': [3, 1, 4.0, 0, 2, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 1, 0, 1], 'result': 1}, {'input': [1, 0, 45.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 40.0, 1, 1, 1], 'result': 0}, {'input': [3, 0, 36.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 32.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 19.0, 1, 0, 2], 'result': 1}, {'input': [2, 0, 3.0, 1, 1, 2], 'result': 1}, {'input': [1, 1, 44.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 58.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 42.0, 0, 1, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [2, 1, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 8, 2, 2], 'result': 0}, {'input': [3, 0, 34.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 45.5, 0, 0, 0], 'result': 0}, {'input': [3, 0, 18.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 2.0, 0, 1, 2], 'result': 0}, {'input': [3, 0, 32.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 26.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 16.0, 0, 0, 1], 'result': 1}, {'input': [1, 0, 40.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 35.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 1], 'result': 0}, {'input': [1, 1, 31.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 27.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 42.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 32.0, 0, 0, 0], 'result': 1}, {'input': [2, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 16.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 27.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 51.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 38.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 19.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 20.5, 0, 0, 2], 'result': 0}, {'input': [2, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 3, 1, 2], 'result': 0}, {'input': [1, 1, 35.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 59.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 5.0, 4, 2, 2], 'result': 1}, {'input': [2, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 44.0, 1, 0, 2], 'result': 0}, {'input': [2, 1, 8.0, 0, 2, 2], 'result': 1}, {'input': [2, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 1, 0, 0], 'result': 0}, {'input': [3, 1, 0.0, 1, 0, 1], 'result': 1}, {'input': [2, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 30.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 44.0, 2, 0, 1], 'result': 0}, {'input': [3, 1, 25.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 24.0, 0, 2, 2], 'result': 1}, {'input': [1, 0, 37.0, 1, 1, 2], 'result': 1}, {'input': [2, 0, 54.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 29.0, 1, 1, 2], 'result': 0}, {'input': [1, 0, 62.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 30.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 41.0, 0, 2, 2], 'result': 0}, {'input': [3, 1, 29.0, 0, 2, 0], 'result': 1}, {'input': [1, 1, 0.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 30.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 35.0, 0, 0, 0], 'result': 1}, {'input': [2, 1, 50.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 3.0, 4, 2, 2], 'result': 1}, {'input': [1, 0, 52.0, 1, 1, 2], 'result': 0}, {'input': [1, 0, 40.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 0}, {'input': [2, 0, 36.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 16.0, 4, 1, 2], 'result': 0}, {'input': [3, 0, 25.0, 1, 0, 2], 'result': 1}, {'input': [1, 1, 58.0, 0, 1, 2], 'result': 1}, {'input': [1, 1, 35.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 41.0, 0, 1, 2], 'result': 1}, {'input': [1, 0, 37.0, 0, 1, 0], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [1, 1, 63.0, 1, 0, 2], 'result': 1}, {'input': [3, 1, 45.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 7.0, 4, 1, 1], 'result': 0}, {'input': [3, 1, 35.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 65.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 33.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 30.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 42.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 22.0, 0, 0, 1], 'result': 1}, {'input': [1, 1, 26.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 19.0, 1, 0, 0], 'result': 1}, {'input': [2, 0, 36.0, 0, 0, 0], 'result': 0}, {'input': [3, 1, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 23.5, 0, 0, 0], 'result': 0}, {'input': [1, 1, 2.0, 1, 2, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 50.0, 0, 1, 0], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 2, 0, 1], 'result': 1}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.92000000000000004, 1, 2, 2], 'result': 1}, {'input': [1, 1, 0.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 17.0, 1, 0, 0], 'result': 1}, {'input': [2, 0, 30.0, 1, 0, 0], 'result': 0}, {'input': [1, 1, 30.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 24.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 18.0, 2, 2, 0], 'result': 1}, {'input': [2, 1, 26.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 43.0, 1, 1, 2], 'result': 0}, {'input': [3, 1, 26.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 24.0, 1, 0, 2], 'result': 1}, {'input': [2, 0, 54.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 31.0, 0, 2, 2], 'result': 1}, {'input': [1, 1, 40.0, 1, 1, 0], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 27.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 30.0, 0, 0, 1], 'result': 1}, {'input': [2, 1, 22.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 8, 2, 2], 'result': 0}, {'input': [1, 1, 36.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 61.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 36.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 31.0, 1, 1, 2], 'result': 1}, {'input': [1, 1, 16.0, 0, 1, 0], 'result': 1}, {'input': [3, 1, 0.0, 2, 0, 1], 'result': 1}, {'input': [1, 0, 45.5, 0, 0, 2], 'result': 0}, {'input': [1, 0, 38.0, 0, 1, 2], 'result': 0}, {'input': [3, 0, 16.0, 2, 0, 2], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 29.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 41.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 45.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 45.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 2.0, 1, 1, 2], 'result': 1}, {'input': [1, 1, 24.0, 3, 2, 2], 'result': 1}, {'input': [2, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 36.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 24.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 40.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 3.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 42.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 15.0, 1, 1, 0], 'result': 0}, {'input': [3, 0, 25.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 22.0, 0, 1, 2], 'result': 1}, {'input': [2, 1, 38.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 40.0, 1, 4, 2], 'result': 0}, {'input': [2, 0, 29.0, 1, 0, 0], 'result': 0}, {'input': [3, 1, 45.0, 0, 1, 0], 'result': 0}, {'input': [3, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 1], 'result': 0}, {'input': [3, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 60.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [1, 1, 24.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 25.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 18.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 22.0, 0, 0, 0], 'result': 0}, {'input': [3, 1, 3.0, 3, 1, 2], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 22.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 27.0, 0, 2, 0], 'result': 0}, {'input': [3, 0, 20.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 42.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 1.0, 0, 2, 0], 'result': 1}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 35.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 1.0, 5, 2, 2], 'result': 0}, {'input': [2, 1, 36.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [2, 1, 17.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 36.0, 1, 2, 2], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 28.0, 2, 0, 2], 'result': 0}, {'input': [1, 1, 23.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 24.0, 0, 2, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 31.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 46.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 28.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 39.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 21.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 28.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 20.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 34.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 51.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 3.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 3, 1, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 1, 33.0, 1, 0, 1], 'result': 1}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 44.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 34.0, 1, 1, 2], 'result': 1}, {'input': [2, 1, 18.0, 0, 2, 2], 'result': 1}, {'input': [2, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 10.0, 0, 2, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 28.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 18.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 28.0, 1, 0, 2], 'result': 1}, {'input': [2, 1, 19.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 28.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 1, 0, 2], 'result': 1}, {'input': [2, 1, 42.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 17.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 50.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 14.0, 1, 2, 2], 'result': 1}, {'input': [3, 1, 21.0, 2, 2, 2], 'result': 0}, {'input': [2, 1, 24.0, 2, 3, 2], 'result': 1}, {'input': [1, 0, 64.0, 1, 4, 2], 'result': 0}, {'input': [2, 0, 31.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 45.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 25.0, 1, 0, 2], 'result': 0}, {'input': [2, 1, 28.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 4.0, 0, 2, 2], 'result': 1}, {'input': [2, 1, 13.0, 0, 1, 2], 'result': 1}, {'input': [1, 0, 34.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 5.0, 2, 1, 0], 'result': 1}, {'input': [1, 0, 52.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 36.0, 1, 2, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 2], 'result': 0}, {'input': [1, 0, 30.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 49.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 29.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 65.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 2], 'result': 1}, {'input': [2, 1, 50.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 0, 48.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 34.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 48.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 38.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 56.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 1, 0.75, 2, 1, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 38.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 33.0, 1, 2, 2], 'result': 1}, {'input': [2, 1, 23.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 22.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 34.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 29.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 2.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 9.0, 5, 2, 2], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 50.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 63.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 25.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 0.0, 3, 1, 2], 'result': 0}, {'input': [1, 1, 35.0, 1, 0, 2], 'result': 1}, {'input': [1, 0, 58.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 9.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 55.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 71.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 54.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 25.0, 1, 2, 2], 'result': 0}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 17.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 21.0, 0, 0, 1], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 1, 37.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 16.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 18.0, 1, 0, 0], 'result': 0}, {'input': [2, 1, 33.0, 0, 2, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 29.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 36.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 54.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 34.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [2, 1, 36.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 30.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 44.0, 0, 1, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 40.5, 0, 0, 1], 'result': 0}, {'input': [2, 1, 50.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 23.0, 2, 1, 2], 'result': 0}, {'input': [2, 1, 2.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 17.0, 1, 1, 0], 'result': 0}, {'input': [3, 1, 0.0, 0, 2, 0], 'result': 1}, {'input': [3, 1, 30.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 7.0, 0, 2, 2], 'result': 1}, {'input': [1, 0, 45.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 30.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 22.0, 0, 2, 0], 'result': 1}, {'input': [1, 1, 36.0, 0, 2, 2], 'result': 1}, {'input': [3, 1, 9.0, 4, 2, 2], 'result': 0}, {'input': [3, 1, 11.0, 4, 2, 2], 'result': 0}, {'input': [2, 0, 32.0, 1, 0, 2], 'result': 1}, {'input': [1, 0, 50.0, 1, 0, 0], 'result': 0}, {'input': [1, 0, 64.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 19.0, 1, 0, 2], 'result': 1}, {'input': [2, 0, 0.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 33.0, 1, 1, 2], 'result': 0}, {'input': [2, 0, 8.0, 1, 1, 2], 'result': 1}, {'input': [1, 0, 17.0, 0, 2, 0], 'result': 1}, {'input': [2, 0, 27.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 22.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 22.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 62.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 48.0, 1, 0, 0], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 39.0, 1, 1, 2], 'result': 1}, {'input': [3, 1, 36.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 40.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 24.0, 2, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 29.0, 0, 4, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 62.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 53.0, 2, 0, 2], 'result': 1}, {'input': [1, 0, 36.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 34.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 39.0, 1, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 1, 0, 0], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 25.0, 1, 1, 2], 'result': 1}, {'input': [1, 1, 39.0, 1, 1, 0], 'result': 1}, {'input': [2, 0, 54.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 36.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 1, 18.0, 0, 2, 2], 'result': 1}, {'input': [2, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 60.0, 1, 1, 0], 'result': 1}, {'input': [3, 0, 22.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 52.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 2, 1], 'result': 0}, {'input': [2, 0, 37.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 36.0, 1, 1, 2], 'result': 0}, {'input': [2, 1, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 49.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 49.0, 1, 0, 0], 'result': 1}, {'input': [2, 1, 24.0, 2, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 44.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 35.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 36.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 30.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 27.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 22.0, 1, 2, 0], 'result': 1}, {'input': [1, 1, 40.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 39.0, 1, 5, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 1, 0, 1], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 24.0, 1, 2, 2], 'result': 1}, {'input': [3, 0, 34.0, 1, 1, 2], 'result': 0}, {'input': [3, 1, 26.0, 1, 0, 2], 'result': 0}, {'input': [2, 1, 4.0, 2, 1, 2], 'result': 1}, {'input': [2, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 27.0, 1, 0, 0], 'result': 0}, {'input': [1, 0, 42.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 20.0, 1, 1, 0], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 61.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 57.0, 0, 0, 1], 'result': 0}, {'input': [1, 1, 21.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 0, 80.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 51.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 32.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 9.0, 3, 2, 2], 'result': 0}, {'input': [2, 1, 28.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 31.0, 1, 1, 2], 'result': 0}, {'input': [3, 1, 41.0, 0, 5, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 24.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 2.0, 3, 2, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.75, 2, 1, 0], 'result': 1}, {'input': [1, 0, 48.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 56.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 23.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 18.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [3, 1, 18.0, 0, 0, 1], 'result': 0}, {'input': [2, 0, 24.0, 2, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 32.0, 1, 1, 1], 'result': 0}, {'input': [2, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 58.0, 0, 2, 0], 'result': 0}, {'input': [1, 0, 50.0, 2, 0, 2], 'result': 1}, {'input': [3, 0, 40.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 36.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 20.0, 1, 0, 2], 'result': 1}, {'input': [2, 0, 32.0, 2, 0, 2], 'result': 0}, {'input': [2, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 43.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 2], 'result': 1}, {'input': [2, 1, 40.0, 1, 1, 2], 'result': 1}, {'input': [1, 0, 31.0, 1, 0, 2], 'result': 0}, {'input': [2, 0, 70.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 31.0, 0, 0, 2], 'result': 1}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 24.5, 0, 0, 2], 'result': 0}, {'input': [3, 1, 18.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 43.0, 1, 6, 2], 'result': 0}, {'input': [1, 0, 36.0, 0, 1, 0], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 0, 27.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 14.0, 5, 2, 2], 'result': 0}, {'input': [2, 0, 60.0, 1, 1, 2], 'result': 0}, {'input': [2, 0, 25.0, 1, 2, 0], 'result': 0}, {'input': [3, 0, 14.0, 4, 1, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 15.0, 0, 1, 2], 'result': 1}, {'input': [1, 0, 31.0, 1, 0, 2], 'result': 1}, {'input': [3, 1, 4.0, 0, 1, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 25.0, 0, 0, 0], 'result': 0}, {'input': [1, 0, 60.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 52.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 44.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [1, 0, 49.0, 1, 1, 0], 'result': 0}, {'input': [3, 0, 42.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 18.0, 1, 0, 0], 'result': 1}, {'input': [1, 0, 35.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 18.0, 0, 1, 0], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 26.0, 1, 0, 2], 'result': 0}, {'input': [2, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 45.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 42.0, 0, 0, 2], 'result': 1}, {'input': [1, 1, 22.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 1, 1, 0], 'result': 1}, {'input': [1, 1, 24.0, 0, 0, 0], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 48.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 52.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 38.0, 0, 0, 0], 'result': 1}, {'input': [2, 1, 27.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 6.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 17.0, 1, 0, 2], 'result': 0}, {'input': [2, 0, 34.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 50.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 27.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 30.0, 3, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 0, 0, 1], 'result': 1}, {'input': [2, 0, 25.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 25.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 29.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 11.0, 0, 0, 0], 'result': 0}, {'input': [2, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 28.5, 0, 0, 2], 'result': 0}, {'input': [3, 1, 48.0, 1, 3, 2], 'result': 0}, {'input': [1, 0, 35.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 36.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 21.0, 2, 2, 0], 'result': 1}, {'input': [3, 0, 24.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 31.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 70.0, 1, 1, 2], 'result': 0}, {'input': [3, 0, 16.0, 1, 1, 2], 'result': 0}, {'input': [2, 1, 30.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 19.0, 1, 0, 2], 'result': 0}, {'input': [3, 0, 31.0, 0, 0, 1], 'result': 0}, {'input': [2, 1, 4.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 6.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 48.0, 1, 2, 2], 'result': 1}, {'input': [2, 0, 0.67000000000000004, 1, 1, 2], 'result': 1}, {'input': [3, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 34.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 33.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 41.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 20.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 36.0, 1, 2, 2], 'result': 1}, {'input': [3, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 51.0, 1, 0, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 1, 30.5, 0, 0, 1], 'result': 0}, {'input': [3, 0, 0.0, 1, 0, 1], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 48.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 57.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [2, 1, 54.0, 1, 3, 2], 'result': 1}, {'input': [3, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 1, 5.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [1, 1, 43.0, 0, 1, 2], 'result': 1}, {'input': [3, 1, 13.0, 0, 0, 0], 'result': 1}, {'input': [1, 1, 17.0, 1, 0, 2], 'result': 1}, {'input': [1, 0, 29.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 1, 2, 2], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 18.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 8.0, 4, 1, 1], 'result': 0}, {'input': [3, 0, 1.0, 1, 2, 2], 'result': 1}, {'input': [1, 0, 46.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [2, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 0.0, 8, 2, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 49.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 31.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 30.0, 0, 0, 0], 'result': 0}, {'input': [3, 1, 30.0, 1, 1, 2], 'result': 0}, {'input': [2, 0, 34.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 31.0, 1, 1, 2], 'result': 1}, {'input': [1, 0, 11.0, 1, 2, 2], 'result': 1}, {'input': [3, 0, 0.41999999999999998, 0, 1, 0], 'result': 1}, {'input': [3, 0, 27.0, 0, 0, 2], 'result': 1}, {'input': [3, 0, 31.0, 0, 0, 2], 'result': 0}, {'input': [1, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 18.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 33.0, 1, 0, 2], 'result': 1}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 39.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 35.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 6.0, 4, 2, 2], 'result': 0}, {'input': [3, 0, 30.5, 0, 0, 2], 'result': 0}, {'input': [1, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 23.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 31.0, 1, 1, 0], 'result': 0}, {'input': [3, 0, 43.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 10.0, 3, 2, 2], 'result': 0}, {'input': [1, 1, 52.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 27.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 38.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 27.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 2.0, 4, 1, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 1.0, 0, 2, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 1], 'result': 1}, {'input': [1, 1, 62.0, 0, 0, 0], 'result': 1}, {'input': [3, 1, 15.0, 1, 0, 0], 'result': 1}, {'input': [2, 0, 0.82999999999999996, 1, 1, 2], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 23.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 18.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 39.0, 1, 1, 0], 'result': 1}, {'input': [3, 0, 21.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 32.0, 0, 0, 2], 'result': 1}, {'input': [1, 0, 0.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 16.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 30.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 34.5, 0, 0, 0], 'result': 0}, {'input': [3, 0, 17.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 42.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 8, 2, 2], 'result': 0}, {'input': [3, 0, 35.0, 0, 0, 0], 'result': 0}, {'input': [2, 0, 28.0, 0, 1, 2], 'result': 0}, {'input': [1, 1, 0.0, 1, 0, 0], 'result': 1}, {'input': [3, 0, 4.0, 4, 2, 2], 'result': 0}, {'input': [3, 0, 74.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 9.0, 1, 1, 0], 'result': 0}, {'input': [1, 1, 16.0, 0, 1, 2], 'result': 1}, {'input': [2, 1, 44.0, 1, 0, 2], 'result': 0}, {'input': [3, 1, 18.0, 0, 1, 2], 'result': 1}, {'input': [1, 1, 45.0, 1, 1, 2], 'result': 1}, {'input': [1, 0, 51.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 24.0, 0, 3, 0], 'result': 1}, {'input': [3, 0, 0.0, 0, 0, 0], 'result': 0}, {'input': [3, 0, 41.0, 2, 0, 2], 'result': 0}, {'input': [2, 0, 21.0, 1, 0, 2], 'result': 0}, {'input': [1, 1, 48.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 8, 2, 2], 'result': 0}, {'input': [2, 0, 24.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 42.0, 0, 0, 2], 'result': 1}, {'input': [2, 1, 27.0, 1, 0, 0], 'result': 1}, {'input': [1, 0, 31.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 4.0, 1, 1, 2], 'result': 1}, {'input': [3, 0, 26.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 47.0, 1, 1, 2], 'result': 1}, {'input': [1, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 47.0, 0, 0, 2], 'result': 0}, {'input': [2, 1, 28.0, 1, 0, 0], 'result': 1}, {'input': [3, 1, 15.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 20.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 19.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 0.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 56.0, 0, 1, 0], 'result': 1}, {'input': [2, 1, 25.0, 0, 1, 2], 'result': 1}, {'input': [3, 0, 33.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 22.0, 0, 0, 2], 'result': 0}, {'input': [2, 0, 28.0, 0, 0, 2], 'result': 0}, {'input': [3, 0, 25.0, 0, 0, 2], 'result': 0}, {'input': [3, 1, 39.0, 0, 5, 1], 'result': 0}, {'input': [2, 0, 27.0, 0, 0, 2], 'result': 0}, {'input': [1, 1, 19.0, 0, 0, 2], 'result': 1}, {'input': [3, 1, 0.0, 1, 2, 2], 'result': 0}, {'input': [1, 0, 26.0, 0, 0, 0], 'result': 1}, {'input': [3, 0, 32.0, 0, 0, 1], 'result': 0}]
  212.  
  213. if __name__ == "__main__":
  214.     def knngaussian(d,v):
  215.         return weightedknn(d,v,k=4,weightf=gaussian)
  216.     costf=createcostfunction(knngaussian,datalist)
  217.     try:
  218.         import psyco
  219.         psyco.full()
  220.     except:
  221.         print 'Unable to import psyco'
  222.     domain=[(0,10)]*6
  223.     paused=raw_input('Press <ENTER> to annealingoptimize')
  224.     a=annealingoptimize(domain,costf,step=2)
  225.     print a
  226.     paused=raw_input('Press <ENTER> to geneticoptimize')
  227.     a=geneticoptimize(domain,costf,popsize=5,step=2,elite=0.2,maxiter=20)
  228.     print a
  229.     paused=raw_input('Press <ENTER> to hillclimb')
  230.     a=hillclimb(domain,costf)
  231.     print a
  232.     paused=raw_input('Press <ENTER> to randomrestart_annealing')
  233.     a=randomrestart_annealing(domain,costf,T1=10000.0,cool=0.95,step=2,maxiter=100)
  234.     print a
  235.  
  236. """
  237. #######################
  238. # The data dictionary #
  239. #######################
  240. This is an Anonymized verzion of the Dataset.
  241.  
  242. "input"
  243. *******
  244. 0 - 1:upper,2:middle,3:lower class
  245. 1 - 0:male, 1:female
  246. 2 - age
  247. 3 - number of spouses and siblings onboard
  248. 4 - number of parents and children onboard
  249. 5 - point of departure 0:Cherbourg, 1:Queenstown, 2:Southhampton
  250.  
  251. "result"
  252. ********
  253. 0 - Died
  254. 1 - Survived
  255.  
  256. [8, 0, 0, 7, 1, 3]   - annealing
  257. [9, 3, 2, 6, 2, 1]
  258. [6, 5, 2, 2, 0, 9]
  259.  
  260. """
Advertisement
Add Comment
Please, Sign In to add comment