Giter Club home page Giter Club logo

mabe's Introduction

MABE

Platform CI Status
OSX OSX
Linux Linux
Windows Windows

For Documentation and help getting started click here for the wiki

After that, you can get specific help at our gitter community room

please do not commit your 'work' and 'build' directory, and also do not commit your xcode project file, only the folders that contain .cpp and .h files.

Extra code can be found at the MABE_extras repository.

Contributors to this project include
Initial Design and Managment: Arend Hintze
Development and Maintenance: Cliff Bohm
Development and Maintenance: Jory Schossau

mabe's People

Contributors

acaciaackles avatar ahnt avatar cgnitash avatar cliff-bohm avatar dkirkpatrick avatar joryschossau avatar shalmezad avatar trougnouf avatar vincentragusa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mabe's Issues

Population Loader is Archivist-specific

Up for discussion?

LOD archivist creates organism files of the format: snapshot_organisms_GEN#.csv with GEN# as an integer. However, population loader expects files to end in *_organisms.csv so the user must manually edit the filenames such that population loader reads them correctly.

experimental filesystem

Hi,
#include <experimental/filesystem>
from the development branch doesn't work on xcode/mac
Cheers Arend

population loading interface polish

This is just a summary of what I thought we arrived at in discussion.
the population loading config file should be like the other settings files in how it's created and used:

  • MABE runs by default if no [population loader] settings file exists.
  • A default loader config file is generated with the "MABE -s" command if none exists.
  • loader config file name scheme should reflect the other settings files scheme.
  • A GLOBAL variable should allow specification of a population loader config file name and take precedence over a local existing file.

short style parameters not working in .cfg files

"NameSpace::Catagory-Parameter = value" style formatting (aka command line style parameter formatting) does not work in .cfg files. This does work on command line.

i.e.

% BRAIN
  brainType = CGP
  + sheep::
    brainType = Markov
  - #sheep::
  + wolf::
    brainType = Wire
    + smart::
      brainType = LSTM
    - #smart::
  - #wolf::

should be idetical to:

%
BRAIN-brainType = CGP
sheep::BRAIN-brainType = Markov
wolf::BRAIN-brainType = Wire
wolf::smart::BRAIN-brainType = LSTM

see wiki for more examples:
github.com/Hintzelab/MABE/wiki/Parameters-Name-Space

Exceptions no Longer Work in MBuild

[kirkpa48@dev-intel16 crossoverRunsCTEST3]$ python MQ-Mod.py

Setting up your jobs...

FDPTRN (WORLD_MAZE-foodDistributionPattern) = ['AlternatingCorners', 'RandomCorners']
WLDRST (WORLD_MAZE-resetMazeIntervalGenerations) = ['0', '1']

excluding:

including:
C0__FDPTRN_AlternatingCorners__WLDRST_0
C1__FDPTRN_AlternatingCorners__WLDRST_1
C2__FDPTRN_RandomCorners__WLDRST_0
C3__FDPTRN_RandomCorners__WLDRST_1

the following settings files will be included:
settings.cfg
settings_organism.cfg
settings_world.cfg

running these 4 conditions will result in 20 jobs

If you wish to run, use a run option (runLocal or runHPCC)

kirkpa48
[kirkpa48@dev-intel16 crossoverRunsCTEST3]$ cat MQ_conditions.txt

Lines starting with # are ignored

Lists must not contain white space (i.e. "1,2,3" OK, "1, 2, 3" Not OK)

REPS = [FIRST REP] [LAST REP]

REPS = 101 105

VAR = [SHORT NAME] [REAL NAME] [conditon1,condition2,etc.]

Short name is used in this file, and also determines output directory names

VAR = FDPTRN WORLD_MAZE-foodDistributionPattern AlternatingCorners,RandomCorners
VAR = WLDRST WORLD_MAZE-resetMazeIntervalGenerations 0,1

EXCEPT = [SHORT NAME]=[condition],[SHORT NAME]=[condition],etc.

If all name/condition pairs are met for any EXCEPT, then that combination will not be run.

EXCEPT = FDPTRN=AlternatingCorners

