diff options
Diffstat (limited to 'math/py-nlopt/files/example.py')
| -rw-r--r-- | math/py-nlopt/files/example.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/math/py-nlopt/files/example.py b/math/py-nlopt/files/example.py new file mode 100644 index 000000000000..bcde61ba78f8 --- /dev/null +++ b/math/py-nlopt/files/example.py @@ -0,0 +1,24 @@ +import nlopt +from numpy import * +def myfunc(x, grad): + if grad.size > 0: + grad[0] = 0.0 + grad[1] = 0.5 / sqrt(x[1]) + return sqrt(x[1]) +def myconstraint(x, grad, a, b): + if grad.size > 0: + grad[0] = 3 * a * (a*x[0] + b)**2 + grad[1] = -1.0 + return (a*x[0] + b)**3 - x[1] +opt = nlopt.opt(nlopt.LD_MMA, 2) +opt.set_lower_bounds([-float('inf'), 0]) +opt.set_min_objective(myfunc) +opt.add_inequality_constraint(lambda x,grad: myconstraint(x,grad,2,0), 1e-8) +opt.add_inequality_constraint(lambda x,grad: myconstraint(x,grad,-1,1), 1e-8) +opt.set_xtol_rel(1e-4) +x = opt.optimize([1.234, 5.678]) +minf = opt.last_optimum_value() +print("optimum at ", x[0], x[1]) +print("minimum value = ", minf) +print("result code = ", opt.last_optimize_result()) + |
