robocup3d第三次培训-动作优化

本文介绍了如何通过改变优化环境,安装Python及依赖,然后运用cma-es遗传算法在robocup.py中寻找复杂函数极值,详细解读了优化脚本sample_start-optimization.sh的使用。优化目标是求解y=(x-1)^2的最小值,同时涵盖踢球场景的优化模式切换与参数调整过程。
摘要由CSDN通过智能技术生成

优化

更改优化环境

./change.sh yh 用于将球场由比赛环境改为优化环境

./change.sh hy 用于将球场由优化环境改为比赛环境

安装Python环境

sudo apt-get update 更新源地址

sudo apt-get install python3 安装Python3环境

sudo python3 -V 查看已安装版本

sudo apt-get install python-pip 安装pip

sudo pip install XXX 使用pip安装模块

启动优化脚本

首先进入到项目的optimization目录,阅读README.md文档,查看用法。

./sample_start-optimization.sh 1 ../paramfiles/defaultParams_t1.txt out 启动优化脚本

使用cma-es

  • 遗传算法思想
  • 求y=(x-1)^2的最小值
  • 复杂函数求极值

踢球场景切换为优化模式

优化过程详解

  • 说明optimization/sample_start-optimization.sh

开始优化

1.优化脚本详解(robocup.py)

import cma
import os

std_list =[21.878452192908963,
-107.2655684773586,
-46.03084224893723,
122.50096005151583,
36.70802042526406,
74.34964372370875,
-23.35326324263892,
-1.411851711850464,
4.8436144712052585,
-12.878536016473056,
8.73474032972045,
-2.0087222938685585,
2.4649510821897755,
-0.19721363030046984,
-0.07855676227334851,
7.790202814460635,
5.980745105156915,
0.60539945683587]
#[11.6140517708,-4.9171027329,0.3251961719,-2.496460126,4.1228343724,4.8159507012,27.8958518161,34.1181422294,2.547294129,-3.247463629,-9.7463724405,-18.8513479245,0.2107818939,-2.8414504055,-0.6188735371,-8.6481949996,58.3129345744,58.8881654843,6.4995162332,14.6678754125,-0.2613845865,-0.0358574055]
#[-2.0087222938685585,2.4649510821897755,-10,-10,5,5,10,5,5,-10,-10,5,5,10,-10,5,-5,5,-0.223707187448,-0.0722786582128]
#[11.6140517708,-4.9171027329,0.3251961719,-2.496460126,4.1228343724,4.8159507012,27.8958518161,34.1181422294,2.547294129,-3.247463629,-9.7463724405,-18.8513479245,0.2107818939,-2.8414504055,-0.6188735371,-8.6481949996,58.3129345744,58.8881654843,6.4995162332,14.6678754125,-0.2613845865,-0.0358574055]

def writeToFile(paramList, filePath):
    file = open(filePath, 'r+')
    paramLines = file.readlines()
    file.close()
    paramNames = [i.split()[0] for i in paramLines]

    newLines = []
    for i in range(len(paramNames)):
        newLines.append(paramNames[i] + '\t' + str(paramList[i]) + '\n')

    file = open(filePath, 'w+')
    file.writelines(newLines)
    file.close()


def run(paramList, roboType, absPath):
    writeToFile(paramList, '../paramfiles/optimizing.txt')
    command1 = './sample_start-optimization.sh {0} {1} ./out'.format(roboType, absPath)
    os.system(command1)
    command2 = 'pkill -9 rcss'
    os.system(command2)
    file = open('./out')
    lines = file.readlines()
    file.close()
    os.remove('out')
    rst = lines[0]
    print("rst: ",rst)
    return float(rst)
def eva(ind):
	paramList = []
		
	for x in range(0, len(ind)):
		paramList.append(ind[x] * std_list[x])

	score = run(paramList, 1, '../paramfiles/optimizing.txt')
	file = open('./out2', 'a')
	newLines = []
	for i in range(len(paramList)):
	    newLines.append(str(paramList[i]) + ',')
	newLines.append(str(score) + '\n')
	file.writelines(newLines)
	file.close()
	return 30-score

cma.fmin(eva, len(std_list)*[1.1], 0.3)



2.优化结束后改变优化参数

·1.内容简介: --------------------------------------------------------------- 这是一个压缩包,里面是5个文件是东南大学Robocup3D仿真比赛的源代码。对于参加Robocup比赛绝对有帮助。学习别人如何组织代码,这样可以在一个更高的起点进行编程。 建议,对Robocup机器人比赛感兴趣或者东南大学以及其他高校的参赛同学下载学习。否则,会感觉我的文件都不知道什么东西。 --------------------------------------------------------------- ·2.资源使用方法 suse Linux 环境下编译运行,注意,必须安装好开发环境和仿真环境。 --------------------------------------------------------------- ·3.文件组成形式 格式:tar.gz 源代码,在src文件夹里 --------------------------------------------------------------- ·4. wogeguaiguai的附言: 1.我的其他数学建模精华资源也欢迎您下载,大学生基本上都听过这个比赛吧,这个比赛比较有意思,而且获奖比例高。我的资料都是非常好的准备比赛要用的资料。我比赛结束之后,这些资料就不用啦,分享给大家!俺一年的搜索资源,同学们一朝即可获得! 2.下载本文件后,您可以获得所有信息,不必再零散下载,给您带来很大的方便。 3.10个资源分,绝对物超所值。评论后,您就可以获得11个资源分,欢迎您评论! --------------------------------------------------------------- ·5.如有问题,请在此留言,谢谢。 --------------------------------------------------------------- ·6.上传时间 2010-2-24-night
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值