Changes in Version 1.0 ====================== 1) Added support for parallel execution of the global model (single population) using MPI (Message Passing Interface). 2) Added support for a restart operator. The best string is used to reinitialize the population. 3) Added support for new native data type Character. 4) Added support to specify the multiplier of the worst evaluation value when remapping a minimization problem. 5) Separated specification of mutation type from rate. 6) Added new integer mutation operators. 7) Added an option to maintain integer and real allele values within the range specified on initialization after mutation. 8) The configure script argument -optimize has been removed and replaced with the -debug switch for compiling a debug version. An optimized version of PGAPack is now built by default. 9) The configure script argument -arch AIX has been replaced with -arch rs6000. 10) The configure script now accepts the -cflags and -flags switchs to supply supply options to the C and FORTRAN compiler, respectively. 11) Changed PGATRUE and PGAFALSE to PGA_TRUE and PGA_FALSE. 12) Renamed debug macros to begin with PGA_DEBUG instead of PGADEBUG. 13) Renamed report macros to begin with PGA_REPORT (instead of, for example PGA_ONLINE). 14) Removed macro PGAERROR from pgapack.h. 15) Rewrote PGARandomInterval(ctx, L, U) so that it would not return L-1. It now returns [L, U]. 16) PGADone, PGAUpdateGenertaion and PGAEvaluate all take an MPI communicator as the last argument. See PGARunGM in parallel.c for details on how to rewrite a user run routine. 17) Removed "Time" from the output. 18) Shortened the names of the source files as follows: character.c char.c crossover.c cross.c duplicate.c duplcate.c f2c_interface.c f2c.c 19) Shortened the name of the examples files as follows: maxbit_custom.c maxbitc.c maxbit_menu.c maxbitm.c maxint_custom.c maxbitc.c rastrigin.c rstrgnb.c real_rastrigin.c rstrgnr.c udt_struct.c udtstr.c udt_struct_array.c udtastr.c 20) Replaced the function names on the left with the function names on the right. The Perl script ./util/upgrade_script.pl may be of use in automating part of the renaming process on exisiting files. PGABinaryBuildIndividualDatatype() -> PGABinaryBuildDatatype() PGABinaryRandomize() -> PGABinaryInitString() PGABinaryWrite() -> PGABinaryPrint() PGABinaryWriteString() -> PGABinaryPrintString() PGABuildIndividualDatatype() -> PGABuildDatatype() PGACharacterBuildIndividualDatatype() -> PGACharacterBuildDatatype() PGACharacterRandomize() -> PGACharacterInitString() PGACharacterWriteString() -> PGACharacterPrintString() PGAFitnessLinNor() -> PGAFitnessLinearNormal() PGAFitnessLinRank() -> PGAFitnessLinearRank() PGAFitnessMinRecprl() -> PGAFitnessMinReciprocal() PGAGetEvalUpToDate() -> PGAGetEvaluationUpToDateFlag() PGAGetEvaluate() -> PGAGetEvaluation() PGAGetFitnessRankMax() -> PGAGetMaxFitnessRank() PGAGetBest() -> PGAGetBestIndex() PGAGetWorst() -> PGAGetWorstIndex() PGAGetInitIntegerMax() -> PGAGetMaxIntegerInitValue() PGAGetInitIntegerMin() -> PGAGetMinIntegerInitValue() PGAGetInitRealMax() -> PGAGetMaxRealInitValue() PGAGetInitRealMin() -> PGAGetMinRealInitValue() PGAGetIntegerType() -> PGAGetIntegerInitType() PGAGetIter() -> PGAGetGAIterValue() PGAGetMaxDouble() -> PGAGetMaxMachineDoubleValue() PGAGetMaxInt() -> PGAGetMaxMachineIntValue() PGAGetMaxIter() -> PGAGetMaxGAIterValue() PGAGetMinDouble() -> PGAGetMinMachineDoubleValue() PGAGetMinInt() -> PGAGetMinMachineIntValue() PGAGetMutateIntegerVal() -> PGAGetMutationIntegerValue() PGAGetMutateOnlyNoCross() -> PGAGetMutationAndCrossoverFlag() -> PGAGetMutationOrCrossoverFlag() PGAGetMutateRealVal() -> PGAGetMutationRealValue() PGAGetNoDuplicates() -> PGAGetNoDuplicatesFlag() PGAGetNprocs() -> PGAGetNumProcs() PGAGetNumReplace() -> PGAGetNumReplaceValue() PGAGetOptDir() -> PGAGetOptDirFlag() PGAGetPID() -> PGAGetRank() PGAGetPopReplace() -> PGAGetPopReplaceType() PGAGetPrintFreq() -> PGAGetPrintFrequency() PGAGetRandomInit() -> PGAGetRandomInitFlag() PGAGetRestart() -> PGAGetRestartFlag() PGAGetRestartFrequency() -> PGAGetRestartFrequencyValue() PGAGetSortPop() -> PGAGetSortedPopIndex() PGAGetStoppingRule() -> PGAGetStoppingRuleType() PGAGetStringLen() -> PGAGetStringLength() PGAGetUniformCrossProb() -> PGAGetUniformCrossoverProb() PGAIntegerBuildIndividualDatatype() -> PGAIntegerBuildDatatype() PGAIntegerRandomize() -> PGAIntegerInitString() PGAIntegerWriteString() -> PGAIntegerPrintString() PGAParallelDone() -> PGADoneMS() PGAParallelEvaluateMS() -> PGAEvaluateMS() PGAPrintContext() -> PGAPrintContextVariable() PGAPrintVersion() -> PGAPrintVersionNumber() PGARealBuildIndividualDatatype()-> PGARealBuildDatatype() PGARealRandomize() -> PGARealInitString() PGARealWriteString() -> PGARealPrintString() PGARunMutateAndCross() -> PGARunMutationAndCrossover() PGARunMutateOrCross() -> PGARunMutationOrCrossover() PGASelectNext() -> PGASelectNextIndex() PGASetCharacterInit() -> PGASetCharacterInitType() PGASetEvaluate() -> PGASetEvaluation() PGASetEvalUpToDate() -> PGASetEvaluationUpToDateFlag() PGASetFitnessRankMax() -> PGASetMaxFitnessRank() PGASetIntegerInitLU() -> PGASetIntegerInitRange() PGASetMaxIter() -> PGASetMaxGAIterValue() PGASetMaxNoChange() -> PGASetMaxNoChangeValue() PGASetMaxSimilarity() -> PGASetMaxSimilarityValue() PGASetMutateOnlyNoCross() -> PGASetMutationOrCrossoverFlag() -> PGASetMutationAndCrossoverFlag() PGASetMutationIntegerVal() -> PGASetMutationIntegerValue() PGASetMutationRealVal() -> PGASetMutationRealValue() PGASetNoDuplicates() -> PGASetNoDuplicatesFlag() PGASetNumReplace() -> PGASetNumReplaceValue() PGASetPopReplacement() -> PGASetPopReplacementType() PGASetPrintFreq() -> PGASetPrintFrequencyValue() PGASetRandomInit() -> PGASetRandomInitFlag() PGASetRealInitLU() -> PGASetRealInitRange() PGASetRestart() -> PGASetRestartFlag() PGASetRestartFrequency() -> PGASetRestartFrequencyValue() PGASetStoppingRule() -> PGASetStoppingRuleType() PGASetSupportingDebugFlags() -> PGASetDebugFlag() PGASetUniformCrossProb() -> PGASetUniformCrossoverProb() PGAWriteString() -> PGAPrintString() Changes in Version 0.2b ======================= 1) In PGABinaryTwoPointCrossover, add