list of setting files (.cfg) which you want MABE to load with the -f option. files will be loaded in the order provided.

SETTINGS = settings.cfg,settings_organism.cfg,settings_world.cfg

list of files used by MABE (i.e. maps, images, etc.)

OTHERFILES = population_loader.cfg,organismSource/$RN$/snapshot_organisms_200000.csv


JOBNAME will be appended before condition (C*) identifier - if "NONE" then job will have not JOBNAME

JOBNAME = NONE

EXECUTABLE is the name of program to run, may include a path

EXECUTABLE = ./MABE
#EXECUTABLE = MABE.exe


HPCC

HPCC_LONGJOB = FALSE
HPCC_PARAMETERS = #PBS -l feature=intel16|intel14
HPCC_PARAMETERS = #PBS -l nodes=1:ppn=1,walltime=3:50:00,mem=2gb
HPCC_PARAMETERS = #PBS -j oe
HPCC_PARAMETERS = #PBS -m ae
[kirkpa48@dev-intel16 crossoverRunsCTEST3]$

These files should only produce two conditions

outputDirectory ignored for '-s'

Should this be supported? How about for '-l' and '-i' etc.?
I'm encountering this because I'm working on testing, and am invoking various mabes from different locations. I can add extra 'cd' commands to work around this problem.

Population Loader Bad Path on File on HPCC

I have a set of files that runs fine locally:

//BEGIN EXCERPT//
Loading from File population_loader.cfg

Loading 0 Random organisms
Loading 0 Default organisms
From file snapshot_organisms_200000.csv
Loading organisms with IDs : 50000001 50000002
//END EXCERPT//

However, when the same program is run on the HPCC (submitted with MQ.qsub), it breaks:

//BEGIN EXCERPT//
Loading from File population_loader.cfg
error: unable to load../../../ls15/scratch/users/kirkpa48/C1_105__FDPTRN_AlternatingCorners__WLDRST_1_105__2017_11_27_22_25_11/snapshot_organisms_200000.csv
//END EXCERPT//

The correct file is where it is supposed to be:

//BEGIN EXCERPT//
[kirkpa48@dev-intel16 C1_105__FDPTRN_AlternatingCorners__WLDRST_1_105__2017_11_27_22_25_11]$ ls
C1_105__FDPTRN_AlternatingCorners__WLDRST_1.out MQ.qsub settings_organism.cfg
C1__FDPTRN_AlternatingCorners__WLDRST_1 population_loader.cfg settings_world.cfg
MABE settings.cfg snapshot_organisms_200000.csv
//END EXCERPT//

but something else seems to be going on in the filesystem. Please advise

Error on incorrect argument

When saving files (by using -s on the command line) , an incorrect command line parameter name (using -p) is only a warning. Why is this not a hard error, like it is when files are not being saved?

remove max.csv

There might be a good reason to have max.csv only generated by Archvists when specific Optimisers are used.
This might be a large change with ripple effects for implementation.

Thoughts?

Naming conventions

Since the code base has been around a long time, there have been a number of naming conventions, and now it's all somewhat jumbled up.

Here's a proposal for fixing the naming conventions. We don't have to apply these changes to existing code in any hurry, but new code can follow the convention, making it much easier to read. The following should have the least impact;

Classes (Abstract and Concrete): CamelCase
SomeClass

Functions: Mixed-case
someFunction
(it might make sense to additionally have different naming conventions for virtual functions)

Variables: lowercase-with-underscores
some_variable

Member variables: lowercase-with-underscores and ending with an underscore
some_member_variable_

Thoughts?

quotes in CONDITIONS in mq are handled incorrectly

Consider the case of
CONDITIONS = MYVAR="Alice","Bob","Eve"
appears to be correctly translated to the terminal, but I suspect MABE does not know how to handle quotes, so it must instead be
CONDITIONS = MYVAR=Alice,Bob,Eve

selfRate and surviveRate description in the generated settings file

Hi,

The automatically generated description of selfRate and selfSurvive parameters (in the settings.cfg file) should swap.

  selfRate = 0                               # (string) value between 0 and 1, likelyhood that an organism will survive (MTree)
  surviveRate = 0                            # (string) value between 0 and 1, likelyhood that an organism will self (ignored if numberParents = 1) (MTree)

