Julia¶
In this page we briefly discuss the Julia wrapper, which provides most of Optunity’s functionality. For a general overview, we recommend reading the User Guide.
For installation instructions, please refer to Installing Optunity and in particular to Installing Optunity for Julia.
Manual¶
For Julia the following main functions are available:
-
minimize
(f[, named_args])¶ Perform minimization of the function
f
based on the providednamed_args
parameters.Parameters: - f – minimized function (can be an anonymous or any multi-argument function, or a function accepting
Dict
) - named_args – various arguments can be provided, such as
num_evals
,solver_name
, but mandatory named arguments are related to the hard constraint on the domain of the functionf
(for instancex=[-5,5]
).
Returns: vars::Dict
,details::Dict
If
f
is provided in the anonymous or multi-argument form then the order of the provided hard constraints matter. For instance if one defines:f = (x,y,z) -> (x-1)^2 + (y-2)^2 + (z+3)^4
or:
f(x,y,z) = (x-1)^2 + (y-2)^2 + (z+3)^4
then we strictly require to provide among other named arguments the following hard constraints:
x=[lb,ub], y=[lb,ub], z=[lb,ub]
If one provides a function accepting
Dict
then the order of the provided hard constraints does not matter.- f – minimized function (can be an anonymous or any multi-argument function, or a function accepting
-
maximize
(f[, named_args])¶ Perform maximization of the function
f
based on the providednamed_args
parameters.Parameters: - f – minimized function (can be an anonymous or any multi-argument function, or a function accepting
Dict
) - named_args – various arguments can be provided, such as
num_evals
,solver_name
, but mandatory named arguments are related to the hard constraint on the domain of the functionf
(for instancex=[-5,5]
).
- f – minimized function (can be an anonymous or any multi-argument function, or a function accepting
Examples¶
using Base.Test
vars, details = minimize((x,y,z) -> (x-1)^2 + (y-2)^2 + (z+3)^4, x=[-5,5], y=[-5,5], z=[-5,5])
@test_approx_eq_eps vars["x"] 1.0 1.
@test_approx_eq_eps vars["y"] 2.0 1.
@test_approx_eq_eps vars["z"] -3.0 1.
testit(x,y,z) = (x-1)^2 + (y-2)^2 + (z+3)^4
vars, details = minimize(testit, num_evals=10000, solver_name="grid search", x=[-5,5], y=[-5,5], z=[-5,5])
@test_approx_eq_eps vars["x"] 1.0 .2
@test_approx_eq_eps vars["y"] 2.0 .2
@test_approx_eq_eps vars["z"] -3.0 .2
testit_dict(d::Dict) = -(d[:x]-1)^2 - (d[:y]-2)^2 - (d[:z]+3)^4
vars, details = maximize(testit_dict, num_evals=10000, z=[-5,5], y=[-5,5], x=[-5,5])
@test_approx_eq_eps vars["x"] 1.0 .2
@test_approx_eq_eps vars["y"] 2.0 .2
@test_approx_eq_eps vars["z"] -3.0 .2