BayesOpt
eval_branin_xml.py
1 #!/usr/bin/env python
2 
3 # Imports
4 try:
5  import sys
6  import traceback
7  import xml.dom.minidom as minidom
8  from time import sleep
9  from random import randint
10  from math import sin, cos, pi
11 except ImportError, err:
12  print "ERROR: Cannot load module: %s" % (err)
13  sys.exit(2)
14 
15 def sqr(x):
16  return x*x
17 
18 def branin(x, y):
19  # sqr(y-(5.1/(4*sqr(M_PI)))*sqr(x)
20  # +5*x/M_PI-6)+10*(1-1/(8*M_PI))*cos(x)+10;
21  return sqr(y-(5.1/(4*sqr(pi)))*sqr(x)+5*x/pi-6)+10*(1-1/(8*pi))*cos(x)+10
22 #} end branin
23 
24 # main function implementation
25 def main(argv):
26  if len(argv) != 2:
27  print "ERROR: 2 arguments required"
28  return
29 
30  inputFilename = argv[0];
31  outputFilename = argv[1];
32 
33  # Read parameters from xml document
34  try:
35  doc = minidom.parse(inputFilename)
36  except:
37  print "Unable to open and parse input xml file: " + inputFilename
38  return
39 
40  node = doc.getElementsByTagName("node")[0]
41  x1 = float(node.getAttribute("par1"))
42  x2 = float(node.getAttribute("par2"))
43 
44  # Some random delay
45  ms = randint(0,500)/1000.0
46  sleep(ms)
47  print "Python: delay = " + str(ms) + " ms."
48 
49  # Output results into file
50  # TODO (Javier): Change into XML
51  y = branin(float(x1)*15-5,float(x2)*15)
52  f1=open(outputFilename, "w+")
53  f1.write("y="+str(y))
54 #}end main
55 
56 # Execution
57 try:
58  if __name__ == '__main__' :
59  main(sys.argv[1:])
60 except Exception, e:
61  tb = sys.exc_info()[2]
62  traceback.print_exception(e.__class__, e, tb)