-Iliya

pop loading BEST option has bug

2 users have reported seeing "best 1 by ID from 'LOD_organisms.csv'" when there is no data file does not yield the highest ID organism, and instead the first one.

MABE fails to load parameters

After prforming a clean pull and copilation of development MABE can not read .cfg files. It appears that parameter names are being concatenated.

The error exists on both PC and linux.

log follows:

[cliff@gateway-03 testSpeedANDKILL2]$ git checkout -b development --track public/development
Branch development set up to track remote branch development from public.
Switched to a new branch 'development'
[cliff@gateway-03 testSpeedANDKILL2]$ python pythonTools/mbuild.py -p 22
Building MABE with:

World
  Test
  Xor
  Berry

Genome
  Circular
  Multi

Brain
  CGP
  ConstantValues
  Human

Archivist
  LODwAP
  SSwD
  Default

Optimizer
  Simple
  Islands

c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./main.cpp -o objectFiles/main.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Global.cpp -o objectFiles/Global.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Group/Group.cpp -o objectFiles/Group_Group.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Organism/Organism.cpp -o objectFiles/Organism_Organism.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Utilities/Data.cpp -o objectFiles/Utilities_Data.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Utilities/Parameters.cpp -o objectFiles/Utilities_Parameters.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Utilities/Loader.cpp -o objectFiles/Utilities_Loader.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./World/AbstractWorld.cpp -o objectFiles/World_AbstractWorld.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Genome/AbstractGenome.cpp -o objectFiles/Genome_AbstractGenome.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Brain/AbstractBrain.cpp -o objectFiles/Brain_AbstractBrain.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Optimizer/AbstractOptimizer.cpp -o objectFiles/Optimizer_AbstractOptimizer.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Archivist/DefaultArchivist.cpp -o objectFiles/Archivist_DefaultArchivist.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Utilities/zupply.cpp -o objectFiles/Utilities_zupply.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./World/TestWorld/TestWorld.cpp -o objectFiles/World_TestWorld_TestWorld.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./World/XorWorld/XorWorld.cpp -o objectFiles/World_XorWorld_XorWorld.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./World/BerryWorld/BerryWorld.cpp -o objectFiles/World_BerryWorld_BerryWorld.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Genome/CircularGenome/CircularGenome.cpp -o objectFiles/Genome_CircularGenome_CircularGenome.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Genome/MultiGenome/MultiGenome.cpp -o objectFiles/Genome_MultiGenome_MultiGenome.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Genome/MultiGenome/Chromosome/AbstractChromosome.cpp -o objectFiles/Genome_MultiGenome_Chromosome_AbstractChromosome.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Genome/MultiGenome/Chromosome/TemplatedChromosome.cpp -o objectFiles/Genome_MultiGenome_Chromosome_TemplatedChromosome.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Brain/CGPBrain/CGPBrain.cpp -o objectFiles/Brain_CGPBrain_CGPBrain.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Brain/ConstantValuesBrain/ConstantValuesBrain.cpp -o objectFiles/Brain_ConstantValuesBrain_ConstantValuesBrain.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Brain/HumanBrain/HumanBrain.cpp -o objectFiles/Brain_HumanBrain_HumanBrain.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Archivist/LODwAPArchivist/LODwAPArchivist.cpp -o objectFiles/Archivist_LODwAPArchivist_LODwAPArchivist.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Archivist/SSwDArchivist/SSwDArchivist.cpp -o objectFiles/Archivist_SSwDArchivist_SSwDArchivist.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Optimizer/SimpleOptimizer/SimpleOptimizer.cpp -o objectFiles/Optimizer_SimpleOptimizer_SimpleOptimizer.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread -c ./Optimizer/IslandsOptimizer/IslandsOptimizer.cpp -o objectFiles/Optimizer_IslandsOptimizer_IslandsOptimizer.o
c++ -Wno-c++98-compat -w -Wall -std=c++14 -O3 -lpthread -pthread objectFiles/main.o objectFiles/Global.o objectFiles/Group_Group.o objectFiles/Organism_Organism.o objectFiles/Utilities_Data.o objectFiles/Utilities_Parameters.o objectFiles/Utilities_Loader.o objectFiles/World_AbstractWorld.o objectFiles/Genome_AbstractGenome.o objectFiles/Brain_AbstractBrain.o objectFiles/Optimizer_AbstractOptimizer.o objectFiles/Archivist_DefaultArchivist.o objectFiles/Utilities_zupply.o objectFiles/World_TestWorld_TestWorld.o objectFiles/World_XorWorld_XorWorld.o objectFiles/World_BerryWorld_BerryWorld.o objectFiles/Genome_CircularGenome_CircularGenome.o objectFiles/Genome_MultiGenome_MultiGenome.o objectFiles/Genome_MultiGenome_Chromosome_AbstractChromosome.o objectFiles/Genome_MultiGenome_Chromosome_TemplatedChromosome.o objectFiles/Brain_CGPBrain_CGPBrain.o objectFiles/Brain_ConstantValuesBrain_ConstantValuesBrain.o objectFiles/Brain_HumanBrain_HumanBrain.o objectFiles/Archivist_LODwAPArchivist_LODwAPArchivist.o objectFiles/Archivist_SSwDArchivist_SSwDArchivist.o objectFiles/Optimizer_SimpleOptimizer_SimpleOptimizer.o objectFiles/Optimizer_IslandsOptimizer_IslandsOptimizer.o -o mabe
[cliff@gateway-03 testSpeedANDKILL2]$ ./mabe



        MM   MM      A       BBBBBB    EEEEEE
        MMM MMM     AAA      BB   BB   EE
        MMMMMMM    AA AA     BBBBBB    EEEEEE
        MM M MM   AAAAAAA    BB   BB   EE
        MM   MM  AA     AA   BBBBBB    EEEEEE

        Modular    Agent      Based    Evolver


        https://github.com/HintzeLab/MABE


        for help run MABE with the "-h" flag (i.e. ./mabe -h).

