Name | Modified | Size | Downloads / Week |
---|---|---|---|
optlib-1.1.3.tar.gz | 2012-04-20 | 37.3 kB | |
OPTLIB Manual 1.1.3.docx | 2012-04-20 | 22.9 kB | |
README | 2012-04-10 | 1.9 kB | |
optlib-1.1.2.tar.gz | 2012-04-05 | 36.1 kB | |
optlib-1.1.1.tar.gz | 2012-04-05 | 232.6 kB | |
optlib.1.1.tgz | 2012-04-04 | 32.8 kB | |
optlib-1.0.tgz | 2012-03-14 | 57.0 kB | |
Totals: 7 Items | 420.7 kB | 0 |
version 1.1.3 OPTLIB is an optimization library. The standard usage is to minimize a function that returns a double variable based on some array of inputs that are also stored as doubles. OPTLIB currently supports minimization by Powell's method, Monte Carlo trials of Powell's method, a Genetic Algorithm, and ensemble-based Simulated Annealing. OPTLIB requires the user to specify a function of the form double func(double * x, void * func_data). func_data is a user specified structure which can be NULL that is passed directly to func, allowing the user to pass parameters to func without specifying them as global variables. A typical use of optlib is as follows: double func(double *x, void * func_data) { int * fcount = (int *)func_data; fcount++; return x[0]*x[0]+x[1]*x[1]; // x^2+y^2; } int main(int argc, char ** argv) { OptLibOpts * theOpts; int fcount=0; seed_by_time(0); theOpts = OPTLIB_CreateOpts(); //set up default options theOpts->ga_npools=1; // override defaults (see optlib.c optlib.h) theOpts->method = OPTLIB_METHOD_GA; //set method, default is GA guess[0]=...; //initialize guess guess[1]=...; OPTLIB_Minimize(n,guess,&func,(void *)&fcount,theOpts); // minimize printf("SOLUTION %g %g\n",guess[0], guess[1]); printf("TOTAL FUNCTION CALLS %d\n",fcount); OPTLIB_DestroyOpts(theOpts); //free memory } MPI OPTLIB Driver routines exist in the source directory showing the use of OptLib with MPI options turned on. To compile libopt_mpi.a, set USE_MPI to ON in cmake. This will create libopt_mpi.a instead of libopt.a. When implementing, include <libopt_mpi.h> instead of <libopt.h> (which will define the preprocessor variable USE_OPTMPI), and link using the -lopt_mpi flag instead of the -lopt flag. libopt_mpi uses the MPI_COMM_WORLD communicator at this time, the option to set your own communicator will be added in the future.