chiark / gitweb /
put source code into src subdirectory
[nlopt.git] / src / algs / direct / direct.h
1 #ifndef DIRECT_H
2 #define DIRECT_H
3
4 #include <math.h>
5 #include <stdio.h>
6
7 #ifdef __cplusplus
8 extern "C"
9 {
10 #endif /* __cplusplus */
11
12 typedef double (*direct_objective_func)(int n, const double *x,
13                                         int *undefined_flag, 
14                                         void *data);
15
16 typedef enum {
17      DIRECT_ORIGINAL, DIRECT_GABLONSKY
18 } direct_algorithm;
19
20 typedef enum {
21      DIRECT_INVALID_BOUNDS = -1,
22      DIRECT_MAXFEVAL_TOOBIG = -2,
23      DIRECT_INIT_FAILED = -3,
24      DIRECT_SAMPLEPOINTS_FAILED = -4,
25      DIRECT_SAMPLE_FAILED = -5,
26      DIRECT_MAXFEVAL_EXCEEDED = 1,
27      DIRECT_MAXITER_EXCEEDED = 2,
28      DIRECT_GLOBAL_FOUND = 3,
29      DIRECT_VOLTOL = 4,
30      DIRECT_SIGMATOL = 5,
31      DIRECT_MAXTIME_EXCEEDED = 6,
32
33      DIRECT_OUT_OF_MEMORY = -100,
34      DIRECT_INVALID_ARGS = -101,
35      DIRECT_FORCED_STOP = -102
36 } direct_return_code;
37
38 #define DIRECT_UNKNOWN_FGLOBAL (-HUGE_VAL)
39 #define DIRECT_UNKNOWN_FGLOBAL_RELTOL (0.0)
40
41 extern direct_return_code direct_optimize(
42      direct_objective_func f, void *f_data,
43      int dimension,
44      const double *lower_bounds, const double *upper_bounds,
45
46      double *x, double *minf, 
47
48      int max_feval, int max_iter, 
49      double start, double maxtime,
50      double magic_eps, double magic_eps_abs,
51      double volume_reltol, double sigma_reltol,
52      int *force_stop,
53
54      double fglobal,
55      double fglobal_reltol,
56
57      FILE *logfile,
58      direct_algorithm algorithm);
59
60 #ifdef __cplusplus
61 }  /* extern "C" */
62 #endif /* __cplusplus */
63
64 #endif /* DIRECT_H */