1 /* 2 * core/Defintions.h 3 * avida-core 4 * 5 * Created by David on 4/17/11. 6 * Copyright 2011 Michigan State University. All rights reserved. 7 * http://avida.devosoft.org/ 8 * 9 * 10 * This file is part of Avida. 11 * 12 * Avida is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License 13 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 14 * 15 * Avida is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License along with Avida. 19 * If not, see <http://www.gnu.org/licenses/>. 20 * 21 * Authors: David M. Bryson <david@programerror.com> 22 * 23 */ 24 25 #ifndef AvidaCoreDefinitions_h 26 #define AvidaCoreDefinitions_h 27 28 const int MIN_GENOME_LENGTH = 8; 29 const int MAX_GENOME_LENGTH = 2048; 30 31 const int MIN_INJECT_SIZE = 8; 32 33 34 // Number of distinct input and outputs stored in the IOBufs (to test tasks) 35 const int INPUT_SIZE_DEFAULT = 3; 36 const int OUTPUT_SIZE_DEFAULT = 1; 37 38 const int RECEIVED_MESSAGES_SIZE = 10; 39 const int MARKET_SIZE = 10000; 40 41 42 enum eFileType 43 { 44 FILE_TYPE_TEXT, 45 FILE_TYPE_HTML 46 }; 47 48 enum eHARDWARE_TYPE 49 { 50 HARDWARE_TYPE_CPU_ORIGINAL = 0, 51 HARDWARE_TYPE_CPU_SMT, 52 HARDWARE_TYPE_CPU_TRANSSMT, 53 HARDWARE_TYPE_CPU_EXPERIMENTAL, 54 HARDWARE_TYPE_CPU_GX 55 }; 56 57 enum eTIMESLICE 58 { 59 SLICE_CONSTANT = 0, 60 SLICE_PROB_MERIT, 61 SLICE_INTEGRATED_MERIT, 62 SLICE_DEME_PROB_MERIT, 63 SLICE_PROB_DEMESIZE_PROB_MERIT, 64 SLICE_CONSTANT_BURST, 65 }; 66 67 enum ePOSITION_OFFSPRING 68 { 69 POSITION_OFFSPRING_RANDOM = 0, 70 POSITION_OFFSPRING_AGE, 71 POSITION_OFFSPRING_MERIT, 72 POSITION_OFFSPRING_EMPTY, 73 POSITION_OFFSPRING_FULL_SOUP_RANDOM, 74 POSITION_OFFSPRING_FULL_SOUP_ELDEST, 75 POSITION_OFFSPRING_DEME_RANDOM, 76 POSITION_OFFSPRING_PARENT_FACING, 77 POSITION_OFFSPRING_NEXT_CELL, 78 POSITION_OFFSPRING_FULL_SOUP_ENERGY_USED, 79 POSITION_OFFSPRING_NEIGHBORHOOD_ENERGY_USED, 80 POSITION_OFFSPRING_DISPERSAL, 81 }; 82 const int NUM_LOCAL_POSITION_OFFSPRING = POSITION_OFFSPRING_FULL_SOUP_RANDOM; 83 84 enum eDEATH_METHOD 85 { 86 DEATH_METHOD_OFF = 0, 87 DEATH_METHOD_CONST, 88 DEATH_METHOD_MULTIPLE 89 }; 90 91 enum eALLOC_METHOD 92 { 93 ALLOC_METHOD_DEFAULT = 0, 94 ALLOC_METHOD_NECRO, 95 ALLOC_METHOD_RANDOM 96 }; 97 98 enum eDIVIDE_METHOD 99 { 100 DIVIDE_METHOD_OFFSPRING = 0, 101 DIVIDE_METHOD_SPLIT, 102 DIVIDE_METHOD_BIRTH, 103 }; 104 105 enum eEPIGENETIC_METHOD 106 { 107 EPIGENETIC_METHOD_NONE = 0, 108 EPIGENETIC_METHOD_OFFSPRING, 109 EPIGENETIC_METHOD_PARENT, 110 EPIGENETIC_METHOD_BOTH 111 }; 112 113 enum eINJECT_METHOD 114 { 115 INJECT_METHOD_OFFSPRING = 0, 116 INJECT_METHOD_SPLIT 117 }; 118 119 enum eGENERATION_INCREMENT 120 { 121 GENERATION_INC_OFFSPRING = 0, 122 GENERATION_INC_BOTH 123 }; 124 125 enum eBASE_MERIT 126 { 127 BASE_MERIT_CONST = 0, 128 BASE_MERIT_COPIED_SIZE, 129 BASE_MERIT_EXE_SIZE, 130 BASE_MERIT_FULL_SIZE, 131 BASE_MERIT_LEAST_SIZE, 132 BASE_MERIT_SQRT_LEAST_SIZE, 133 BASE_MERIT_NUM_BONUS_INST, 134 BASE_MERIT_GESTATION_TIME 135 136 }; 137 138 enum eINST_CODE_DEFAULT 139 { 140 INST_CODE_ZEROS = 0, 141 INST_CODE_INSTNUM 142 }; 143 144 145 enum ePHENPLAST_BONUS_METHOD{ 146 DEFAULT = 0, 147 NO_BONUS, 148 FRAC_BONUS, 149 FULL_BONUS 150 }; 151 152 enum eDEME_TRIGGERS { 153 DEME_TRIGGER_ALL = 0, 154 DEME_TRIGGER_FULL, // 1 155 DEME_TRIGGER_CORNERS, // 2 156 DEME_TRIGGER_AGE, // 3 157 DEME_TRIGGER_BIRTHS, // 4 158 DEME_TRIGGER_MOVE_PREDATORS, // 5 159 DEME_TRIGGER_GROUP_KILL, // 6 160 DEME_TRIGGER_MESSAGE_PREDATORS, // 7 161 DEME_TRIGGER_PREDICATE, // 8 162 DEME_TRIGGER_PERFECT_REACTIONS, // 9 163 DEME_TRIGGER_CONSUME_RESOURCES, // 10 164 DEME_TRIGGER_UNKNOWN // 11 165 }; 166 167 enum eSELECTION_TYPE { 168 SELECTION_TYPE_PROPORTIONAL = 0, 169 SELECTION_TYPE_TOURNAMENT 170 }; 171 172 enum eMP_SCHEDULING { 173 MP_SCHEDULING_NULL = 0, 174 MP_SCHEDULING_INTEGRATED 175 }; 176 177 enum eVerbosity { 178 VERBOSE_SILENT = 0, // 0: No output at all 179 VERBOSE_NORMAL, // 1: Notification at start of commands. 180 VERBOSE_ON, // 2: Verbose output, detailing progress 181 VERBOSE_DETAILS, // 3: High level of details, as available. 182 VERBOSE_DEBUG // 4: Print Debug Information, as applicable. 183 }; 184 185 186 enum eBioUnitSource { 187 SRC_DEME_COMPETE, 188 SRC_DEME_COPY, 189 SRC_DEME_GERMLINE, 190 SRC_DEME_RANDOM, 191 SRC_DEME_REPLICATE, 192 SRC_DEME_SPAWN, 193 SRC_ORGANISM_COMPETE, 194 SRC_ORGANISM_DIVIDE, 195 SRC_ORGANISM_FILE_LOAD, 196 SRC_ORGANISM_RANDOM, 197 SRC_PARASITE_FILE_LOAD, 198 SRC_PARASITE_INJECT, 199 SRC_TEST_CPU 200 }; 201 202 enum eMatingTypes { 203 MATING_TYPE_JUVENILE = -1, 204 MATING_TYPE_FEMALE = 0, 205 MATING_TYPE_MALE = 1 206 }; 207 208 enum eMatePreferences { 209 MATE_PREFERENCE_RANDOM, 210 MATE_PREFERENCE_HIGHEST_DISPLAY_A, 211 MATE_PREFERENCE_HIGHEST_DISPLAY_B, 212 MATE_PREFERENCE_HIGHEST_MERIT 213 }; 214 215 namespace Avida 216 { 217 extern const char* const BioUnitSourceMap[]; 218 }; 219 220 221 #endif 222