-/* Copyright (c) 2007-2009 Massachusetts Institute of Technology
+/* Copyright (c) 2007-2014 Massachusetts Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
unsigned n; /* the dimension of the problem (immutable) */
nlopt_func f; void *f_data; /* objective function to minimize */
+ nlopt_precond pre; /* optional preconditioner for f (NULL if none) */
+ int maximize; /* nonzero if we are maximizing, not minimizing */
double *lb, *ub; /* lower and upper bounds (length n) */
unsigned p_alloc; /* number of inequality constraints allocated */
nlopt_constraint *h; /* equality constraints, length p_alloc */
+ nlopt_munge munge_on_destroy, munge_on_copy; /* hack for wrappers */
+
/* stopping criteria */
- double minf_max; /* stop when f < minf_max */
+ double stopval; /* stop when f reaches stopval or better */
double ftol_rel, ftol_abs; /* relative/absolute f tolerances */
double xtol_rel, *xtol_abs; /* rel/abs x tolerances */
int maxeval; /* max # evaluations */
double maxtime; /* max time (seconds) */
+ int force_stop; /* if nonzero, force a halt the next time we
+ try to evaluate the objective during optimization */
+ /* when local optimization is used, we need a force_stop in the
+ parent object to force a stop in child optimizations */
+ struct nlopt_opt_s *force_stop_child;
+
/* algorithm-specific parameters */
nlopt_opt local_opt; /* local optimizer */
unsigned stochastic_population; /* population size for stochastic algs */
double *dx; /* initial step sizes (length n) for nonderivative algs */
+ unsigned vector_storage; /* max subspace dimension (0 for default) */
+
+ void *work; /* algorithm-specific workspace during optimization */
+
+ char *errmsg; /* description of most recent error */
};
/*********************************************************************/
-extern int nlopt_srand_called; /* whether the random seed is initialized */
+extern void nlopt_srand_time_default(void); /* init the rand. seed only if unset */
/*********************************************************************/
/* global defaults set by deprecated API: */
/*********************************************************************/
+#define RETURN_ERR(err, opt, msg) do { \
+ nlopt_set_errmsg(opt, msg); \
+ return err; \
+} while (0)
+
+extern const char *nlopt_set_errmsg(nlopt_opt opt, const char *format, ...)
+#ifdef __GNUC__
+__attribute__ ((format (printf, 2, 3)))
+#endif
+;
+extern void nlopt_unset_errmsg(nlopt_opt opt);
+
+/*********************************************************************/
+
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */