其他分享
首页 > 其他分享> > 多核优化

多核优化

作者:互联网

多核优化脚本环境配置及使用

环境配置
  1. 安装docker
sudo apt-get install curl
curl -sSL https://get.daocloud.io/docker | sh
  1. 安装htop
sudo apt-get install htop
克隆2020china环境下的多核优化脚本
git clone -b automation git@github.com:hfutrobocup3d/2020China.git
开始使用
  1. ifconfig查看ip地址
  2. 设置端口号
master-host-default: 172.17.0.1
master-port-default: 10960
  1. 设置优化任务、type、球员number和生成的db文件
agent-type-num: 3	//type
agent-type: kickOptimAgent  //表示踢球优化,优化步态时需要修改
agent-mark-num: 2	//2号球员
task-name: kick-optim-type3-18m  //任务名
database-name: type3-kick_18m.db //生成的db文件
  1. htop查看端口号是否被占用
htop 10960
  1. 启动master()
cd automation/optimization/2020China/optimization
./start_master.sh
  1. 启动docker
cd automation/optimization
./dc 2020China 172.17.0.1:10960 start

dc是一个简化版的dkcontrol,没有交互界面,适合在命令行使用,运行需要3个参数

  1. 优化代码的目录

    可以是相对或绝对目录,但是路径中不能出现符号链接目录

  2. master的host

    一般是IP+端口,例如172.17.0.1:10000

  3. 命令

    目前支持start和stop

    当前运行的容器数小于目标数时,启动差值数量的容器

需要修改并行容器数量,修改CONTAINER_NUM变量

判断收敛is_converged

如何自动判断优化是否已经收敛,使用一个简单的脚本is_converged

原理就是根据任务名/表名,从数据库中读取fitness,然后将fit分成2部分

由于fit应该是递减的,左边部分斜率应该大于右边(绝对值)

当左边的除以右边的大于某个阈值,则认为已经收敛

运行脚本时会自动生成fit图像,可以根据需要修改脚本

DBNAME = Path(__file__).parent.absolute()/'type3-kick.db'
assert DBNAME.exists()
assert len(argv) > 1, '需要提供表名'
# 数据库中的表名
TABLE = argv[1]     # 'kick-optim-type3-17m'
# 平滑的范围
N = 100
# 平滑的步进
STEP = 10
# 将曲线分为1/4和3/4
SCALE = 0.25
# 要求左边的斜率是右边的`SLOPE_THRESH`倍
SLOPE_THRESH = 100
# 收敛至少需要的代数, STEP*MINGEN为真实代数
MINGEN = 2000

run.sh中,每隔300s检测一次收敛

SLOPE_THRESH默认为100,如果想获得更好的优化效果,可以适当增大,相应的优化时间也会延长

run.sh

运行完整的某一系列优化的脚本,根据任务实际需要编写修改

在不同的任务/主机上移植时, 需要修改:


优化完时,调用optimization文件夹里的runparams.py生成参数。

标签:sh,optimization,多核,htop,master,优化,kick
来源: https://blog.csdn.net/fuyanping123/article/details/114482485