Your missing a function around your code, e.g. main().
The lines you have to add are marked with "+" (but that's a basic "C"
question)
Cheers,
Gert
On Tue, 2013-04-23 at 02:35 +0400, Alexander Eliseev wrote:
> Good afternoon nlopt users.
>
> How are you?
>
> I installed nlopt and tried to run the tutorial example on c. Here is my
> file:
> ----------------------------------------------------------------------------------
> #include <math.h>
> #include <nlopt.h>
+ #include <stdio.h> /* because of the printf */
>
> double myfunc(unsigned n, const double *x, double *grad, void *my_func_data)
> {
> if (grad) {
> grad[0] = 0.0;
> grad[1] = 0.5 / sqrt(x[1]);
> }
> return sqrt(x[1]);
> }
> typedef struct {
> double a, b;
> } my_constraint_data;
>
> double myconstraint(unsigned n, const double *x, double *grad, void *data)
> {
> my_constraint_data *d = (my_constraint_data *) data;
> double a = d->a, b = d->b;
> if (grad) {
> grad[0] = 3 * a * (a*x[0] + b) * (a*x[0] + b);
> grad[1] = -1.0;
> }
> return ((a*x[0] + b) * (a*x[0] + b) * (a*x[0] + b) - x[1]);
> }
>
+int main(int argc, const char **argv)
+{
> double lb[2] = { -HUGE_VAL, 0 }; /* lower bounds */
> nlopt_opt opt;
>
> opt=nlopt_create(NLOPT_LD_MMA, 2); /* algorithm and dimensionality */
> nlopt_set_lower_bounds(opt, lb);
> nlopt_set_min_objective(opt, myfunc, NULL);
> my_constraint_data data[2] = { {2,0}, {-1,1} };
> nlopt_add_inequality_constraint(opt, myconstraint, &data[0], 1e-8);
> nlopt_add_inequality_constraint(opt, myconstraint, &data[1], 1e-8);
> nlopt_set_xtol_rel(opt, 1e-4);
> double x[2] = { 1.234, 5.678 }; /* some initial guess */
> double minf; /* the minimum objective value, upon return */
>
> if (nlopt_optimize(opt, x, &minf) < 0) {
> printf("nlopt failed!\n");
> }
> else {
> printf("found minimum at f(%g,%g) = %0.10g\n", x[0], x[1], minf);
> }
> nlopt_destroy(opt);
+}
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss