Code indexing in gitaly is broken and leads to code not being visible to the user. We work on the issue with highest priority.

Skip to content
Snippets Groups Projects
Commit 0149f320 authored by snuverink_j's avatar snuverink_j
Browse files

for #257: add option to dump offspring instead of parents (default true)

parent 9b263713
No related branches found
No related tags found
No related merge requests found
......@@ -5,12 +5,13 @@
#include <stdlib.h>
#include <time.h>
#include <deque>
#include <fstream>
#include <map>
#include <string>
#include <sstream>
#include <vector>
#include <map>
#include <utility>
#include <fstream>
#include <vector>
#include "Comm/types.h"
#include "Util/Types.h"
......@@ -23,6 +24,7 @@
#include <boost/smart_ptr.hpp>
#include <boost/chrono.hpp>
#include <boost/property_tree/ptree.hpp>
#include "Util/Trace/Trace.h"
......@@ -76,6 +78,12 @@ public:
/// type used in solution state exchange with other optimizers
typedef std::vector< Individual > SolutionState_t;
/// type of our variator
typedef Individual Individual_t;
typedef Variator< Individual_t, CrossoverOperator, MutationOperator >
Variator_t;
/// alias for usage in template
using individual = typename FixedPisaNsga2::Individual_t;
protected:
......@@ -134,10 +142,6 @@ private:
/// collect some statistics of rejected and accepted individuals
boost::scoped_ptr<Statistics<size_t> > statistics_;
/// type of our variator
typedef Individual Individual_t;
typedef Variator< Individual_t, CrossoverOperator, MutationOperator >
Variator_t;
boost::scoped_ptr<Variator_t> variator_m;
std::vector<unsigned int> pp_all; ///< IDs of population
......@@ -155,7 +159,7 @@ private:
Comm::Bundle_t comms_;
/// buffer holding all finished job id's
std::queue<unsigned int> finishedBuffer_m;
std::deque<unsigned int> finishedBuffer_m;
/// mapping from unique job ID to individual
std::map<size_t, boost::shared_ptr<Individual> > jobmapping_m;
......@@ -190,7 +194,7 @@ private:
/// number of objectives
size_t dim_m;
/// current generation
size_t act_gen;
size_t act_gen = 1;
/// maximal generation (stopping criterion)
size_t maxGenerations_m;
......@@ -200,8 +204,9 @@ private:
// dump frequency
int dump_freq_;
int dump_freq_m;
/// dump offspring / parents flag
bool dump_offspring_m;
/// convergence accuracy if maxGenerations not set
double hvol_eps_;
double expected_hvol_;
......@@ -251,6 +256,13 @@ private:
/// global_population.
void dumpPopulationToFile();
void dumpPopulationToJSON();
void dumpIndividualToFile(int id,
boost::shared_ptr<individual>& ind,
std::ofstream& file,
const size_t numDigits);
void dumpIndividualToJSON(int id,
boost::shared_ptr<individual>& ind,
boost::property_tree::ptree& tree);
/**
* Get a random integer between [0, range]
......
......@@ -54,7 +54,9 @@ FixedPisaNsga2<CO, MO>::FixedPisaNsga2(
//FIXME: proper rand gen initialization (use boost?!)
srand(time(NULL) + comms_.island_id);
dump_freq_ = args->getArg<int>("dump-freq", 1, false);
dump_freq_m = args->getArg<int>("dump-freq", 1, false);
dump_offspring_m = args->getArg<bool>("dump-offspring", true, false);
maxGenerations_m = args->getArg<int>("maxGenerations", true);
resultFile_m = args->getArg<std::string>("outfile", "-th_generation.dat", false);
resultDir_m = args->getArg<std::string>("outdir", "generations", false);
......@@ -183,8 +185,6 @@ void FixedPisaNsga2<CO, MO>::initialize() {
template< template <class> class CO, template <class> class MO >
bool FixedPisaNsga2<CO, MO>::onMessage(MPI_Status status, size_t length) {
typedef typename FixedPisaNsga2::Individual_t individual;
MPITag_t tag = MPITag_t(status.MPI_TAG);
switch(tag) {
......@@ -226,7 +226,7 @@ bool FixedPisaNsga2<CO, MO>::onMessage(MPI_Status status, size_t length) {
//XXX: can we pass more than lambda_m files to selector?
unsigned int id =
variator_m->population()->add_individual(new_ind);
finishedBuffer_m.push(id);
finishedBuffer_m.push_back(id);
dump.clear();
dump.str(std::string());
......@@ -295,7 +295,7 @@ bool FixedPisaNsga2<CO, MO>::onMessage(MPI_Status status, size_t length) {
}
}
finishedBuffer_m.push(jid);
finishedBuffer_m.push_back(jid);
statistics_->changeStatisticBy("accepted", 1);
return true;
......@@ -347,8 +347,8 @@ void FixedPisaNsga2<CO, MO>::postPoll() {
stats << "__________________________________________" << std::endl;
progress_->log(stats);
// dump parents of current generation for visualization purposes
if((act_gen + 1) % dump_freq_ == 0) {
// dump current generation (or their parents)
if((act_gen + 1) % dump_freq_m == 0) {
dumpPopulationToFile();
dumpPopulationToJSON();
}
......@@ -374,8 +374,6 @@ void FixedPisaNsga2<CO, MO>::postPoll() {
template< template <class> class CO , template <class> class MO >
void FixedPisaNsga2<CO, MO>::exchangeSolutionStates() {
typedef typename FixedPisaNsga2::Individual_t individual;
size_t num_masters = args_m->getArg<size_t>("num-masters", 1, false);
if(num_masters <= 1 ||
......@@ -432,7 +430,7 @@ void FixedPisaNsga2<CO, MO>::toSelectorAndCommit() {
for(size_t i = 0; i < selector_mu_; i++) {
unsigned int id = finishedBuffer_m.front();
to_selector_.insert(id);
finishedBuffer_m.pop();
finishedBuffer_m.pop_front();
}
variator_m->population()->commit_individuals(to_selector_);
......@@ -442,8 +440,6 @@ void FixedPisaNsga2<CO, MO>::toSelectorAndCommit() {
template< template <class> class CO, template <class> class MO >
void FixedPisaNsga2<CO, MO>::dispatch_forward_solves() {
typedef typename FixedPisaNsga2::Individual_t individual;
while(variator_m->hasMoreIndividualsToEvaluate()) {
//reqVarContainer_t reqs;
......@@ -507,7 +503,7 @@ void FixedPisaNsga2<CO, MO>::runStateMachine() {
// in sel file.
case Variate: {
if( (maxGenerations_m > 0 && act_gen >= maxGenerations_m) ||
if( (maxGenerations_m > 0 && act_gen > maxGenerations_m) ||
(hvol_progress_ < conv_hvol_progress_) ||
(expected_hvol_ > 0.0 && fabs(current_hvol_ - expected_hvol_) < hvol_eps_)
) {
......@@ -555,8 +551,11 @@ void FixedPisaNsga2<CO, MO>::runStateMachine() {
//XXX: wait till the first alpha_m individuals are ready then start
// the selector
if(finishedBuffer_m.size() >= alpha_m) {
act_gen = 1;
if(dump_offspring_m == true) { // dump first generation - no parents yet
dumpPopulationToFile();
dumpPopulationToJSON();
}
act_gen = 2;
toSelectorAndCommit();
curState_m = InitializeSelector;
......@@ -572,9 +571,10 @@ void FixedPisaNsga2<CO, MO>::runStateMachine() {
// State 4 of the FSM: stopping state for the variator.
case Stop: {
// variator_m->population()->keepSurvivors(archive_);
dumpPopulationToFile();
dumpPopulationToJSON();
if (dump_offspring_m == false) {
dumpPopulationToFile();
dumpPopulationToJSON();
}
// don't clean population otherwise final hypervolume calculation can't be done
//variator_m->population()->clean_population();
curState_m = VariatorStopped;
......@@ -621,7 +621,6 @@ void FixedPisaNsga2<CO, MO>::runStateMachine() {
selection();
// write arc file (all individuals that could ever be used again)
typedef typename FixedPisaNsga2::Individual_t individual;
typename std::map<unsigned int, boost::shared_ptr<individual> >
::iterator it;
for(it = variator_m->population()->begin();
......@@ -676,12 +675,11 @@ void FixedPisaNsga2<CO, MO>::dumpPopulationToFile() {
// only dump old data format if the user requests it
if(! args_m->getArg<bool>("dump-dat", false, false)) return;
typedef typename FixedPisaNsga2::Individual_t individual;
boost::shared_ptr<individual> temp;
std::ofstream file;
std::ostringstream filename;
filename << resultDir_m << "/" << act_gen << "_" << resultFile_m
int fileNumber = act_gen;
if (dump_offspring_m == false) fileNumber--; // parents are from generation earlier (keeping filenumbers the same)
filename << resultDir_m << "/" << fileNumber << "_" << resultFile_m
<< "_" << comms_.island_id;
file.open(filename.str().c_str(), std::ios::out);
......@@ -712,39 +710,52 @@ void FixedPisaNsga2<CO, MO>::dumpPopulationToFile() {
file.precision(6);
file << std::scientific;
for(it = variator_m->population()->begin();
it != variator_m->population()->end(); it++) {
file << std::setw(numDigits + 1) << it->first << " ";
temp = it->second;
for(size_t i=0; i<temp->objectives_m.size(); i++)
file << std::setw(14) << temp->objectives_m[i] << " ";
file << " ";
for(size_t i=0; i<temp->genes_m.size(); i++)
file << std::setw(14) << temp->genes_m[i] << " ";
file << std::endl;
if (dump_offspring_m == true) {
for (auto id : finishedBuffer_m) {
auto ind = variator_m->population()->get_staging(id); // get from staging area
if (ind) // pointer might be uninitialised (should not happen)
dumpIndividualToFile(id, ind, file, numDigits);
else
std::cout << "Individual " << id << " from buffer not found!" << std::endl;
}
} else {
for(it = variator_m->population()->begin();
it != variator_m->population()->end(); it++) {
dumpIndividualToFile(it->first, it->second, file, numDigits);
}
}
file.close();
}
template< template <class> class CO, template <class> class MO >
void FixedPisaNsga2<CO, MO>::dumpIndividualToFile(int idx,
boost::shared_ptr<individual>& ind,
std::ofstream& file,
const size_t numDigits) {
file << std::setw(numDigits + 1) << idx << " ";
for(size_t i=0; i<ind->objectives_m.size(); i++)
file << std::setw(14) << ind->objectives_m[i] << " ";
file << " ";
for(size_t i=0; i<ind->genes_m.size(); i++)
file << std::setw(14) << ind->genes_m[i] << " ";
file << std::endl;
}
template< template <class> class CO, template <class> class MO >
void FixedPisaNsga2<CO, MO>::dumpPopulationToJSON() {
typedef typename FixedPisaNsga2::Individual_t individual;
typedef boost::property_tree::ptree ptree_t;
ptree_t tree;
tree.put("name", "opt-pilot");
tree.put(OPAL_PROJECT_NAME " version", OPAL_PROJECT_VERSION);
tree.put("git revision", Util::getGitRevision());
std::stringstream bounds;
DVarContainer_t::iterator itr = dvars_m.begin();
for (bounds_t::iterator it = dVarBounds_m.begin();
......@@ -755,62 +766,70 @@ void FixedPisaNsga2<CO, MO>::dumpPopulationToJSON() {
tree.put("dvar-bounds." + dvar, bounds.str());
bounds.str("");
}
ptree_t constraints;
for ( Expressions::Named_t::iterator it = constraints_m.begin();
it != constraints_m.end(); ++it )
{
std::string s = it->second->toString();
/// cleanup string to make json reader happy
s.erase(std::remove(s.begin(), s.end(), '"'), s.end());
// 22. November 2018
// https://stackoverflow.com/questions/2114466/creating-json-arrays-in-boost-using-property-trees
ptree_t constraint;
constraint.put("", s);
constraints.push_back(std::make_pair("", constraint));
}
tree.add_child("constraints", constraints);
boost::shared_ptr<individual> ind;
typename std::map<unsigned int, boost::shared_ptr<individual> >::iterator it;
for(it = variator_m->population()->begin();
it != variator_m->population()->end(); it++) {
std::string id = std::to_string(it->first);
Expressions::Named_t::iterator expr_it;
expr_it = objectives_m.begin();
ind = it->second;
for(size_t i=0; i < ind->objectives_m.size(); i++, expr_it++) {
std::string name = expr_it->first;
tree.put("population." + id + ".obj." + name, ind->objectives_m[i]);
if (dump_offspring_m == true) {
for (auto id : finishedBuffer_m) {
auto ind = variator_m->population()->get_staging(id); // get from staging area
if (ind) // pointer might be uninitialised (should not happen)
dumpIndividualToJSON(id, ind, tree);
else
std::cout << "Individual " << id << " from buffer not found!" << std::endl;
}
size_t i = 0;
for(itr = dvars_m.begin(); itr != dvars_m.end(); ++i, ++itr) {
std::string name = boost::get<VAR_NAME>(itr->second);
tree.put("population." + id + ".dvar." + name, ind->genes_m[i]);
} else {
for (auto it = variator_m->population()->begin();
it != variator_m->population()->end(); it++) {
dumpIndividualToJSON(it->first, it->second, tree);
}
}
std::ostringstream filename;
filename << resultDir_m << "/" << act_gen << "_" << resultFile_m
int fileNumber = act_gen;
if (dump_offspring_m == false) fileNumber--; // parents are from generation earlier (keeping filenumbers the same)
filename << resultDir_m << "/" << fileNumber << "_" << resultFile_m
<< "_" << comms_.island_id << ".json";
boost::property_tree::write_json(filename.str(), tree);
}
template< template <class> class CO, template <class> class MO >
void FixedPisaNsga2<CO, MO>::dumpIndividualToJSON(int idx,
boost::shared_ptr<individual>& ind,
boost::property_tree::ptree& tree) {
std::string id = std::to_string(idx);
Expressions::Named_t::iterator expr_it;
expr_it = objectives_m.begin();
for(size_t i=0; i < ind->objectives_m.size(); i++, expr_it++) {
std::string name = expr_it->first;
tree.put("population." + id + ".obj." + name, ind->objectives_m[i]);
}
size_t i = 0;
for(DVarContainer_t::iterator itr = dvars_m.begin(); itr != dvars_m.end(); ++i, ++itr) {
std::string name = boost::get<VAR_NAME>(itr->second);
tree.put("population." + id + ".dvar." + name, ind->genes_m[i]);
}
}
/*-----------------------| selection functions|--------------------------*/
......@@ -909,7 +928,6 @@ void FixedPisaNsga2<CO, MO>::calcFitnesses()
template< template <class> class CO, template <class> class MO >
void FixedPisaNsga2<CO, MO>::calcDistances()
{
typedef typename FixedPisaNsga2::Individual_t individual;
int i, j, l;
int size = pp_all.size();
double dmax = 1E99 / (dim_m + 1);
......@@ -1024,7 +1042,6 @@ int FixedPisaNsga2<CO, MO>::dominates(unsigned int p_ind_a, unsigned int p_ind_b
int a_is_worse = 0, b_is_worse = 0;
// int equal = 1;
typedef typename FixedPisaNsga2::Individual_t individual;
boost::shared_ptr<individual> ind1 =
variator_m->population()->get_individual(p_ind_a);
boost::shared_ptr<individual> ind2 =
......
......@@ -63,6 +63,7 @@ namespace {
SELECTOR,
DUMPDAT,
DUMPFREQ,
DUMPOFFSPRING,
NUMINDGEN,
MAXGENERATIONS,
EPSILON,
......@@ -112,7 +113,9 @@ OptimizeCmd::OptimizeCmd():
itsAttr[DUMPDAT] = Attributes::makeReal
("DUMP_DAT", "Dump old generation data format with frequency (PISA only)");
itsAttr[DUMPFREQ] = Attributes::makeReal
("DUMP_FREQ", "Dump old generation data format with frequency (PISA only)");
("DUMP_FREQ", "Dump generation data with frequency (PISA only)");
itsAttr[DUMPOFFSPRING] = Attributes::makeBool
("DUMP_OFFSPRING", "Dump offspring (instead of parent population), default: true");
itsAttr[NUMINDGEN] = Attributes::makeReal
("NUM_IND_GEN", "Number of individuals in a generation (PISA only)");
itsAttr[MAXGENERATIONS] = Attributes::makeReal
......@@ -238,6 +241,7 @@ void OptimizeCmd::execute() {
{SELECTOR, "selector"},
{DUMPDAT, "dump-dat"},
{DUMPFREQ, "dump-freq"},
{DUMPOFFSPRING, "dump-offspring"},
{NUMINDGEN, "num-ind-gen"},
{MAXGENERATIONS, "maxGenerations"},
{EPSILON, "epsilon"},
......
......@@ -138,13 +138,11 @@
)
"Highlighting expressions for OPAL mode (seqediting).")
;(concat "\\<" (regexp-opt '("A" "ADD" "AMPLITUDE_MODEL" "ANGLE" "APERTURE" "APVETO" "AT" "AUTOPHASE" "B" "BBOXINCR" "BCFFTZ" "BCFFTT" "BCFFTX" "BCFFTY" "BCURRENT" "BEAM_PHIINIT" "BEAM_PRINIT" "BEAM_RINIT" "BFREQ" "BMAX" "BOUNDPDESTROYFQ" "BSCALE" "BY" "CALLS" "CATHTEMP" "CENTRE" "CHARGE" "CLASS" "CLEAR" "CMD" "COEFDENOM" "COEFNUM" "COLUMN" "CONDUCT" "CONSTRAINTS" "CONST_LENGTH" "CONV_HVOL_PROG" "CORRX" "CORRY" "CORRZ" "CSRDUMP" "CUTOFFLONG" "CUTOFFPX" "CUTOFFPY" "CUTOFFPZ" "CUTOFFR" "CUTOFFX" "CUTOFFY" "CYHARMON" "CZERO" "DESIGNENERGY" "DK1" "DK1S" "DK2" "DK2S" "DKN" "DKNR" "DKS" "DKSR" "DLAG" "DPHI" "DPSI" "DS" "DT" "DTHETA" "DUMP" "DUMP_DAT" "DUMP_FREQ" "DVARS" "DVOLT" "DX" "DY" "DZ" "E1" "E2" "EBDUMP" "ECHO" "EKIN" "ELASER" "ELEMEDGE" "ELEMENT" "EMISSIONMODEL" "EMISSIONSTEPS" "EMITTED" "ENABLEHDF5" "ENERGY" "ENDSEQUENCE" "END_NORMAL_X" "END_NORMAL_Y" "END_POSITION_X" "END_POSITION_Y" "EPSILON" "ESCALE" "ET" "EVERYSTEP" "EX" "EXPECTED_HYPERVOL" "EXPR" "EY" "FE" "FGEOM" "FIELDMAPDIR" "FIELDMAPDIR" "FILE" "FINT" "FMAPFN" "FNAME" "FORM" "FREQ" "FREQUENCY_MODEL" "FROM" "FSTYPE" "FTOSCAMPLITUDE" "FTOSCPERIODS" "FULL" "GAMMA" "GAP" "GAPWIDTH" "GENE_MUTATION_PROBABILITY" "GEOMETRY" "GREENSF" "H1" "H2" "HAPERT" "HARMON" "HARMONIC_NUMBER" "HGAP" "HKICK" "HYPERVOLREFERENCE" "IDEALIZED" "INITIAL_OPTIMIZATION" "IMAGENAME" "INFO" "INITIALPOPULATION" "INPUT" "INPUTMOUNITS" "INTENSITYCUT" "INTERPL" "IS_CLOSED" "ITSOLVER" "K0" "K0S" "K1" "K1S" "K2" "K2S" "K3" "K3S" "KEYWORD" "KICK" "KN" "KS" "L" "LAG" "LASERPROFFN" "LATTICE_PHIINIT" "LATTICE_RINIT" "LATTICE_THETAINIT" "LENGTH" "LEVEL" "LOGBENDTRAJECTORY" "LOWER" "LOWERBOUND" "MASS" "MAXGENERATIONS" "MAXITERS" "MAXR" "MAXSTEPS" "MAXZ" "METHOD" "MINR" "MINZ" "MODE" "MREX" "MREY" "MSCALX" "MSCALY" "MT" "MUTATION_PROBABILITY" "MX" "MY" "NBIN" "NFREQ" "NLEFT" "NO" "NPART" "NPOINTS" "NRIGHT" "NUMCELLS" "NUM_COWORKERS" "NUM_IND_GEN" "NUM_MASTERS" "OBJECTIVES" "OFFSETPX" "OFFSETPY" "OFFSETPZ" "OFFSETT" "OFFSETX" "OFFSETY" "OFFSETZ" "ONE_PILOT_CONVERGE" "OPCHARGE" "OPMASS" "OPYIELD" "ORDER" "ORIENTATION" "ORIGIN" "OUTDIR" "OUTFN" "OUTPUT" "P1" "P2" "P3" "P4" "PARFFTT" "PARFFTX" "PARFFTY" "PARTICLE" "PARTICLEMATTERINTERACTION" "PATTERN" "PC" "PDIS" "PHI" "PHI0" "PHIINIT" "PLANE" "POLYORDER" "PRECMODE" "PRINIT" "PSDUMPEACHTURN" "PSDUMPFRAME" "PSDUMPFREQ" "PSI" "PTC" "PYMULT" "PZINIT" "PZMULT" "R51" "R52" "R61" "R62" "RADIUS" "RANDOM" "RANGE" "RASTER" "RECOMBINATION_PROBABILITY" "REFER" "REFPOS" "REPARTFREQ" "RESET" "RFFREQ" "RFMAPFN" "RFPHI" "RINIT" "RMAX" "RMIN" "ROTATION" "ROW" "S" "SAMPLINGS" "SCALABLE" "SEED" "SELECTED" "SELECTOR" "SEQUENCE" "SIGMA" "SIGMAPX" "SIGMAPY" "SIGMAPZ" "SIGMAR" "SIGMAT" "SIGMAX" "SIGMAY" "SIGMAZ" "SIGX" "SIGY" "SIMBIN_CROSSOVER_NU" "SIMTMPDIR" "SLPTC" "SOL_SYNCH" "SPLIT" "SPTDUMPFREQ" "STATDUMPFREQ" "STEP" "STEPSPERTURN" "STOP" "STRING" "SUPERPOSE" "SYMMETRY" "T0" "TABLE" "TAU" "TELL" "TEMPLATEDIR" "TFALL" "THETA" "THIN" "THRESHOLD" "TIME" "TIMEINTEGRATOR" "TMULT" "TO" "TOL" "TOLERANCE" "TPULSEFWHM" "TRACE" "TRISE" "TURNS" "TYPE" "UPPER" "UPPERBOUND" "VARIABLE" "VERIFY" "VERSION" "VKICK" "VMAX" "VMIN" "VOLT" "W" "WAKEF" "WARN" "WARP" "WEIGHT" "WIDTH" "WRITETOFILE" "X" "XEND" "XMA" "XMULT" "XSIZE" "XSTART" "Y" "YEND" "YMA" "YMULT" "YSIZE" "YSTART" "Z" "Z0" "ZEND" "ZINIT" "ZSTART" "ZSTOP") t) "\\>")
;(concat "\\<" (regexp-opt '("A" "ADD" "AMPLITUDE_MODEL" "ANGLE" "APERTURE" "APVETO" "AT" "AUTOPHASE" "B" "BBOXINCR" "BCFFTZ" "BCFFTT" "BCFFTX" "BCFFTY" "BCURRENT" "BEAM_PHIINIT" "BEAM_PRINIT" "BEAM_RINIT" "BFREQ" "BMAX" "BOUNDPDESTROYFQ" "BSCALE" "BY" "CALLS" "CATHTEMP" "CENTRE" "CHARGE" "CLASS" "CLEAR" "CMD" "COEFDENOM" "COEFNUM" "COLUMN" "CONDUCT" "CONSTRAINTS" "CONST_LENGTH" "CONV_HVOL_PROG" "CORRX" "CORRY" "CORRZ" "CSRDUMP" "CUTOFFLONG" "CUTOFFPX" "CUTOFFPY" "CUTOFFPZ" "CUTOFFR" "CUTOFFX" "CUTOFFY" "CYHARMON" "CZERO" "DESIGNENERGY" "DK1" "DK1S" "DK2" "DK2S" "DKN" "DKNR" "DKS" "DKSR" "DLAG" "DPHI" "DPSI" "DS" "DT" "DTHETA" "DUMP" "DUMP_DAT" "DUMP_FREQ" "DUMP_OFFSPRING" "DVARS" "DVOLT" "DX" "DY" "DZ" "E1" "E2" "EBDUMP" "ECHO" "EKIN" "ELASER" "ELEMEDGE" "ELEMENT" "EMISSIONMODEL" "EMISSIONSTEPS" "EMITTED" "ENABLEHDF5" "ENERGY" "ENDSEQUENCE" "END_NORMAL_X" "END_NORMAL_Y" "END_POSITION_X" "END_POSITION_Y" "EPSILON" "ESCALE" "ET" "EVERYSTEP" "EX" "EXPECTED_HYPERVOL" "EXPR" "EY" "FE" "FGEOM" "FIELDMAPDIR" "FIELDMAPDIR" "FILE" "FINT" "FMAPFN" "FNAME" "FORM" "FREQ" "FREQUENCY_MODEL" "FROM" "FSTYPE" "FTOSCAMPLITUDE" "FTOSCPERIODS" "FULL" "GAMMA" "GAP" "GAPWIDTH" "GENE_MUTATION_PROBABILITY" "GEOMETRY" "GREENSF" "H1" "H2" "HAPERT" "HARMON" "HARMONIC_NUMBER" "HGAP" "HKICK" "HYPERVOLREFERENCE" "IDEALIZED" "INITIAL_OPTIMIZATION" "IMAGENAME" "INFO" "INITIALPOPULATION" "INPUT" "INPUTMOUNITS" "INTENSITYCUT" "INTERPL" "IS_CLOSED" "ITSOLVER" "K0" "K0S" "K1" "K1S" "K2" "K2S" "K3" "K3S" "KEYWORD" "KICK" "KN" "KS" "L" "LAG" "LASERPROFFN" "LATTICE_PHIINIT" "LATTICE_RINIT" "LATTICE_THETAINIT" "LENGTH" "LEVEL" "LOGBENDTRAJECTORY" "LOWER" "LOWERBOUND" "MASS" "MAXGENERATIONS" "MAXITERS" "MAXR" "MAXSTEPS" "MAXZ" "METHOD" "MINR" "MINZ" "MODE" "MREX" "MREY" "MSCALX" "MSCALY" "MT" "MUTATION_PROBABILITY" "MX" "MY" "NBIN" "NFREQ" "NLEFT" "NO" "NPART" "NPOINTS" "NRIGHT" "NUMCELLS" "NUM_COWORKERS" "NUM_IND_GEN" "NUM_MASTERS" "OBJECTIVES" "OFFSETPX" "OFFSETPY" "OFFSETPZ" "OFFSETT" "OFFSETX" "OFFSETY" "OFFSETZ" "ONE_PILOT_CONVERGE" "OPCHARGE" "OPMASS" "OPYIELD" "ORDER" "ORIENTATION" "ORIGIN" "OUTDIR" "OUTFN" "OUTPUT" "P1" "P2" "P3" "P4" "PARFFTT" "PARFFTX" "PARFFTY" "PARTICLE" "PARTICLEMATTERINTERACTION" "PATTERN" "PC" "PDIS" "PHI" "PHI0" "PHIINIT" "PLANE" "POLYORDER" "PRECMODE" "PRINIT" "PSDUMPEACHTURN" "PSDUMPFRAME" "PSDUMPFREQ" "PSI" "PTC" "PYMULT" "PZINIT" "PZMULT" "R51" "R52" "R61" "R62" "RADIUS" "RANDOM" "RANGE" "RASTER" "RECOMBINATION_PROBABILITY" "REFER" "REFPOS" "REPARTFREQ" "RESET" "RFFREQ" "RFMAPFN" "RFPHI" "RINIT" "RMAX" "RMIN" "ROTATION" "ROW" "S" "SAMPLINGS" "SCALABLE" "SEED" "SELECTED" "SELECTOR" "SEQUENCE" "SIGMA" "SIGMAPX" "SIGMAPY" "SIGMAPZ" "SIGMAR" "SIGMAT" "SIGMAX" "SIGMAY" "SIGMAZ" "SIGX" "SIGY" "SIMBIN_CROSSOVER_NU" "SIMTMPDIR" "SLPTC" "SOL_SYNCH" "SPLIT" "SPTDUMPFREQ" "STATDUMPFREQ" "STEP" "STEPSPERTURN" "STOP" "STRING" "SUPERPOSE" "SYMMETRY" "T0" "TABLE" "TAU" "TELL" "TEMPLATEDIR" "TFALL" "THETA" "THIN" "THRESHOLD" "TIME" "TIMEINTEGRATOR" "TMULT" "TO" "TOL" "TOLERANCE" "TPULSEFWHM" "TRACE" "TRISE" "TURNS" "TYPE" "UPPER" "UPPERBOUND" "VARIABLE" "VERIFY" "VERSION" "VKICK" "VMAX" "VMIN" "VOLT" "W" "WAKEF" "WARN" "WARP" "WEIGHT" "WIDTH" "WRITETOFILE" "X" "XEND" "XMA" "XMULT" "XSIZE" "XSTART" "Y" "YEND" "YMA" "YMULT" "YSIZE" "YSTART" "Z" "Z0" "ZEND" "ZINIT" "ZSTART" "ZSTOP") t) "\\>")
(defconst opal-font-lock-keywords-parameters
(list
'("\\<\\(A\\(?:DD\\|MPLITUDE_MODEL\\|NGLE\\|P\\(?:ERTURE\\|VETO\\)\\|T\\|UTOPHASE\\)\\|B\\(?:BOXINCR\\|C\\(?:FFT[TXYZ]\\|URRENT\\)\\|EAM_\\(?:\\(?:P\\(?:HI\\|R\\)\\|R\\)INIT\\)\\|FREQ\\|MAX\\|OUNDPDESTROYFQ\\|SCALE\\|Y\\)\\|C\\(?:A\\(?:LLS\\|THTEMP\\)\\|ENTRE\\|HARGE\\|L\\(?:ASS\\|EAR\\)\\|MD\\|O\\(?:EF\\(?:\\(?:DENO\\|NU\\)M\\)\\|LUMN\\|N\\(?:DUCT\\|ST\\(?:RAINTS\\|_LENGTH\\)\\|V_HVOL_PROG\\)\\|RR[XYZ]\\)\\|SRDUMP\\|UTOFF\\(?:LONG\\|P[XYZ]\\|[RXY]\\)\\|YHARMON\\|ZERO\\)\\|D\\(?:ESIGNENERGY\\|K\\(?:1S\\|2S\\|[NS]R\\|[12NS]\\)\\|LAG\\|P\\(?:[HS]I\\)\\|THETA\\|UMP\\(?:_\\(?:DAT\\|FREQ\\)\\)?\\|V\\(?:ARS\\|OLT\\)\\|[STXYZ]\\)\\|E\\(?:BDUMP\\|CHO\\|KIN\\|L\\(?:ASER\\|EME\\(?:DGE\\|NT\\)\\)\\|MI\\(?:SSION\\(?:MODEL\\|STEPS\\)\\|TTED\\)\\|N\\(?:ABLEHDF5\\|D\\(?:SEQUENCE\\|_\\(?:NORMAL_[XY]\\|POSITION_[XY]\\)\\)\\|ERGY\\)\\|PSILON\\|SCALE\\|VERYSTEP\\|XP\\(?:ECTED_HYPERVOL\\|R\\)\\|[12TXY]\\)\\|F\\(?:E\\|GEOM\\|I\\(?:ELDMAPDIR\\|LE\\|NT\\)\\|MAPFN\\|NAME\\|ORM\\|R\\(?:EQ\\(?:UENCY_MODEL\\)?\\|OM\\)\\|STYPE\\|TOSC\\(?:AMPLITUDE\\|PERIODS\\)\\|ULL\\)\\|G\\(?:A\\(?:MMA\\|P\\(?:WIDTH\\)?\\)\\|E\\(?:\\(?:NE_MUTATION_PROBABILIT\\|OMETR\\)Y\\)\\|REENSF\\)\\|H\\(?:A\\(?:PERT\\|RMON\\(?:IC_NUMBER\\)?\\)\\|GAP\\|KICK\\|YPERVOLREFERENCE\\|[12]\\)\\|I\\(?:DEALIZED\\|MAGENAME\\|N\\(?:FO\\|ITIAL\\(?:\\(?:POPUL\\|_OPTIMIZ\\)ATION\\)\\|PUT\\(?:MOUNITS\\)?\\|TE\\(?:NSITYCUT\\|RPL\\)\\)\\|S_CLOSED\\|TSOLVER\\)\\|K\\(?:0S\\|1S\\|2S\\|3S\\|EYWORD\\|ICK\\|[0-3NS]\\)\\|L\\(?:A\\(?:G\\|SERPROFFN\\|TTICE_\\(?:\\(?:PHI\\|R\\|THETA\\)INIT\\)\\)\\|E\\(?:NGTH\\|VEL\\)\\|O\\(?:GBENDTRAJECTORY\\|WER\\(?:BOUND\\)?\\)\\)\\|M\\(?:A\\(?:SS\\|X\\(?:GENERATIONS\\|ITERS\\|STEPS\\|[RZ]\\)\\)\\|ETHOD\\|IN[RZ]\\|ODE\\|RE[XY]\\|SCAL[XY]\\|UTATION_PROBABILITY\\|[TXY]\\)\\|N\\(?:BIN\\|FREQ\\|LEFT\\|O\\|P\\(?:ART\\|OINTS\\)\\|RIGHT\\|UM\\(?:CELLS\\|_\\(?:COWORKERS\\|IND_GEN\\|MASTERS\\)\\)\\)\\|O\\(?:BJECTIVES\\|FFSET\\(?:P[XYZ]\\|[TXYZ]\\)\\|NE_PILOT_CONVERGE\\|P\\(?:CHARGE\\|MASS\\|YIELD\\)\\|R\\(?:DER\\|I\\(?:\\(?:ENTATIO\\|GI\\)N\\)\\)\\|UT\\(?:DIR\\|FN\\|PUT\\)\\)\\|P\\(?:A\\(?:R\\(?:FFT[TXY]\\|TICLE\\(?:MATTERINTERACTION\\)?\\)\\|TTERN\\)\\|DIS\\|HI\\(?:0\\|INIT\\)?\\|LANE\\|OLYORDER\\|R\\(?:ECMODE\\|INIT\\)\\|S\\(?:DUMP\\(?:EACHTURN\\|FR\\(?:AME\\|EQ\\)\\)\\|I\\)\\|TC\\|\\(?:YMUL\\|Z\\(?:INI\\|MUL\\)\\)T\\|[1-4C]\\)\\|R\\(?:5[12]\\|6[12]\\|A\\(?:DIUS\\|N\\(?:DOM\\|GE\\)\\|STER\\)\\|E\\(?:COMBINATION_PROBABILITY\\|F\\(?:ER\\|POS\\)\\|PARTFREQ\\|SET\\)\\|F\\(?:FREQ\\|MAPFN\\|PHI\\)\\|INIT\\|M\\(?:AX\\|IN\\)\\|O\\(?:TATION\\|W\\)\\)\\|S\\(?:AMPLINGS\\|CALABLE\\|E\\(?:ED\\|LECT\\(?:ED\\|OR\\)\\|QUENCE\\)\\|I\\(?:G\\(?:MA\\(?:P[XYZ]\\|[RTXYZ]\\)?\\|[XY]\\)\\|M\\(?:BIN_CROSSOVER_NU\\|TMPDIR\\)\\)\\|LPTC\\|OL_SYNCH\\|P\\(?:LIT\\|TDUMPFREQ\\)\\|T\\(?:ATDUMPFREQ\\|EP\\(?:SPERTURN\\)?\\|OP\\|RING\\)\\|UPERPOSE\\|YMMETRY\\)\\|T\\(?:A\\(?:BLE\\|U\\)\\|E\\(?:LL\\|MPLATEDIR\\)\\|FALL\\|H\\(?:ETA\\|IN\\|RESHOLD\\)\\|IME\\(?:INTEGRATOR\\)?\\|MULT\\|OL\\(?:ERANCE\\)?\\|PULSEFWHM\\|R\\(?:\\(?:AC\\|IS\\)E\\)\\|URNS\\|YPE\\|[0O]\\)\\|UPPER\\(?:BOUND\\)?\\|V\\(?:ARIABLE\\|ER\\(?:IFY\\|SION\\)\\|KICK\\|M\\(?:AX\\|IN\\)\\|OLT\\)\\|W\\(?:A\\(?:KEF\\|R[NP]\\)\\|EIGHT\\|IDTH\\|RITETOFILE\\)\\|X\\(?:END\\|M\\(?:A\\|ULT\\)\\|S\\(?:IZE\\|TART\\)\\)\\|Y\\(?:END\\|M\\(?:A\\|ULT\\)\\|S\\(?:IZE\\|TART\\)\\)\\|Z\\(?:0\\|END\\|INIT\\|ST\\(?:ART\\|OP\\)\\)\\|[ABLSW-Z]\\)\\>"
'("\\<\\(A\\(?:DD\\|MPLITUDE_MODEL\\|NGLE\\|P\\(?:ERTURE\\|VETO\\)\\|T\\|UTOPHASE\\)\\|B\\(?:BOXINCR\\|C\\(?:FFT[TXYZ]\\|URRENT\\)\\|EAM_\\(?:\\(?:P\\(?:HI\\|R\\)\\|R\\)INIT\\)\\|FREQ\\|MAX\\|OUNDPDESTROYFQ\\|SCALE\\|Y\\)\\|C\\(?:A\\(?:LLS\\|THTEMP\\)\\|ENTRE\\|HARGE\\|L\\(?:ASS\\|EAR\\)\\|MD\\|O\\(?:EF\\(?:\\(?:DENO\\|NU\\)M\\)\\|LUMN\\|N\\(?:DUCT\\|ST\\(?:RAINTS\\|_LENGTH\\)\\|V_HVOL_PROG\\)\\|RR[XYZ]\\)\\|SRDUMP\\|UTOFF\\(?:LONG\\|P[XYZ]\\|[RXY]\\)\\|YHARMON\\|ZERO\\)\\|D\\(?:ESIGNENERGY\\|K\\(?:1S\\|2S\\|[NS]R\\|[12NS]\\)\\|LAG\\|P\\(?:[HS]I\\)\\|THETA\\|UMP\\(?:_\\(?:DAT\\|FREQ\\|OFFSPRING\\)\\)?\\|V\\(?:ARS\\|OLT\\)\\|[STXYZ]\\)\\|E\\(?:BDUMP\\|CHO\\|KIN\\|L\\(?:ASER\\|EME\\(?:DGE\\|NT\\)\\)\\|MI\\(?:SSION\\(?:MODEL\\|STEPS\\)\\|TTED\\)\\|N\\(?:ABLEHDF5\\|D\\(?:SEQUENCE\\|_\\(?:NORMAL_[XY]\\|POSITION_[XY]\\)\\)\\|ERGY\\)\\|PSILON\\|SCALE\\|VERYSTEP\\|XP\\(?:ECTED_HYPERVOL\\|R\\)\\|[12TXY]\\)\\|F\\(?:E\\|GEOM\\|I\\(?:ELDMAPDIR\\|LE\\|NT\\)\\|MAPFN\\|NAME\\|ORM\\|R\\(?:EQ\\(?:UENCY_MODEL\\)?\\|OM\\)\\|STYPE\\|TOSC\\(?:AMPLITUDE\\|PERIODS\\)\\|ULL\\)\\|G\\(?:A\\(?:MMA\\|P\\(?:WIDTH\\)?\\)\\|E\\(?:\\(?:NE_MUTATION_PROBABILIT\\|OMETR\\)Y\\)\\|REENSF\\)\\|H\\(?:A\\(?:PERT\\|RMON\\(?:IC_NUMBER\\)?\\)\\|GAP\\|KICK\\|YPERVOLREFERENCE\\|[12]\\)\\|I\\(?:DEALIZED\\|MAGENAME\\|N\\(?:FO\\|ITIAL\\(?:\\(?:POPUL\\|_OPTIMIZ\\)ATION\\)\\|PUT\\(?:MOUNITS\\)?\\|TE\\(?:NSITYCUT\\|RPL\\)\\)\\|S_CLOSED\\|TSOLVER\\)\\|K\\(?:0S\\|1S\\|2S\\|3S\\|EYWORD\\|ICK\\|[0-3NS]\\)\\|L\\(?:A\\(?:G\\|SERPROFFN\\|TTICE_\\(?:\\(?:PHI\\|R\\|THETA\\)INIT\\)\\)\\|E\\(?:NGTH\\|VEL\\)\\|O\\(?:GBENDTRAJECTORY\\|WER\\(?:BOUND\\)?\\)\\)\\|M\\(?:A\\(?:SS\\|X\\(?:GENERATIONS\\|ITERS\\|STEPS\\|[RZ]\\)\\)\\|ETHOD\\|IN[RZ]\\|ODE\\|RE[XY]\\|SCAL[XY]\\|UTATION_PROBABILITY\\|[TXY]\\)\\|N\\(?:BIN\\|FREQ\\|LEFT\\|O\\|P\\(?:ART\\|OINTS\\)\\|RIGHT\\|UM\\(?:CELLS\\|_\\(?:COWORKERS\\|IND_GEN\\|MASTERS\\)\\)\\)\\|O\\(?:BJECTIVES\\|FFSET\\(?:P[XYZ]\\|[TXYZ]\\)\\|NE_PILOT_CONVERGE\\|P\\(?:CHARGE\\|MASS\\|YIELD\\)\\|R\\(?:DER\\|I\\(?:\\(?:ENTATIO\\|GI\\)N\\)\\)\\|UT\\(?:DIR\\|FN\\|PUT\\)\\)\\|P\\(?:A\\(?:R\\(?:FFT[TXY]\\|TICLE\\(?:MATTERINTERACTION\\)?\\)\\|TTERN\\)\\|DIS\\|HI\\(?:0\\|INIT\\)?\\|LANE\\|OLYORDER\\|R\\(?:ECMODE\\|INIT\\)\\|S\\(?:DUMP\\(?:EACHTURN\\|FR\\(?:AME\\|EQ\\)\\)\\|I\\)\\|TC\\|\\(?:YMUL\\|Z\\(?:INI\\|MUL\\)\\)T\\|[1-4C]\\)\\|R\\(?:5[12]\\|6[12]\\|A\\(?:DIUS\\|N\\(?:DOM\\|GE\\)\\|STER\\)\\|E\\(?:COMBINATION_PROBABILITY\\|F\\(?:ER\\|POS\\)\\|PARTFREQ\\|SET\\)\\|F\\(?:FREQ\\|MAPFN\\|PHI\\)\\|INIT\\|M\\(?:AX\\|IN\\)\\|O\\(?:TATION\\|W\\)\\)\\|S\\(?:AMPLINGS\\|CALABLE\\|E\\(?:ED\\|LECT\\(?:ED\\|OR\\)\\|QUENCE\\)\\|I\\(?:G\\(?:MA\\(?:P[XYZ]\\|[RTXYZ]\\)?\\|[XY]\\)\\|M\\(?:BIN_CROSSOVER_NU\\|TMPDIR\\)\\)\\|LPTC\\|OL_SYNCH\\|P\\(?:LIT\\|TDUMPFREQ\\)\\|T\\(?:ATDUMPFREQ\\|EP\\(?:SPERTURN\\)?\\|OP\\|RING\\)\\|UPERPOSE\\|YMMETRY\\)\\|T\\(?:A\\(?:BLE\\|U\\)\\|E\\(?:LL\\|MPLATEDIR\\)\\|FALL\\|H\\(?:ETA\\|IN\\|RESHOLD\\)\\|IME\\(?:INTEGRATOR\\)?\\|MULT\\|OL\\(?:ERANCE\\)?\\|PULSEFWHM\\|R\\(?:\\(?:AC\\|IS\\)E\\)\\|URNS\\|YPE\\|[0O]\\)\\|UPPER\\(?:BOUND\\)?\\|V\\(?:ARIABLE\\|ER\\(?:IFY\\|SION\\)\\|KICK\\|M\\(?:AX\\|IN\\)\\|OLT\\)\\|W\\(?:A\\(?:KEF\\|R[NP]\\)\\|EIGHT\\|IDTH\\|RITETOFILE\\)\\|X\\(?:END\\|M\\(?:A\\|ULT\\)\\|S\\(?:IZE\\|TART\\)\\)\\|Y\\(?:END\\|M\\(?:A\\|ULT\\)\\|S\\(?:IZE\\|TART\\)\\)\\|Z\\(?:0\\|END\\|INIT\\|ST\\(?:ART\\|OP\\)\\)\\|[ABLSW-Z]\\)\\>"
. font-lock-variable-name-face)
)
"Highlighting expressions for OPAL mode (parameters).")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment