Robocup 仿真2D 学习笔记(三)最初的改进1

底层最开始有很多比较简单的改进的地方

首先防守策略bhv_basic_move.cpp中,铲球的可以尽可能的铲 ,但是前提是不存在队友可踢,否则就是铲自己人的铁憨憨if(!wm.existKickableTeammate()),角度用60比较合适Bhv_BasicTackle(0.1,60.0)

之后通过观察比赛,我们发现一个逻辑漏洞就是,如果我与球小于3m 或者 我是全队最接近球并且比对方最近的队员接近球的距离3米以内,我就去追球,这是不合理的,会让对方长驱直入。

可以将3改为10,如果希望有夹击的效果,不妨加个条件

||(wm.self().pos().absX()>20&&self_min<mate_min+10&&self_min<opp_min+10)

但是我们发现,会有我方球员在没有对方球员靠近的情况下去抢球,所以在函数体内加一个条件

if(!(self_min>mate_min && mate_min<opp_min -3 ))

人海战术防守:

持球策略sample_field_evaluator.cpp中,这里有点强化学习的感觉了,对场地不同点进行打分,首先它对进入对方球门打了较高的分数,自己方的球门则是低分,出界也是低分。

但是之后使用40 - (对方球门到球的距离)打分,这样球员只会向前不会后退。想使它会回传也可以,但是要考虑到我们不希望它在自己半场倒脚,也不希望它没事的时候回传,希望他在转身护球的时候回传,但是我们又希望他不要在没有敌方靠近时回传,所以可以加入以下代码

if(state.self().pos().x>0&&state.self().face().cos()<0&&state.ball().pos().x<state.self().pos().x-5)
    {
        double nearnest_self_dist =65535.0;
        state.getOpponentNearestTo(state.self().pos(),10,&nearnest_self_dist);
        if (nearnest_self_dist<8)
            return +1.0e+6;
    }

禁区三角进攻方法较为有效

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值