Agent Skills by ALSEL
汎用データ・分析⭐ リポ 4品質スコア 76/100

dynamical-system-tuner

非線形システム、ODE モデル、回路モデル、物理モデル、数学的システムを含む動的システムのパラメータをチューニングおよびトライアルします。ユーザーが動的システム、非線形システム、ODE システム、状態空間モデル、カオスモデル、オシレータ、または回路モデルのパラメータをチューニング、トライアル、スイープ、探索、調整、またはテストすることを要求する際に使用します。特に MATLAB シミュレーション、時間応答プロット、位相平面図の生成に活用できます。

description の原文を見る

Tunes and trials parameters for dynamical systems, including nonlinear systems, ODE models, circuit models, physical models, and mathematical systems. Use when the user asks to tune, trial, sweep, explore, adjust, or test parameters of a dynamical system, nonlinear system, ODE system, state-space model, chaos model, oscillator, or circuit model, especially when generating MATLAB simulations, time-response plots, and phase portraits.

SKILL.md 本文

動的システムチューナー

目的

このスキルは、非線形システム、線形システム、物理的な回路モデル、無次元化されたモデル、および純粋に数学的なODEシステムを含む動的システムのパラメータをチューニング、または試行するのに役立ちます。

主な目標は、スカラー目的関数を直接最適化することではありません。主な目標は、異なるパラメータセットの下で整理されたシミュレーション結果を生成することです。これには以下が含まれます:

  • 時間応答プロット
  • 位相平面図
  • パラメータインデックス付き出力画像
  • 後で比較するためのパラメータログ

ユーザーはこれらの結果を検査して、どのパラメータセットが有用な動的現象または動作を生成するかを決定します。

このスキルは、ユーザーが提供したシステム方程式、シミュレーション設定、初期条件、固定パラメータ、チューニング可能なパラメータ、パラメータ制約、および過渡状態破棄要件に従わなければなりません。必要な情報を発明してはいけません。


コアワークフロー

ステップ1. トリガー

ユーザーが動的システムのパラメータをチューニング、試行、スイープ、探索、テスト、または調整するよう要求する場合にこのスキルを使用します。

関連するユーザーのフレーズには以下が含まれます:

  • この動的システムのパラメータをチューニングする
  • この非線形システムのパラメータを調整する
  • パラメータをスイープする
  • パラメータセットを試行する
  • 異なるパラメータをテストする
  • 使用可能なパラメータを見つける
  • 時間応答と位相平面図を生成する
  • このODEモデルをチューニングする
  • この回路モデルをチューニングする
  • カオス、振動、分岐、収束、発散、または自励振動のパラメータを探索する

システムは以下の形式で与えられる場合があります:

  • MATLABコード
  • Pythonコード
  • プレーンテキストODE
  • LaTeX方程式
  • ドキュメント内の方程式
  • 方程式のスクリーンショット
  • 回路由来の状態方程式
  • 既存のシミュレーションスクリプト

ステップ2. 必要な入力値の検証

シミュレーションコードを記述、編集、または実行する前に、ユーザーが明示的にすべての必要な情報を提供したことを確認してください。

不足している必要な値を推測しないでください。

ユーザーは明示的に以下を提供する必要があります:

  1. ODEシステムまたは状態方程式
  2. 状態変数の順序
  3. シミュレーション時間範囲
  4. シミュレーションのステップサイズ
  5. 初期条件ベクトル
  6. 固定パラメータとその値(ある場合)
  7. チューニング可能なパラメータ
  8. 時間応答の過渡状態破棄設定
  9. 位相平面図の過渡状態破棄設定
  10. ソースタイプと完全なソース表現(システムが入力ソースを含む場合)
  11. パラメータ制約または範囲(ある場合)

必要な項目が不足している場合は、停止してユーザーに不足している情報を提供するよう求めてください。

デフォルト値を割り当てて進めないでください。

パラメータセット数は、ユーザーが提供する必要のある項目ではありません。ユーザーがテストするパラメータセット数を指定しない場合は、ステップ11で定義されたデフォルト数を使用します。


重要なルール: 提供されていない必要な値はない

エージェントは、必要なシミュレーション設定を発明、推測、仮定、または静かに選択してはいけません。