Using Random Seed: 101

Running World Test

Building group with name space: root::

 building brains...
  found brain: root::
    ... building a CGP brain using root:: name space.
    ..... this brain requires genomes: root::

 building genomes...
  found genome: root::
    ... building a Circular genome using root:: name space.

Loading 0 Random organisms
Loading 100 Default organisms

Finished Building Group: root::   Group name space: root::
  population size: 100     Optimizer: Simple     Archivist: LODwAP


  You are running MABE in run mode.

update: 0   max = 6.000000   ave = 1.810000
update: 1   max = 6.000000   ave = 2.780000
update: 2   max = 6.000000   ave = 3.420000
update: 3   max = 7.000000   ave = 3.750000
update: 4   max = 7.000000   ave = 4.170000
update: 5   max = 7.000000   ave = 4.400000
update: 6   max = 7.000000   ave = 4.760000
update: 7   max = 7.000000   ave = 4.920000
update: 8   max = 7.000000   ave = 5.190000
update: 9   max = 7.000000   ave = 5.480000
update: 10   max = 7.000000   ave = 5.540000
update: 11   max = 7.000000   ave = 5.800000
update: 12   max = 7.000000   ave = 5.730000
update: 13   max = 8.000000   ave = 5.750000
update: 14   max = 8.000000   ave = 5.750000
update: 15   max = 8.000000   ave = 5.890000
update: 16   max = 8.000000   ave = 5.900000
update: 17   max = 8.000000   ave = 5.950000
update: 18   max = 8.000000   ave = 6.070000
update: 19   max = 8.000000   ave = 6.150000
update: 20   max = 8.000000   ave = 6.090000
update: 21   max = 8.000000   ave = 6.320000
update: 22   max = 8.000000   ave = 6.540000
update: 23   max = 8.000000   ave = 6.750000
update: 24   max = 8.000000   ave = 6.760000
update: 25   max = 8.000000   ave = 6.910000
update: 26   max = 8.000000   ave = 6.910000
update: 27   max = 8.000000   ave = 7.000000
update: 28   max = 8.000000   ave = 7.080000
update: 29   max = 8.000000   ave = 6.910000
update: 30   max = 8.000000   ave = 7.080000
update: 31   max = 8.000000   ave = 7.140000
update: 32   max = 8.000000   ave = 7.230000
update: 33   max = 8.000000   ave = 7.170000
update: 34   max = 8.000000   ave = 7.230000
update: 35   max = 8.000000   ave = 7.140000
update: 36   max = 9.000000   ave = 7.290000
update: 37   max = 9.000000   ave = 7.360000
update: 38   max = 9.000000   ave = 7.230000
update: 39   max = 9.000000   ave = 7.360000
update: 40   max = 8.000000   ave = 7.200000
update: 41   max = 8.000000   ave = 7.190000
update: 42   max = 8.000000   ave = 7.180000
update: 43   max = 8.000000   ave = 7.180000
update: 44   max = 8.000000   ave = 7.200000
update: 45   max = 8.000000   ave = 7.060000
update: 46   max = 8.000000   ave = 6.960000
update: 47   max = 8.000000   ave = 6.910000
update: 48   max = 8.000000   ave = 6.900000
update: 49   max = 8.000000   ave = 6.740000
update: 50   max = 8.000000   ave = 6.540000
update: 51   max = 8.000000   ave = 6.650000
update: 52   max = 8.000000   ave = 6.810000
update: 53   max = 8.000000   ave = 6.730000
update: 54   max = 8.000000   ave = 6.580000
update: 55   max = 8.000000   ave = 6.590000
update: 56   max = 8.000000   ave = 6.700000
update: 57   max = 8.000000   ave = 6.750000
update: 58   max = 8.000000   ave = 6.780000
update: 59   max = 8.000000   ave = 7.020000
update: 60   max = 8.000000   ave = 6.920000
update: 61   max = 8.000000   ave = 6.880000
update: 62   max = 8.000000   ave = 6.990000
update: 63   max = 8.000000   ave = 6.970000
update: 64   max = 8.000000   ave = 6.910000
update: 65   max = 8.000000   ave = 6.780000
update: 66   max = 8.000000   ave = 6.820000
update: 67   max = 8.000000   ave = 6.850000
update: 68   max = 8.000000   ave = 7.030000
update: 69   max = 8.000000   ave = 7.000000
update: 70   max = 8.000000   ave = 6.920000
update: 71   max = 8.000000   ave = 6.910000
update: 72   max = 8.000000   ave = 6.740000
update: 73   max = 8.000000   ave = 6.780000
update: 74   max = 8.000000   ave = 6.880000
update: 75   max = 9.000000   ave = 6.890000
update: 76   max = 9.000000   ave = 6.970000
update: 77   max = 9.000000   ave = 6.900000
update: 78   max = 9.000000   ave = 7.000000
update: 79   max = 9.000000   ave = 6.940000
update: 80   max = 9.000000   ave = 7.020000
update: 81   max = 9.000000   ave = 7.080000
update: 82   max = 9.000000   ave = 6.960000
^C
Quitting after current update. (ctrl-c again to force quit)
update: 83   max = 9.000000   ave = 7.000000
flushing LODwAP: organism with ID 8401 has been selected to generate Line of Descent.
The last organism written to LOD_data.csv (at time 0) had a time to coalescence of 0.
Rejoice! This organism is on LOD!
[cliff@gateway-03 testSpeedANDKILL2]$ ./mabe -s



        MM   MM      A       BBBBBB    EEEEEE
        MMM MMM     AAA      BB   BB   EE
        MMMMMMM    AA AA     BBBBBB    EEEEEE
        MM M MM   AAAAAAA    BB   BB   EE
        MM   MM  AA     AA   BBBBBB    EEEEEE

        Modular    Agent      Based    Evolver


        https://github.com/HintzeLab/MABE


        for help run MABE with the "-h" flag (i.e. ./mabe -h).

