nlopt_wrapper.cpp
Go to the documentation of this file.
1 #include <stdio.h>
2 #include <iostream>
3 #include <sstream>
4 #include <stdlib.h>
5 #include <vector>
6 #include <nlopt.h>
7 
8 #include "nlopt_solver.h"
9 //#include "eus_function.cpp"
10 
11 int result = 0;
13 
14 extern "C"{
15 int get_result(){ return result+5 ; }
16 }
17 
18 extern "C"{
19 int stop(){
20  if ( nos_buf ) nos_buf->stop() ;
21  return 0 ;
22 }
23 }
24 
25 extern "C"{
26 double* optimize(double* x,
27  const double* x_min,
28  const double* x_max,
29  int (*f)(double*,double*), int (*df)(double*,double*),
30  int (*g)(double*,double*), int (*dg)(double*,double*),
31  int (*h)(double*,double*), int (*dh)(double*,double*),
32  int m_x, int m_g, int m_h,
33  double ftol, double xtol, double eqthre, int max_eval, double max_time,
34  int log,
36  double* fbuf, double* dfbuf, double* gbuf, double* dgbuf, double* hbuf, double* dhbuf) {
37  // if ( ! nos_buf ) {
38  NLoptSolver nos(x, x_min, x_max, f, df, g, dg, h, dh, m_x, m_g, m_h, ftol,xtol,eqthre,max_eval,max_time,
39  (Optimization::NLopt::Algorithm) algorithm);
40  nos_buf = &nos ;
41  free(nos.fbuf); free(nos.dfbuf); free(nos.gbuf);
42  free(nos.dgbuf); free(nos.hbuf); free(nos.dhbuf);
43  nos.fbuf = fbuf ; nos.dfbuf = dfbuf ;
44  nos.gbuf = gbuf ; nos.dgbuf = dgbuf ;
45  nos.hbuf = hbuf ; nos.dhbuf = dhbuf ;
46  result = nos.Optimize();
47  if ( log ) nos.output_result(result) ;
48  nos_buf = 0 ;
49  return x;
50 }
51 }
int get_result()
double * fbuf
Definition: nlopt_solver.h:37
int result
Algorithm
NLoptに実装されているアルゴリズム
Definition: my_param.h:41
double * gbuf
Definition: nlopt_solver.h:37
double * hbuf
Definition: nlopt_solver.h:37
double * dfbuf
Definition: nlopt_solver.h:37
double * dhbuf
Definition: nlopt_solver.h:37
int stop()
double * dgbuf
Definition: nlopt_solver.h:37
void output_result(int result)
Definition: nlopt_solver.h:69
NLoptSolver * nos_buf
int f(double *x, double *ret)
Definition: test.cpp:11
double * optimize(double *x, const double *x_min, const double *x_max, int(*f)(double *, double *), int(*df)(double *, double *), int(*g)(double *, double *), int(*dg)(double *, double *), int(*h)(double *, double *), int(*dh)(double *, double *), int m_x, int m_g, int m_h, double ftol, double xtol, double eqthre, int max_eval, double max_time, int log, Optimization::NLopt::Algorithm algorithm, double *fbuf, double *dfbuf, double *gbuf, double *dgbuf, double *hbuf, double *dhbuf)
int df(double *x, double *grad)
Definition: test.cpp:17


eus_nlopt
Author(s):
autogenerated on Fri May 14 2021 02:51:41