この禁止は特に以下に適用されます:

  • シミュレーション期間
  • シミュレーションステップサイズ
  • 初期条件
  • 固定パラメータ値
  • ソースがACであるかDCであるか
  • ソース表現
  • 過渡状態破棄値
  • 状態変数の順序

ユーザーが過渡状態データを破棄したくない場合は、関連する過渡状態破棄値を明示的に0に設定する必要があります。

以下のような値を自動的に選択しないでください:

  • シミュレーションの20パーセント
  • 最初の1000時間単位
  • 最初の100000サンプル
  • その他の推測された過渡状態長

デフォルトパラメータセット数は、このスキルの運用ルールであり、すべての科学的およびシミュレーション定義の入力をユーザーが明示的に提供する必要があるという要件をオーバーライドするものではありません。


ステップ3. システムの読み取りと解釈

ユーザーがファイルを提供または指定する場合、ファイルを読み取り、以下を抽出します:

  • 状態方程式
  • 状態変数
  • パラメータ名
  • 既存のパラメータ値
  • シミュレーション設定
  • 初期条件
  • ソース表現
  • プロット構造
  • ソルバーの使用
  • 出力フォルダ設定(ある場合)

ユーザーが数式、LaTeX、ドキュメントテキスト、またはスクリーンショットで方程式を提供する場合は、方程式をMATLAB ODEコードに慎重かつ忠実に変換します。

MATLABのODEコードを記述する場合は、scripts/のサンプルスクリプトのプログラミングスタイルに従います。

特に:

  • メインシミュレーションスクリプトを上部に記述する
  • パラメータセットを明確に定義する
  • ODEシステムを同じ.mファイルで定義する(ユーザーの既存の構造が別途に必要としない限り)
  • コードを読みやすく明確に保つ
  • パラメータ注釈を図のタイトルまたはテキストラベルで利用できるようにする
  • 合理的な範囲内でユーザーの命名規則を保持する

ステップ4. パラメータ名の整合性チェック

すべてのパラメータ名が以下を通じて整合性があることを確認します:

  • システム方程式
  • 固定パラメータリスト
  • チューニング可能なパラメータリスト
  • ユーザー指定範囲
  • ソース表現
  • 既存のMATLABコード

ユーザーがシステムに現れないパラメータをリストアップした場合は、不一致を報告し、明確にするよう求めてください。

システムに固定パラメータリストにもチューニング可能なパラメータリストにも含まれないパラメータが含まれている場合は、欠落している分類を報告し、ユーザーにそれを分類するよう求めてください。

固定パラメータはパラメータ試行プロセス全体を通じて固定したままでなければなりません。

チューニング可能として明示的にリストされたパラメータのみが変化される可能性があります。


ステップ5. システムタイプの分類

パラメータ試行値を選択する前にシステムを分類します。

以下のカテゴリーの1つを使用します:

  1. 数学的システム
  2. 物理的回路システム
  3. その他の物理的システム
  4. 無次元化されたシステム
  5. 不明なシステムタイプ

例:

  • Lorenz、Rössler、Chen、および同様の抽象ODE系は数学的システムです。
  • Chua回路、メモリスタ回路、Josephson接合回路、および発振器回路は、明示的に無次元化されていない限り物理的回路システムです。
  • 物理回路から導出されたコンパクトODEモデルで、無次元パラメータを使用しているものは無次元化されたシステムです。

システムタイプが不明でありこれがパラメータ選択に影響する場合は、ユーザーに明確にするよう求めてください。


ステップ6. 数学的システムのルール

数学的システムでは、パラメータ値は比較的高い自由度を持つ場合があります。

パラメータが非整数であったり、物理的コンポーネントとして直接実現できなくても受け入れられます。

例えば、以下のような値は数学的システムで受け入れられる場合があります:

sigma = 10;
rho = 28;
beta = 8/3;

しかし、エージェントは依然として以下を守らなければなりません:

  • ユーザー指定の固定パラメータ
  • ユーザー指定のチューニング可能なパラメータ
  • ユーザー指定の範囲
  • ユーザー指定の制約
  • ユーザー指定のシミュレーション設定
  • ユーザー指定の初期条件
  • ユーザー指定の過渡状態破棄設定

ステップ7. 物理的回路システムのルール

