Hellow,
Can some one tell me in detail how to compile and execute the
nlopt_optimize-mex.c file in matlab, I have been struggling with this. I am
using Linux with Fedora 13.

Matlab produced the bellow errors when I excuted with mex command

>> mex nlopt_optimize-mex.c

nlopt_optimize-mex.o: In function `make_opt':
nlopt_optimize-mex.c:(.text+0x3d3): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x3dd): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x40e): undefined reference to `nlopt_create'
nlopt_optimize-mex.c:(.text+0x428): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x432): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x481): undefined reference to
`nlopt_set_lower_bounds'
nlopt_optimize-mex.c:(.text+0x4b4): undefined reference to
`nlopt_set_upper_bounds'
nlopt_optimize-mex.c:(.text+0x4d4): undefined reference to
`nlopt_set_stopval'
nlopt_optimize-mex.c:(.text+0x4ef): undefined reference to
`nlopt_set_ftol_rel'
nlopt_optimize-mex.c:(.text+0x50a): undefined reference to
`nlopt_set_ftol_abs'
nlopt_optimize-mex.c:(.text+0x525): undefined reference to
`nlopt_set_xtol_rel'
nlopt_optimize-mex.c:(.text+0x554): undefined reference to
`nlopt_set_xtol_abs'
nlopt_optimize-mex.c:(.text+0x597): undefined reference to
`nlopt_set_maxeval'
nlopt_optimize-mex.c:(.text+0x5b2): undefined reference to
`nlopt_set_maxtime'
nlopt_optimize-mex.c:(.text+0x5d2): undefined reference to
`nlopt_set_population'
nlopt_optimize-mex.c:(.text+0x5f2): undefined reference to
`nlopt_set_vector_storage'
nlopt_optimize-mex.c:(.text+0x630): undefined reference to
`nlopt_set_initial_step'
nlopt_optimize-mex.c:(.text+0x680): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x68a): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x6c1): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x6cb): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x6ea): undefined reference to
`nlopt_set_local_optimizer'
nlopt_optimize-mex.c:(.text+0x6f2): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.o: In function `mexFunction':
nlopt_optimize-mex.c:(.text+0x75c): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x799): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x829): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0x8ad): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.o:nlopt_optimize-mex.c:(.text+0x939): more undefined
references to `nlopt_destroy' follow
nlopt_optimize-mex.o: In function `mexFunction':
nlopt_optimize-mex.c:(.text+0xa17): undefined reference to
`nlopt_set_min_objective'
nlopt_optimize-mex.c:(.text+0xa2f): undefined reference to
`nlopt_set_max_objective'
nlopt_optimize-mex.c:(.text+0xa91): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xb5e): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xba8): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xc65): undefined reference to
`nlopt_add_inequality_constraint'
nlopt_optimize-mex.c:(.text+0xc87): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xd0b): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xdda): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xe26): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xee3): undefined reference to
`nlopt_add_equality_constraint'
nlopt_optimize-mex.c:(.text+0xf07): undefined reference to `nlopt_destroy'
nlopt_optimize-mex.c:(.text+0xf8c): undefined reference to `nlopt_optimize'
nlopt_optimize-mex.c:(.text+0xfbc): undefined reference to `nlopt_destroy'
collect2: ld returned 1 exit status

mex: link of ' "nlopt_optimize-mex.mexa64"' failed.

??? Error using ==> mex at 221
Unable to complete successfully.

Any suggestions will be greatful.

Best
Pattabhi

On Thu, Dec 1, 2011 at 11:22 AM, Pattabhi Ramaiah <[email protected]>wrote:

> Dear All,
> This question may look trivial, but I am facing problem.
>
> I am working with nlopt-2.2.4, linux version and my interest is in linking
> nlopt with MATLAB. I think I am able to install correctly using
>
> ./configure MEX=/data/ab/cd/ef/gh/nlopt-2.2.4/octave
> make
> make install
>
> after this the an executable for dummy.c is generated and it prints Hellow
> world. So I assume my compilation of nlopt is correct.
>
> But when I tried to compile nlopt_optimize-mex.c using matlab mex, like *mex 
> nlopt_optimize-mex.c
> *in the matlab command window, matlab printed the following errors
>
> nlopt_optimize-mex.c:31:19: error: nlopt.h: No such file or directory
> nlopt_optimize-mex.c:122: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or
> ‘__attribute__’ before ‘make_opt’
> nlopt_optimize-mex.c: In function ‘mexFunction’:
> nlopt_optimize-mex.c:181: error: ‘nlopt_result’ undeclared (first use in
> this function)
> nlopt_optimize-mex.c:181: error: (Each undeclared identifier is reported
> only once
> nlopt_optimize-mex.c:181: error: for each function it appears in.)
> nlopt_optimize-mex.c:181: error: expected ‘;’ before ‘ret’
> nlopt_optimize-mex.c:184: error: ‘nlopt_opt’ undeclared (first use in this
> function)
> nlopt_optimize-mex.c:184: error: expected ‘;’ before ‘opt’
> nlopt_optimize-mex.c:186: error: ‘opt’ undeclared (first use in this
> function)
> nlopt_optimize-mex.c:302: error: ‘ret’ undeclared (first use in this
> function)
>
> I could compile all the example mex files in matlab mex folder, so I
> assume my matlab mex is working fine.
>
> Also I am not successful in compiling *nlopt_optimize-mex.c *on the unix
> terminal.
>
> I also tried to change the configure file to matlab root folder as given
> below and reinstall nlopt
>
> ./configure MEX=/opt/matlabR2009b/extern/examples/mex
> make
> make install
>
> but still not successful in compiling the *mex nlopt_optimize-mex.c.*
> *
> *
> Apart from that, I tried to work on the example problem given in the
> tutorial
> *
> *
> myfunc.m
> function [val, gradient] = myfunc(x)
>     val = sqrt(x(2));
>     if (nargout > 1)
>         gradient = [0, 0.5 / val];
>     end
>
> myconstraint.m
> function [val, gradient] = myconstraint(x,a,b)
>     val = (a*x(1) + b)^3 - x(2);
>     if (nargout > 1)
>         gradient = [3*a*(a*x(1) + b)^2, -1];
>     end
>
> and test.m
>
> opt.algorithm = NLOPT_LD_MMA
> opt.lower_bounds = [-inf, 0]
> opt.min_objective = @myfunc
> opt.fc = { (@(x) myconstraint(x,2,0)), (@(x) myconstraint(x,-1,1)) }
> opt.fc_tol = [1e-8, 1e-8];
> opt.xtol_rel = 1e-4
>
> [xopt, fmin, retcode] = nlopt_optimize(opt, [1.234 5.678])
>
> but matlab says: *Attempt to execute SCRIPT nlopt_optimize as a function:*
> *
> *
> Any thoughts would be appreciated. Thanks in advance.
>
> Best regards
> Pattabhi
>
_______________________________________________
NLopt-discuss mailing list
[email protected]
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/nlopt-discuss

Reply via email to