7 #endif /* __cplusplus */
9 typedef double (*nlopt_func)(int n, const double *x,
10 double *gradient, /* NULL if not needed */
14 /* non-gradient algorithms */
15 NLOPT_GLOBAL_DIRECT = 0,
16 NLOPT_GLOBAL_DIRECT_L,
19 /* gradient-based algorithms */
21 NLOPT_GLOBAL_STOGO_RANDOMIZED,
24 NLOPT_NUM_ALGORITHMS /* not an algorithm, just the number of them */
27 extern const char *nlopt_algorithm_name(nlopt_algorithm a);
30 NLOPT_FAILURE = -1, /* generic failure code */
31 NLOPT_INVALID_ARGS = -2,
32 NLOPT_OUT_OF_MEMORY = -3,
34 NLOPT_SUCCESS = 1, /* generic success code */
35 NLOPT_FMIN_MAX_REACHED = 2,
36 NLOPT_FTOL_REACHED = 3,
37 NLOPT_XTOL_REACHED = 4,
38 NLOPT_MAXEVAL_REACHED = 5,
39 NLOPT_MAXTIME_REACHED = 6
42 extern nlopt_result nlopt_minimize(
43 nlopt_algorithm algorithm,
44 int n, nlopt_func f, void *f_data,
45 const double *lb, const double *ub, /* bounds */
46 double *x, /* in: initial guess, out: minimizer */
47 double *fmin, /* out: minimum */
48 double fmin_max, double ftol_rel, double ftol_abs,
49 double xtol_rel, const double *xtol_abs,
50 int maxeval, double maxtime);
52 extern void nlopt_srand(unsigned long seed);
53 extern void nlopt_srand_time(void);
55 extern void nlopt_version(int *major, int *minor, int *bugfix);
59 #endif /* __cplusplus */