物理的回路システムでは、ユーザーが明示的に別の指定をしない限り、パラメータ値は物理的に合理的でなければなりません。

以下の合理性を確認します:

  • 抵抗器
  • コンデンサ
  • インダクタ
  • 電圧源
  • 電流源
  • 周波数
  • 角周波数
  • デバイス定数
  • 結合係数
  • メモリスタパラメータ
  • ソース振幅
  • デューティサイクル
  • コンポーネントの単位

ユーザーが明示的に必要としない限り、マイクロエレクトロニクスまたは回路シミュレーションの明らかに不合理な値を避けてください。

問題のある物理値の例:

  • 目的の回路にとって非現実的に小さい抵抗値
  • 非現実的に大きいコンデンサ値
  • 一般的に入手可能ではない非常に珍しいコンポーネント値
  • 回路スケールと一致しないソース振幅
  • 目的の物理モデルと一致しない周波数

可能な限り、合理的で一般的に入手可能な物理的コンポーネント値を選択してください。

例えば、以下のような一般的なコンポーネント値を優先します:

1 kOhm, 2.2 kOhm, 4.7 kOhm, 10 kOhm
10 nF, 47 nF, 100 nF, 220 nF
1 uH, 10 uH, 100 uH, 1 mH

無次元化されたシステムに市場で利用可能なコンポーネント制約を強要しないでください。

ユーザーがシステムが無次元化されていると述べた場合は、パラメータを物理的なコンポーネント値ではなく、数学的な量または正規化された量として扱います。


ステップ8. ソース処理ルール

システムがソースを含む場合、ユーザーはソースタイプを指定する必要があります。

最低限、ユーザーはソースが以下のいずれであるかを指定する必要があります:

  • DC
  • AC
  • 矩形波
  • パルス
  • 区分定義
  • その他の明示的な形式

ユーザーは完全なソース表現を提供する必要があります。

例:

v = 0.5;
v = 0.5*cos(200*t);
v = A*sin(2*pi*f*t + phi);

ソースがチューニング可能な場合は、それを個別のチューニング可能な量に分解します。

例えば、これを1つの曖昧なパラメータとして扱わないでください:

v_source = A*sin(2*pi*f*t + phi);

代わりに、チューニング可能な量を分離します:

A
f
phi

周波数と角周波数の区別を尊重します。

ソースが以下のように記述されている場合:

sin(2*pi*f*t + phi)

その場合、fはHzの周波数です。

ソースが以下のように記述されている場合:

sin(omega*t + phi)

その場合、omegaはrad/sの角周波数です。

既存のサンプルコードが以下のような形式を使用する場合:

Iext = A*cos(F*t);

その場合、Fはユーザーが別に定義しない限り角周波数として扱われるべきです。


ステップ9. 制約の抽出

すべてのユーザー指定パラメータ要件を抽出します。

これには以下が含まれる場合があります:

  • 固定値
  • 許可された範囲
  • 優先範囲
  • 除外範囲
  • コンポーネント入手可能性制約
  • 単位制約
  • 物理的合理性制約
  • ソース波形制約
  • ドメイン制約

例:

R3は1 kOhmから10 kOhm間である必要があります。
C1は約100 nF程度であるべきです。
デューティサイクルは0から1の間である必要があります。
Aは1 Vを超えてはいけません。
fは10 kHzを下回る必要があります。

生成されたすべてのパラメータセットはこれらの制約を守らなければなりません。

パラメータが自然なドメインを持つ場合、それを強制します。

例:

  • デューティサイクルは[0, 1]にあるべき
  • コンデンサ値は正である必要があります
  • 抵抗値は正である必要があります
  • インダクタンスは正である必要があります
  • 周波数は非負である必要があります
  • 物理的なソース振幅はシステムスケールに対して合理的であるべき

ユーザー指定の範囲が物理的合理性と競合する場合は、進める前に競合を報告してください。


ステップ10. 粗い試行か細かい試行かを判定

現在のパラメータ試行が粗い試行か細かい試行かを判定します。

以下の場合に粗い試行を使用します:

  • システムが新しい
  • 多くのチューニング可能なパラメータに狭い範囲がない
  • ユーザーが有望な領域をまだ特定していない
  • ユーザーが広い探索を望んでいる
  • 以前に使用可能なパラメータセットが利用できない