Saving settings files and exiting.
[cliff@gateway-03 testSpeedANDKILL2]$ ./mabe -f settings*
  ERROR! :: found misformatted parameter "GLOBAL-initPopGLOBAL-modeGLOBAL-outputDirectoryGLOBAL-randomSeedGLOBAL-updatesARCHIVIST-outputMethodARCHIVIST_DEFAULT-filePrefixARCHIVIST_DEFAULT-popFileColumnsARCHIVIST_DEFAULT-realtimeSequenceARCHIVIST_DEFAULT-snapshotDataSequenceARCHIVIST_DEFAULT-snapshotOrganismsSequenceARCHIVIST_DEFAULT-writeMaxFileARCHIVIST_DEFAULT-writePopFileARCHIVIST_DEFAULT-writeSnapshotDataFilesARCHIVIST_DEFAULT-writeSnapshotOrganismsFilesARCHIVIST_LODWAP-dataSequenceARCHIVIST_LODWAP-filePrefixARCHIVIST_LODWAP-organismsSequenceARCHIVIST_LODWAP-pruneIntervalARCHIVIST_LODWAP-terminateAfterARCHIVIST_LODWAP-writeDataFileARCHIVIST_LODWAP-writeOrganismsFileARCHIVIST_SSWD-cleanupIntervalARCHIVIST_SSWD-dataDelayARCHIVIST_SSWD-dataSequenceARCHIVIST_SSWD-filePrefixARCHIVIST_SSWD-organismsDelayARCHIVIST_SSWD-organismsSequenceARCHIVIST_SSWD-writeDataFilesARCHIVIST_SSWD-writeOrganismsFilesOPTIMIZER-optimizerOPTIMIZER_ISLANDS-IslandNameSpaceListOPTIMIZER_ISLANDS-migrationRateOPTIMIZER_SIMPLE-cullBelowOPTIMIZER_SIMPLE-cullRemapOPTIMIZER_SIMPLE-elitismCountOPTIMIZER_SIMPLE-elitismRangeOPTIMIZER_SIMPLE-nextPopSizeOPTIMIZER_SIMPLE-numberParentsOPTIMIZER_SIMPLE-optimizeValueOPTIMIZER_SIMPLE-selectionMethodOPTIMIZER_SIMPLE-selfRateOPTIMIZER_SIMPLE-surviveRatePARAMETER_FILES-commentIndent"
  Parameters must have format: [category]-[name] or [name space][category]-[name]
