ML-Agents训练智能AI使用技巧
ML-Agents是Unity開發智能AI的利器,但是學習曲線相對陡峭,需要一些機器學習算法的理解,經過使用訓練模式、好奇心模式的經歷,總結一些使用技巧,供愛好者參考。
1.訓練模式是老師帶學生的模式,玩家通過操作AI,與Agents AI具有相同的參數,只不過用人工替代了電腦大腦的控制和判斷,也就是Actions的決策選擇。人工的操作不但能讓AI學習移動和一些操作,AI還能繼續使用加強學習的算法進行大腦的雙向訓練。配置過程相對麻煩,可以參考官方示例。
2.對于一些復雜環境和多操作,比如要在躲避的過程中還選擇攻擊,在撿拾道具和攻擊、逃跑中做優化尋澤,這種復雜的情況下,盡量開啟好奇心模式,在trainer.ymal配置中修改好奇心參數為true。這樣會盡量杜絕AI原地打轉,浪費訓練時間,也完全達不到使用目標和要求。
3.一些簡單的訓練場景一般都容易實現目標,但是像我們的正常游戲中,AI的操作動作都比較多,場景也比較復雜,比如各種石頭、墻壁等具有碰撞體的檢測,因此在基礎訓練滿足后,就要將復雜的真實場景進行訓練場景的搭建,個人覺得這個步驟很關鍵,不要單純的降低訓練環境實現大腦文件生成,若此,AI到真實場景中就容易鉆入一些復雜環境無法進行智能判斷。
4.一勞永逸的攝像機模式不能使用,開始就卡死,不清楚是什么問題,個人感覺跟顯卡沒有關系,因為我配置的模式是CPU模式。
5.AI的技能訓練盡量不用真實技能,可以用射線碰撞代替射線類技能,訓練完畢后,將真實技能參數調整到射線碰撞的參數,比如距離、有效半徑等。
6.在重寫動作控制的方法時,盡量添加一些基本的限制條件,比如22m內如果沒有檢測到攻擊目標的存在就不要釋放20m范圍攻擊的技能,明顯攻擊不到敵人。
7.代碼部分
查找范圍敵人并排序
public Transform ClosestEnemy(float viewRange) {
var cols = new List(Physics.OverlapSphere(transform.position, viewRange, enemyMask));
cols.Remove(m_collider);
var firstOrDefault = cols.OrderBy(x => Vector3.Distance(transform.position, x.transform.position)).FirstOrDefault();
return firstOrDefault != null ? firstOrDefault.transform : null;
}
總結
以上是生活随笔為你收集整理的ML-Agents训练智能AI使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 连接ntp服务器_NTP搭建-
- 下一篇: C++关联数组