以下の場合に細かい試行を使用します:

  • ユーザーが既に以前の試行を実行している
  • ユーザーが狭いパラメータ範囲を提供している
  • ユーザーが有望なパラメータセットを特定している
  • ユーザーが既知の動作の周りで絞り込みたい
  • ユーザーがより小さいまたはより対象とした試行を求めている

このスキルは厳密なグリッド最適化ではなく試行パラメータ選択を実行します。

エージェントはユーザーが明示的に要求しない限り、固定ステップサイズまたは網羅的なグリッドを使用する必要はありません。

エージェントは意味のある異なり、視覚的検査に役立つ候補パラメータセットを生成すべきです。


ステップ11. パラメータセット数ルール

ユーザーがパラメータセット数を明示的に指定しない場合は、300個のパラメータセットを実行して結果を保存します。

これはデフォルト試行数です。

ユーザーが異なるパラメータセット数を明示的に要求する場合は、ユーザーの要求数に従います。

例:

  • ユーザーが500グループを実行するよう言う場合は、500パラメータセットを実行します。
  • ユーザーが1000グループを実行するよう言う場合は、1000パラメータセットを実行します。
  • ユーザーが高速テスト用に50グループのみを実行するよう言う場合は、50パラメータセットを実行します。
  • ユーザーがグループ数を指定しない場合は、300パラメータセットを実行します。

パラメータセット数は、生成、シミュレーション、プロット、および保存される候補パラメータグループの数を制御します。

各パラメータセットは以下を生成する必要があります:

  • 1つの時間応答図
  • 1つの位相平面図
  • 1つの対応するパラメータログエントリ

シミュレーションが失敗した場合、失敗したケースは依然として試行されたパラメータセットとしてカウントされ、パラメータログに記録される必要があります。


ステップ12. MATLABスクリプト準備

すべての必要な情報が完全になった後、MATLABスクリプトを準備します。

ユーザーがすでにスクリプトを提供し、それを変更するよう求めた場合は、そのスクリプトを変更します。

ユーザーがスクリプトを提供していない、またはスクリプト位置を指定していない場合は、プロジェクトフォルダに新しい.mスクリプトを作成します。

命名ルールを使用します:

phase_sweep_x.m

ここでxは現在のコンテキストにおけるスイープまたは試行番号を示します。

例:

phase_sweep_1.m
phase_sweep_2.m
phase_sweep_3.m

スクリプトの上部に、試行番号を識別するコメントを追加します。

例:

% phase_sweep_1.m
% First parameter trial for the current dynamical system.

scripts/のサンプルMATLABスクリプトのスタイルに従います。

サンプルスクリプトスタイルには以下が含まれます:

  • 明示的なパラメータ定義
  • 明示的なシミュレーション設定
  • 明示的な初期条件
  • ode45Psの使用
  • 時間応答のプロット
  • 位相平面図のプロット
  • パラメータと初期条件情報を持つ図の注釈付け
  • 出力フォルダへの図の保存

ステップ13. ソルバーのルール

サンプルスクリプトがそれを使用する場合は、カスタムソルバーode45Psを使用します。

ユーザーが明示的に要求しない限り、ode45PsをMATLAB組み込みode45ode15s、または別のソルバーに置き換えないでください。

シミュレーションが以下のような数値的失敗を生じた場合:

  • NaN
  • Inf
  • 明らかな発散
  • ソルバー失敗
  • ステップサイズ不安定性
  • 無意味な数値出力

その場合は、問題を報告してください。

静かにソルバーを変更しないでください。

可能な限り解決策を提案として提案してください。例えば:

  • ソルバーの変更を許可する
  • ステップサイズを削減する
  • シミュレーション時間を短縮または延長する
  • 変数をリスケールする
  • パラメータ範囲を修正する
  • ODE方程式を確認する

ステップ14. パラメータセット構造

明確な構造を使用して、1つのスクリプトにすべての試行パラメータセットを保存することを優先します。

例えば:

param_sets(1) = struct(...);
param_sets(2) = struct(...);
param_sets(3) = struct(...);

各パラメータセットは1回のシミュレーション実行と1対の出力画像に対応する必要があります:

  • 1つの位相平面図
  • 1つの時間応答画像

画像インデックスはパラメータセットインデックスと一致する必要があります。