[cliff@gateway-03 testSpeedANDKILL2]$

Where went modules.h

Somehow modules.h went missing in the repository, but it is still referenced in main.cpp

Or do I miss something?

Duplicate buildOptions.txt

The file buildOptions.txt is present in both the root directory, and PythonTools.
I believe that PythonTools/buildOptions.txt should be removed, as trying to use it results in an error and having both files present induces confusion.

terminal output: https://pastebin.com/U5Mp4VjV , using the development branch.

Loading of Genomes

Hey guys,

could it be that you deleted the feature to load already generated genomes? There is no usage of Global::visualizePopulationFilePL anymore ๐Ÿ˜ข

Cheers
Dom

config file formatting suggestion

default config options:
commentIndent = 45
maxLineLength = 160

comment style
#(type) commentcommentcomment
# commentcommentcomment

first line of comment: hash, no space, (type), space, comment
other lines, hash,space, space, comment

user can put \n in comment, but if they do, should they be responsible for the space space, or
should it show up automaticly?

see file, note, txt extension was just to make git happy

settings_world.txt

OPTIMIZER_SIMPLE options are not recognized

Running MABE with OPTIMIZER_SIMPLE parameters such as MABE -p OPTIMIZER_SIMPLE-numberParents 2 returns
ERROR :: while reading command line found "OPTIMIZER_SIMPLE-numberParents. But "OPTIMIZER_SIMPLE-numberParents" is not a registered parameter! Exiting.

Random Seed (-1) broken on Windows

Seed of -1 does not result in random numbers. It yields a seemingly random number, but it's the same one each time the executable is run. Seen in branch:development

Casing dirs and executables to camelcase

As discussed, let's instead have camelcase paths and names.
Currently, we have PythonTools/MBuild.py and World/TestWorld/TestWorld.h and MABE.exe
Let's make it pythonTools/mbuild.py and world/TestWorld/TestWorld.h and mabe.exe
Point for discussion is that module names remain capitalized (in this case, TestWorld).

