automl / RoBO

RoBO: a Robust Bayesian Optimization framework
BSD 3-Clause "New" or "Revised" License
481 stars 133 forks source link

Can't run example_fmin.py #66

Closed dli1 closed 6 years ago

dli1 commented 7 years ago

Hi, I just installed RoBo.

I want to try an example first, but I found an error seems to occur related to DIRECT. Do you know why this happens?

INFO:robo.solver.bayesian_optimization:Evaluate: [ 3.30771226]
INFO:robo.solver.bayesian_optimization:Configuration achieved a performance of -23.418709 in 0.000019 seconds
INFO:robo.solver.bayesian_optimization:Evaluate: [ 5.74534538]
INFO:robo.solver.bayesian_optimization:Configuration achieved a performance of -146.883201 in 0.000009 seconds
INFO:robo.solver.bayesian_optimization:Evaluate: [ 0.212455]
INFO:robo.solver.bayesian_optimization:Configuration achieved a performance of -4.147487 in 0.000008 seconds
INFO:robo.solver.bayesian_optimization:Start iteration 3 ... 
INFO:robo.solver.bayesian_optimization:Train model...
INFO:robo.solver.bayesian_optimization:Time to train the model: 1.350918
INFO:robo.solver.bayesian_optimization:Maximize acquisition function...
Call-back cb_fcn_in_direct__user__routines failed.
Traceback (most recent call last):
  File "/Users/danli/Documents/Project/boir/code/RoBO-master/examples/example_fmin.py", line 22, in <module>
    results = bayesian_optimization(objective_function, lower, upper, num_iterations=50)
  File "/Users/danli/Documents/Project/boir/code/RoBO-master/robo/fmin/bayesian_optimization.py", line 131, in bayesian_optimization
    x_best, f_min = bo.run(num_iterations)
  File "/Users/danli/Documents/Project/boir/code/RoBO-master/robo/solver/bayesian_optimization.py", line 167, in run
    new_x = self.choose_next(self.X, self.y, do_optimize)
  File "/Users/danli/Documents/Project/boir/code/RoBO-master/robo/solver/bayesian_optimization.py", line 245, in choose_next
    x = self.maximize_func.maximize()
  File "/Users/danli/Documents/Project/boir/code/RoBO-master/robo/maximizers/direct.py", line 69, in maximize
    maxf=self.n_func_evals)
  File "/Users/danli/anaconda/envs/py3/lib/python3.6/site-packages/DIRECT/__init__.py", line 202, in solve
    cdata
ValueError: data type must provide an itemsize

Process finished with exit code 1
aaronkl commented 7 years ago

hmm ... I can't reproduce the error here with the data from your log output. It looks like you run it on Windows? I am afraid that Direct doesn't work on Windows because of fortran code.

dli1 commented 7 years ago

I use Mac Serra 10.12.5. I install DIRECT by pip install direct, its version is DIRECT (1.0.1). I really have no idea about the error. Do you have any hint?

Btw, example_blr.py can run well.

aaronkl commented 7 years ago

I'm afraid Direct doesn't support Mac OS either. I've added a simple random sampling maximizer, that probably doesn't work as well as Direct but should still be effective in a one dimensional input space. If the dimensionality increases you should use CMAES instead (which unfortunately doesn't work in a one dimensional space) Just check out the master branch and set maximizer="random" in the bayesian_optimization function call.

dli1 commented 7 years ago

Well, thank you very much. Good to know that. I will try it again on Linux.