固定パラメータは含まれるか明確に参照される必要がありますが、パラメータセット全体で変化してはいけません。

チューニング可能なパラメータは試行計画に従って変化すべきです。


ステップ15. 次元適応プロット

プロットコードをユーザーのシステムの次元に適応させます。

n次元システムの場合:

  1. すべての時間応答を1つの図にプロットします。
  2. 時間応答図にn個の垂直サブプロットを使用します。
  3. 選択した2D位相平面図を1つの図にプロットします。
  4. ユーザーが明示的に要求しない限り、3D位相平面図を生成しないでください。
  5. ユーザーが明示的に要求しない限り、高次元システムのすべての可能な2D位相組み合わせをプロットしないでください。

時間応答プロットは、状態変数の順序に従って上から下に配置されたすべての状態変数を含むべきです。

位相平面図は、物理的または構造的に意味のある2D組み合わせを含むべきです。

ユーザーが位相平面図の変数ペアを指定する場合は、ユーザーの選択を使用します。

ユーザーが位相平面図の変数ペアを指定しない場合は、以下に基づいて代表的なペアを選択します:

  • 物理的な意味
  • 変数結合
  • 電圧電流関係
  • フラックス電荷関係
  • 状態変数関係
  • サンプルスクリプトとの類似性
  • 解釈可能性

選択された位相平面図ペアを説明するコメントをスクリプトに追加してください。


ステップ16. 過渡状態破棄ルール

ユーザーは2つの過渡状態破棄設定を明示的に提供する必要があります:

  1. 時間応答プロット用の過渡状態破棄
  2. 位相平面図用の過渡状態破棄

これら2つの値は同じである場合もあれば、異なる場合もあります。

ユーザーが過渡状態の除去を望まない場合は、関連する値を明示的に0に設定する必要があります。

インデックスベースの過渡状態破棄ではなく時間ベースの過渡状態破棄を優先します。

例:

time_discard = 1000;
phase_discard = 2000;

意味:

時間応答プロットについては、t >= 1000のデータのみをプロットします。
位相平面図について、t >= 2000のデータのみをプロットします。

MATLABでは、堅牢な時間ベースのインデックスメソッドを使用します。例えば:

idx_time = find(t >= time_discard, 1, 'first');
idx_phase = find(t >= phase_discard, 1, 'first');

if isempty(idx_time)
    error('time_discard is larger than or equal to the simulation end time.');
end

if isempty(idx_phase)
    error('phase_discard is larger than or equal to the simulation end time.');
end

その後、以下を使用します:

plot(t(idx_time:end), y(idx_time:end, i));

時間応答用、および以下を使用します:

plot(y(idx_phase:end, a), y(idx_phase:end, b));

位相平面図用。

ユーザーが明示的にインデックスベースの過渡状態破棄を要求しない限り、以下のようなハードコードされた破棄インデックスを使用しないでください:

y(1e5:end, :)

ステップ17. 図の注釈付けルール

生成されたすべての図は、それを生成したパラメータセットを明確に示す必要があります。

各時間応答図と各位相平面図には以下が含まれるべきです:

  • パラメータセットインデックス
  • チューニング可能なパラメータ値
  • 固定パラメータ値(実用的な場合)
  • 初期条件
  • シミュレーション時間範囲
  • 過渡状態破棄設定
  • ソース表現(関連する場合)

これはユーザーが後で保存された画像を検査するのに必要です。

画像自体はユーザーがMATLABスクリプトを開かずに対応するシミュレーションを特定するのに十分なパラメータ情報を含む必要があります。

注釈が長すぎてタイトルに収まらない場合は、以下の1つ以上を使用します:

  • サブタイトル
  • テキスト注釈
  • sgtitle
  • テキストボックス注釈
  • コンパクトなパラメータ文字列

ステップ18. 出力フォルダのルール

ユーザーが出力フォルダを指定する場合は、生成されたすべての結果画像をそこに保存します。

ユーザーが出

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
SailRain
リポジトリ
SailRain/dynamical-system-tuner-skill
ライセンス
MIT
最終更新
2026/5/8

Source: https://github.com/SailRain/dynamical-system-tuner-skill / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: SailRain · SailRain/dynamical-system-tuner-skill · ライセンス: MIT