MBuild.py suggestion

MBuild should be able to auto create buildOptions.txt from existing directories

then:
no buildOptions.txt will need to be shipped with MABE.
MBuild.py will auto create buildOptions.txt if none is found and this file will have preset modules (i.e. not all modules are compiled by default).
A user can generate a buildOptions.txt, alter it and run MBuild.py (which will then obey buildOptions.txt)
If one of the default modules directories is missing, then MBuild.py will assume "you know what you are doing" and build all available modules.

pythonTools

auto package installs should be updated to use the pip install --user PACKAGE always.

Loading Files could be more user friendly

Filenames for loading pop files seem to have to have a '_organisms.csv' ending; it seems like users should be able to set any file names they so choose

Also, there may be a recursive file issue for .plf files

MQ paths are wrong

when referencing alternative paths, MQ should replace relative paths with absolute paths to the current directory: "../settings.cfg -> settings.cfg" because that's how they are copied.

type mismatch in Loader.cpp causes warning

1>Loader.cpp
1>c:\program files (x86)\microsoft visual studio\2017\community\vc\tools\msvc\14.13.26128\include\utility(235): warning C4267: 'initializing': conversion from 'size_t' to 'long', possible loss of data
1>c:\users\cliff\desktop\test_island_world\utilities\loader.cpp(585): note: see reference to function template instantiation 'std::pair<long,long>::pair<unsigned __int64,unsigned __int64,0>(std::pair<unsigned __int64,unsigned __int64> &&) noexcept' being compiled
1>c:\users\cliff\desktop\test_island_world\utilities\loader.cpp(585): note: see reference to function template instantiation 'std::pair<long,long>::pair<unsigned __int64,unsigned __int64,0>(std::pair<unsigned __int64,unsigned __int64> &&) noexcept' being compiled

Optimiser DataMap

As far as I can tell, Optimiser doesn't have its own DataMap.
Optimiser's DataMap would contain at least, size of current population it is optimising and Global-update. This is not an efficient way too keep track of the data, but this would allow a uniform way of specifying certain parameters, e.g. the parameter popSize (which is now in several optimisers) could be specified as

DM_AVE[pop_size] (same size as current population)

SUB[DM_AVE[pop_size],1] (one less than current population size every generation)

or some other MTree that uses values that the Optimizer would know anyway.

Is there a way to do this already that I'm missing?

File overwriting

Began in #211 wrt allowing '-f' and '-s' to write files to outputDirectory instead of mabe.exe dir.

Vinny:
well, there is the potential for any user to overwrite their current settings files with default settings files unintentionally. But that's true even if we are using the output directory in the settings. I think we should either detect that the user is overriding their settings files and warn them with a [y/N] sort of prompt, or we just leave it as is.

In reply to Vinny:
As you point out, currently there is no concept of overwrite safety. If we had it, I think mabe would detect if output files (max.csv, etc.) already exist in outputDir and ask you to provide an override flag. The same could be true for settings and popload files. And then because the command line is so long anyway, users would always use it, making the flag useless. Or we would ask them for every file to answer y/n/a at runtime, which could lead to unfortunate HPCC runs and otherwise mildly annoying local runs. All that, and what kind of warning should the load/merge/save feature "-f -s" produce, which exists to explicitly overwrite files? Perhaps we could add a runtime file overwriting y/n/a that times out after 10 seconds and overwrites if no answer given. Thoughts?

getTable double from genome

It would be cool to get a function that returns double table from the genome like this:
virtual vector<vector> readTable(pair<int, int> tableSize, pair<int, int> tableMaxSize, pair<double, double> valueRange, int code = -1, int CodingRegionIndex = 0)=0;

Cheers Arend

New population loading code doesn't seem to work on Windows

When trying to use the new filesystem to load a population I get the following error:

ERROR: MABE requires all files from current directory downwards to be visible.
run "find . -type f > mabe_all_files.txt" before running ./MABE

Running the suggested command results in:
D:\2017FallResearch\transferMazeWorld\MABE\TEST>find . -type f > mabe_all_files.txt
FIND: Parameter format not correct

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.