# 2D_genetic **Repository Path**: bcahlit/2D_genetic ## Basic Information - **Project Name**: 2D_genetic - **Description**: 对robocup2d 使用遗传算法进行改进的工具 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 2 - **Created**: 2019-08-11 - **Last Updated**: 2025-04-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # geneticAlgo for robocup2D ### 基本语法 使用c语言中未定义的$符号作为设计点的识别符号。类似于markdown里数学公式的使用。 基本的设计点包括3种,分别是数、比较符号、枚举类型。 * 数: 主要用于对参数进行变异。第一个属性为设计点的名字,建议使用V(var)开头,基本属性包括step(每次变化的步进值)max(最大值) min(最小值) chance(产生变异的概率) ```c++ $Vt21=10,step=0.5,max=15,min=5$ ``` * 比较符号: 用于对比较符号进行变异,gliders提到过,目前觉得用处不大(变异后可能产生很强的副作用)。第一个属性为设计点名字,必须以comp开头,chance是变异几率 ```c++ $compCt21=<,chance=0.05$ ``` * 枚举类型: 目前主要用于控制条件编译的变异。以下代码会随机将设计点还原为0或1 ,初始值为1 ,以0.1的概率进行变异。 ```c++ #if $enumt1=1,opt=0|1,chance=0.1$ ``` ### 使用 讲设计点写入代码后,将代码改名为文件名+'.gt'(genetic templates) 然后讲文件名添加到geneticMutationFrame.py的files里。程序就会根据设计点规定的内容进行变异,去除掉'.gt'后缀,变为原来的文件,然后会自动进行编译,运行,统计胜率。产生数据库。根据产生的adaptability文件夹里的值来看那个更好。至于最后找出来了最好的,生成代码目前可以使用wirte2file函数,生成源代码文件。后期会剥离。 运行./clear.sh 会将项目运行过程中产生的临时文件删除,重新开始 ### 之后 每次都要不同的名字太麻烦了,所以我又添加了cpp2gt.py 会将_name_ 替换为顺序不重复的数字 具体看代码