⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 soup_in.h

📁 地球模拟器
💻 H
字号:
/* soup_in.h   9-9-92  Artificial Life simulator setup routines *//* Tierra Simulator V4.0: Copyright (c) 1991, 1992 Tom Ray & Virtual Life *//* * sccsid: @(#)soup_in.h	1.5	7/21/92 */#include "license.h"#ifndef SOUP_IN_H#define SOUP_IN_H/* observational parameters: */I32s BrkupSiz = 1024;  /* size of output file in K: break.1, break.2 ... */I32s CumGeneBnk = 0;    /* Use cumulative gene files, or overwrite */I32s debug = 0;	       /* 0 = off, 1 = on, printf statements for debugging */I32s DiskOut = 1;      /* output data to disk (1 = on, 0 = off) */I32s GeneBnker = 1;    /* turn genebanker on and off */I8s GenebankPath[80] = "gb/";	/* path for genebanker output */I32s hangup = 0;    /* 0 = exit on error, 1 = hangup on error for debugging */I32s Log = 0;    /* 0 = no log file, 1 = write tierra.log file to disk */I32s MaxFreeBlocks = 600;/* initial # of structure for memory allocation */I8s OutPath[80] = "td/";	/* path for data output */I32s RamBankSiz = 30000;/* max num genotypes in ram, use with genebanker */I32s SaveFreq = 100;   /* frequency of saving core_out, soup_out and list */I32s  SavMinNum = 2;   /* minimum number of individuals to save genotype */float SavThrMem = .015;/* threshold memory occupancy to save genotype */float SavThrPop = .015;/* threshold population proportion to save genotype */I32s WatchExe = 0;     /* mark executed instructions in genome in genebank */I32s WatchMov = 0;     /* set mov bits in genome in genebank */I32s WatchTem = 0;     /* set template bits in genome in genebank *//* environmental variables: */I32s alive = 500;      /* how many millions of instruction will we run */float DistFreq = .3;    /* frequency of disturbance, factor of recovery time */float DistProp = .2;   /* proportion of population affected by distrubance */I32s DivSameSiz = 0;   /* produce offspring of same size, stop size change */I32s DivSameGen = 0;  /* produce offspring of same genotype, stop evolution */I32s DropDead = 5;     /* stop system if no reproduction in last x million */float GenPerBkgMut = 16.; /* mut rate control by generations ("cosmic ray") */float GenPerFlaw = 32.;/* flaw control by generations */float GenPerMovMut = 8.;/* mutation rate control by generations (copy mut) */I8s IMapFile[80] = "opcode.map"; /* map of instructions set into space */I32s MalMode = 2; /* 0 = first fit, 1 = better fit, 2 = random preference,3 = near mother's address, 4 = near dx address, 5 = near top of stack address*/I32s MalReapTol = 1; /* 0 = reap by queue, 1 = reap oldest creat wthn MalTol */I32s MalTol = 5; /* multiple of avgsize to search for free block */float MateProb = .2;	/* probability of mating, this mal */I32s MateSearchL = 0;	/* Search limit to find a mate, like SearchLimit */I32s MateSizeEp = 1;	/* critters size +- val => allowed to mate with */float MateXoverProp = 1.0; /* prop. of gene to consider for Xover point */float MaxMalMult = 3;  /* multiple of cell size allowed for mal() */I32s MinCellSize = 8;  /* minimum size for cells */I32s MinTemplSize = 1; /* minimum size for templates */float MovPropThrDiv = .7;/* min proportion of daughter cell filled by mov */I32s MemModeFree = 0;  /* unix chmod for when mem is dealloced,  */I32s MemModeProt = 2;  /* unix chmod for when mem is Alloced, NOT fully impl!*/I32s new_soup = 1;     /* 1 = this a new soup, 0 = restarting an old run */I32s NumCells = 1;    /* # of creatures and gaps used to inoculate new soup */double PhotonPow = 1.5;/* power for photon match slice size */I32s PhotonWidth = 8;  /* amount by which photons slide to find best fit */I8s PhotonWord[80] = "chlorophill";	/* word used to define photon */float PutLimit = 20.;   /* distance for intercellular communication */float ReapRndProp = 0.0; /* rnd prop of top of reaper Q to reap from */float SearchLimit = 5.;   /* distance for template search */I32s seed = 0; /* seed for random number generator, 0 uses time to set seed */I32s SizDepSlice = 1;  /* set slice size by size of creature */double SlicePow = 1;  /* set power for slice size, use when SizDepSlice = 1 */I32s SliceSize = 25;   /* slice size when SizDepSlice = 0 */I32s SliceStyle = 2;   /* choose style of determining slice size */float SlicFixFrac = 0; /* fixed fraction of slice size */float SlicRanFrac = 2; /* random fraction of slice size */I32s SoupSize = 60000L;  /* size of soup in instructions *//* an edited version of the id[INSTNUM] array must be created and placed in   the arginst.h file, for use by the assembler/disassembler of arg.c */#if INST == 1InstDef id[INSTNUM] = {    {0x00, "nop0", nop, pnop},    {0x01, "nop1", nop, pnop},    {0x02, "not0", not0, pnot0},    {0x03, "shl", shl, pshl},    {0x04, "zero", movdd, pzero},    {0x05, "ifz", ifz, pifz},    {0x06, "sub_ab", math, psub_ab},    {0x07, "sub_ac", math, psub_ac},    {0x08, "inc_a", math, pinc_a},    {0x09, "inc_b", math, pinc_b},    {0x0a, "dec_c", math, pdec_c},    {0x0b, "inc_c", math, pinc_c},    {0x0c, "pushax", push, ppushax},    {0x0d, "pushbx", push, ppushbx},    {0x0e, "pushcx", push, ppushcx},    {0x0f, "pushdx", push, ppushdx},    {0x10, "popax", pop, ppopax},    {0x11, "popbx", pop, ppopbx},    {0x12, "popcx", pop, ppopcx},    {0x13, "popdx", pop, ppopdx},    {0x14, "jmp", adr, ptjmp},    {0x15, "jmpb", adr, ptjmpb},    {0x16, "call", tcall, ptcall},    {0x17, "ret", pop, pret},    {0x18, "movcd", movdd, pmovdc},    {0x19, "movab", movdd, pmovba},    {0x1a, "movii", movii, pmovii},    {0x1b, "adr", adr, padr},    {0x1c, "adrb", adr, padrb},    {0x1d, "adrf", adr, padrf},    {0x1e, "mal", malchm, pmal},    {0x1f, "divide", divide, pdivide}};#endif /* INST == 1 */#if INST == 2InstDef id[INSTNUM] = {    {0x00, "nop0", nop, pnop},    {0x01, "nop1", nop, pnop},    {0x02, "ax", regorder, pax},    {0x03, "bx", regorder, pbx},    {0x04, "cx", regorder, pcx},    {0x05, "dx", regorder, pdx},    {0x06, "movdd", movdd, pmovdd},    {0x07, "movdi", movdi, pmovdi},    {0x08, "movid", movid, pmovid},    {0x09, "movii", movii, pmovii},    {0x0a, "push", push, ppush},    {0x0b, "pop", pop, ppop},    {0x0c, "put", put, pput},    {0x0d, "get", get, pget},    {0x0e, "inc", math, pinc},    {0x0f, "dec", math, pdec},    {0x10, "add", math, padd},    {0x11, "sub", math, psub},    {0x12, "zero", movdd, pzero},    {0x13, "shl", shl, pshl},    {0x14, "not0", not0, pnot0},    {0x15, "not", not, pnot},    {0x16, "ifz", ifz, pifz},    {0x17, "iffl", ifz, piffl},    {0x18, "jmp", adr, ptjmp},    {0x19, "jmpb", adr, ptjmpb},    {0x1a, "call", tcall, ptcall},    {0x1b, "adr", adr, padr},    {0x1c, "adrb", adr, padrb},    {0x1d, "adrf", adr, padrf},    {0x1e, "mal", malchm, pmal},    {0x1f, "divide", divide, pdivide}};#endif /* INST == 2 */#if INST == 3InstDef id[INSTNUM] = {    {0x00, "nop0", nop, pnop},    {0x01, "nop1", nop, pnop},    {0x02, "rollu", rollu, pnop},    {0x03, "rolld", rolld, pnop},    {0x04, "enter", enter, pnop},    {0x05, "exch", exch, pnop},    {0x06, "movdi", movdi, pmovdi},    {0x07, "movid", movid, pmovid},    {0x08, "movii", movii, pmovii},    {0x09, "push", push, ppush},    {0x0a, "pop", pop3, ppop},    {0x0b, "put", put, pput},    {0x0c, "get", get, pget},    {0x0d, "inc", math, pinc},    {0x0e, "dec", math, pdec},    {0x0f, "add", math3, padd},    {0x10, "sub", math3, psub},    {0x11, "zero", movdd3, pzero},    {0x12, "shl", shl, pshl},    {0x13, "not0", not0, pnot0},    {0x14, "not", not, pnot},    {0x15, "rand", movdd3, prand},    {0x16, "ifz", ifz, pifz},    {0x17, "iffl", ifz, piffl},    {0x18, "jmp", adr, ptjmp},    {0x19, "jmpb", adr, ptjmpb},    {0x1a, "call", tcall, ptcall},    {0x1b, "adr", adr3, padr},    {0x1c, "adrb", adr3, padrb},    {0x1d, "adrf", adr3, padrf},    {0x1e, "mal", malchm3, pmal},    {0x1f, "divide", divide, pdivide}};#endif /* INST == 3 */#if INST == 4InstDef id[INSTNUM] = {    {0x00, "nop0", nop, pnop},    {0x01, "nop1", nop, pnop},    {0x02, "movdi", movdi, pmovdi},    {0x03, "movid", movid, pmovid},    {0x04, "movii", movii, pmovii},    {0x05, "pushax", push, ppushax},    {0x06, "pushbx", push, ppushbx},    {0x07, "pushcx", push, ppushcx},    {0x08, "pushdx", push, ppushdx},    {0x09, "popax", pop, ppopax},    {0x0a, "popbx", pop, ppopbx},    {0x0b, "popcx", pop, ppopcx},    {0x0c, "popdx", pop, ppopdx},    {0x0d, "put", put, pput},    {0x0e, "get", get, pget},    {0x0f, "inc", math, pinc},    {0x10, "dec", math, pdec},    {0x11, "add", math, padd},    {0x12, "sub", math, psub},    {0x13, "zero", movdd, pzero},    {0x14, "shl", shl, pshl},    {0x15, "not0", not0, pnot0},    {0x16, "ifz", ifz, pifz},    {0x17, "iffl", ifz, piffl},    {0x18, "jmp", adr, ptjmp},    {0x19, "jmpb", adr, ptjmpb},    {0x1a, "call", tcall, ptcall},    {0x1b, "adr", adr, padr},    {0x1c, "adrb", adr, padrb},    {0x1d, "adrf", adr, padrf},    {0x1e, "mal", malchm, pmal},    {0x1f, "divide", divide, pdivide}};#endif /* INST == 4 */#endif /* SOUP_IN_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -