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

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

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

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

842閲覧

ML-Agentsにおいて値が0しか返ってこない

eg_0615

総合スコア0

C#

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/01/24 13:22

編集2021/01/25 02:06

動作確認のため再生モードにすると0の場合の行動のみを繰り返してしまいます。(本当は0~6が欲しい)
Behavior Parameters は
Discrete Branches → 1
Branch 0 Size →7
としております。

ML-agents release12です。

本当に初心者なので簡単なところを見落としている可能性があります。少しでも可能性があったら教えてください。

追記
自分なりに調べて上のようなコードから下のコードに変えましたが変わりはありませんでした。無駄の多い汚いコードかもしれませんがよろしくお願いします。

C#

1public override void OnActionReceived(float[]vectorAction) 23int AgentX =(int)vectorAction[0]; 4 5...以下値を用いた関数等 6

C#

1//Agentの動作 2//別のスクリプトからRequestDecisionを送っています 3 4namespace Conect4Agent 5{ 6 7 public class GameAgent : Agent 8 { 9 EnvironmentParameters m_ResetParams; 10 private BehaviorParameters Parameters => _parameters ?? (_parameters = gameObject.GetComponent<BehaviorParameters>()); 11 private BehaviorParameters _parameters; 12 public int TeamId => Parameters.TeamId; 13 14 public override void Initialize() 15 { 16 m_ResetParams = Academy.Instance.EnvironmentParameters; 17 } 18 19 public override void OnEpisodeBegin() 20 { 21 } 22 23 public override void CollectObservations(VectorSensor sensor) 24 { 25 } 26 27 public override void WriteDiscreteActionMask(IDiscreteActionMask actionMask) 28 { 29 { 30 //最上段 31 var actionIndices = new List<int> { }; 32 for (var i = 0; i < 7; i++) 33 { 34 if (GameAI.squares[i, 6] != 0) 35 { // 自分が置けない場所 36 37 int mask = i + 42; 38 actionIndices.Add(mask); 39 } 40 } 41 actionMask.WriteMask(0, actionIndices); 42 } 43 44 } 45 46 public void MoveAgent(ActionSegment<int> act) 47 { 48 GameAI.AgentX = act[0]; 49 } 50 51 public override void OnActionReceived(Unity.MLAgents.Actuators.ActionBuffers actions) 52 { 53 MoveAgent(actions.DiscreteActions); 54 55 if (GameAI.CheckWinLose(GameAI.RED) == GameAI.RED) 56 { 57 if (TeamId == 0) 58 { 59 SetReward(1.0f); 60 } 61 else if (TeamId == 1) 62 { 63 SetReward(-1.0f); 64 } 65 EndEpisode(); 66 } 67 else if (GameAI.CheckWinLose(GameAI.GREEN) == GameAI.GREEN) 68 { 69 if (TeamId == 0) 70 { 71 SetReward(-1.0f); 72 } 73 else if (TeamId == 1) 74 { 75 SetReward(1.0f); 76 } 77 EndEpisode(); 78 } 79 else if (GameAI.CheckWinLose(GameAI.DROW) == GameAI.DROW) 80 { 81 SetReward(0f); 82 EndEpisode(); 83 } 84 } 85 86 } 87}

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問