Specifies the name of a user-written function call to provide a specific ga capability (e.g., crossover, mutation, etc.).
This function MUST be used when using a non-native datatype and must be called once for each of:
PGA_USERFUNCTION_CREATESTRING -- String creation PGA_USERFUNCTION_MUTATION -- Mutation PGA_USERFUNCTION_CROSSOVER -- Crossover PGA_USERFUNCTION_PRINTSTRING -- String Output PGA_USERFUNCTION_COPYSTRING -- Duplication PGA_USERFUNCTION_DUPLICATE -- Duplicate Checking PGA_USERFUNCTION_INITSTRING -- Initialization PGA_USERFUNCTION_BUILDDATATYPE -- MPI Datatype creation PGA_USERFUNCTION_STOPCOND -- Stopping conditions PGA_USERFUNCTION_ENDOFGEN -- Auxiliary functions at the end of each generation
It MAY be called when using a native datatype to replace the built-in functions PGAPack has for that datatype (For example, if the Integer data type is used for a traveling salesperson problem, the user may want to provide their own custom crossover operator). See the user guide and the examples in the examples directory for more details.
ctx
- context variable
constant
- symbolic constant of the user function to set
f
- name of the function to use
none
#include "pgapack.h" void PGASetUserFunction(ctx, constant, f) PGAContext *ctx int constant void *f
user.c
Example: void MyStringInit(PGAContext *, void *); PGAContext *ctx; : PGASetUserFunction(ctx, PGA_USERFUNCTION_INITSTRING, MyStringInit);