質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Q&A

1回答

846閲覧

Ml-AgentsのOnActionReceived(float[] vectorActions)のエラーの原因解決

ppoppo

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

0グッド

0クリップ

投稿2023/05/21 11:42

編集2023/05/22 04:06

実現したいこと

エラーを解決し,該当部分の理解を深めたい

前提

教材:
[unityで始める機械学習、強化学習unity ML-Agents実践ゲームプログラミングver1.1対応版]
Agentクラスのスクリプトを作成時に発生

発生している問題・エラーメッセージ

RollerAgents,OnActionReceived(float[]):オーバーライドする適切なメソッドが見つかりませんでした。

該当のソースコード

C++

1using System.Collections.Generic; 2using UnityEngine; 3//ML-Agentsパッケージの追加 4using Unity.MLAgents; 5using Unity.MLAgents.Sensors; 6using Unity.MLAgents.Actuators; 7 8 9// RollerAgents 10public class RollerAgent : Agent //基底クラスをAgentに変更 11{ 12 public Transform target; 13 Rigidbody rBody; 14 15 public override void Initialize() //(初期化時:initialize)エージェントのゲームオブジェクトの生成時に一度だけ呼ばれる物 16 { 17 this.rBody = GetComponent<Rigidbody>(); //GetComponent()でrBodyにインスタンス生成 18 } 19 //エピソード開始時に呼ばれる 20 public override void OnEpisodeBegin() //エージェントのエピソード開始時に実行するリセット関数 21 { 22 //RollerAgentsが床から落下しているとき 23 if (this.transform.position.y < 0) //Agentのtransformにおいて自身の高さが0で落下を表現 24 { 25 //RollerAgentsの位置と速度をリセット 26 this.rBody.angularVelocity = Vector3.zero; //AgentのrBodyにおいて自身の角速度 27 this.rBody.velocity = Vector3.zero; //AgentのrBodyにおいて自身の並進速度 28 this.transform.position = new Vector3(0.0f, 0.5f, 0.0f); //Agent自身の位置(x,y,z) 29 } 30 target.position = new Vector3(Random.value * 8 - 4, 0.5f, Random.value * 8 - 4); //新しく生成 newVector3(val1,val2,val3小数使うとき後ろにfを使う) 31 //Target.localPosition (Targetに指定しているオブジェクト自身の位置) 32 //Random.value(0.0-1.0の乱数を生成) 33 } 34 //観測取得時に呼ばれる 35 public override void CollectObservations(VectorSensor sensor) //エージェントに渡す観測値の設定を行う。状態関数 36 //override修飾子により、基底クラスで定義されているメソッドを上書きし、新しいものにすることが可能 37 { 38 sensor.AddObservation(target.position); //targetのxyz座標 39 sensor.AddObservation(this.transform.position); //RollerAgentのxyz座標 40 sensor.AddObservation(rBody.velocity.x); //RollerAgentのx方向の速度 41 sensor.AddObservation(rBody.velocity.z); //RollerAgentのz方向の速度 42 } 43 //行動実行時に呼ばれる 44 45 public override void OnActionReceived(float[] vectorAction) //決定された行動に応じて行動実行を行い、その結果に応じて報酬取得とエピソード完了を行う 46 { 47 //RollerAgentに力を加える 48 Vector3 controlSignal = Vector3.zero; //vector3型でcontrolSignalをvector3.zeriで初期化 49 controlSignal.x = vectorAction[0]; //vectorActionが持つ連続値アクションの0番め 50 controlSignal.y = vectorAction[1]; //vectorActionが持つ連続アクションの1番め 51 rBody.AddForce(controlSignal * 10); //エージェントに力を加える 52 53 //報酬 54 float distanceToTarget = Vector3.Distance(this.transform.position, target.position); //vector3.distanceで指定した2つの位置から距離を算出 55 //RollerAgentがTargetの位置に到着したとき 56 if (distanceToTarget < 1.42f) 57 { 58 AddReward(1.0f); //報酬の追加 59 EndEpisode(); 60 } 61 //RollerAgentが床から落下したとき 62 if (this.transform.position.y < 0) 63 { 64 EndEpisode(); 65 } 66 } 67 68} 69

試したこと

ActionBuffers型にしたら一応エラーは消えました。

補足情報(FW/ツールのバージョンなど)

unity 2021,3.7f1
OS:windows11
類似した内容
Ml-AgentsのOnActionReceived(float[] vectorActions)のエラー

public override void Heuristic(float[] actionsOut)で、エラーが出る。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2023/05/21 12:32

これ、C++じゃないよ
ppoppo

2023/05/22 04:05

間違えていました。 ご指摘ありがとうございます!
guest

回答1

0

https://github.com/Unity-Technologies/ml-agents/blob/release_17/docs/Migrating.md
こちらをご覧ください。
参考にされている書籍のMl-Agentsが古く貴方が使用されているMl-Agentsのバージョンとは違うのでしょう。
現在ですと
https://www.borndigital.co.jp/book/28311.html
こちらの書籍にすべきかと思います。

投稿2023/05/22 04:48

YAmaGNZ

総合スコア10242

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問