AnyLogicのメモリアナライザーによるモデルパフォーマンス向上: 使用事例概要

AnyLogic メモリアナライザーでランダムアクセスメモリの使用を最適化

誰もがソフトウェアがスムーズかつ迅速に実行されることを期待しています。クラッシュやフリーズが発生する余地や時間はありません。モデル開発者にとっては、モデルのパフォーマンスを優先し、最適化手法を使用することを意味します。

この革新的なツールがモデルのパフォーマンスをどのように向上させることができるかを示す 2 つの説得力のある例を詳しく見ていきましょう。

コンテンツ:

  1. AnyLogic メモリアナライザー概要
  2. メモリアナライザーの使用事例
  3. シミュレーションモデルに最適な最適化手法
  4. AnyLogic によるモデルパフォーマンス向上

AnyLogic のメモリアナライザー概要

最新の AnyLogic 8.9 のリリースでは、メモリ アナライザーが導入されました。これは、パフォーマンスのボトルネックを見つけ、メモリ リークを特定し、さまざまな最適化手法を適用してモデルを微調整できるように設計された強力な組み込みツールです。

メモリ アナライザーの使用を開始するには、モデルを実行してアナライザーをアクティブ化します。上部のメニューで、Modelセクションを選択し、Memory dumpをクリックします。

AnyLogic インターフェースのメモリアナライザーへのルート
AnyLogic インターフェースのメモリアナライザーへのルート

メモリ アナライザーを有効にすると、実行中にモデルのさまざまなコンポーネントがメモリをどのように消費するかを追跡します。大量のランダム アクセス メモリ (RAM) を占有する特定のオブジェクト、クラス、インスタンスなど、モデルのどの部分が最も多くのメモリを使用しているかを強調表示する詳細なレポートを生成します。

メモリアナライザーを適用してモデルのパフォーマンスを向上させる使用事例

複雑なプロセスでは、効果的なモデル最適化には、大量の RAM を必要とする要素を管理する必要があります。モデルを構築した後、どの部分が最も多くのメモリを使用するかを特定するのは困難な場合があります。

メモリ アナライザーを使用すると、リソースを大量に消費するコンポーネントを特定し、最適化してモデルのパフォーマンスを向上させることができます。メモリ アナライザーがこのような問題の検出にどのように役立つか、例を挙げて説明します。

ケース1: メモリボトルネックの特定

モデルのさまざまな部分の統計を処理するために別のエージェントを作成することは、シミュレーション モデリングでは一般的な方法です。このエージェントを StatisticsAgent と呼び、必要な統計要素を追加してみましょう。

統計要素: 荷積み時間、荷卸し時間、資源利用率、運送機の速度、故障の数量、待ち時間
StatisticsAgent 内の必要な統計要素

この StatisticsAgent を別のエージェントのマークアップ スペースにドラッグ アンド ドロップして、その要素の動作を簡単に確認できます。

この例で使用したモデルの構造
この例で使用したモデルの構造
AnyLogic インターフェースで RAM 不足が表示される
モデルのパフォーマンスを下
げるメモリのボトルネック

ただし、この単純なモデルを実行すると、割り当てられたメモリのほぼすべてが使用されることに気付くかもしれません。

メモリ アナライザーを使用すると、どのオブジェクトが最も多くの RAM を消費しているかをすばやく特定し、モデルのパフォーマンスを向上させることができます。この場合、 Top Consumers セクションには、原因が StatisticsAgent にあることが示されており、具体的には 1,500 個のオブジェクトがこれに該当します。

トップ消費者チャートでモデルのパフォーマンスに影響を与える要素の内訳を表示
モデルのパフォーマンスに影響を与える要素の内訳を示すトップ消費チャート
StatisticsAgent の設定が間違っている AnyLogic インターフェース
StatisticsAgent の間違った設定

StatisticsAgent は、単一のエージェントではなく、エージェントの集団を作成するように設定されていました。この間違いにより、1,499 個の不要な StatisticsAgent オブジェクトが作成され、すべてのメモリが消費され、モデルの実行が妨げられました。

幸いなことに、これらの余分なエージェントを削除すると、メモリ使用量がわずか 10% に削減されました。これは、モデルのパフォーマンスを向上させるためにモデルの最適化がいかに重要であるかを示しています。

単純なモデルであっても、適切に構築されていないと、すぐに使用可能なメモリを使い果たし、クラッシュする可能性があります。この例では、小さなミスがメモリの使用不良につながる可能性があることを示しました。

ケース2: メモリリークの修正

ここで、モデル開発における一般的な問題である、Java 関連のメモリ リークについて見てみましょう。メモリ リークは、未使用のオブジェクトがプログラムのメモリ内に残り、ガベージ コレクターがそれらを削除できない場合に発生します。これにより、不要な RAM が使用され、モデルに影響します。実際の例を通して、メモリ アナライザーがこれらのリークを検出して修正し、モデルのパフォーマンスを向上させる方法を見てみましょう。

AnyLogic では、コードを使用してエージェントを作成できます。たとえば、部品番号のコレクションを保持するストレージ エージェントを定義します。簡単にするために、すべての部品番号が同一であると仮定します。これらのエージェントをいくつか追加すると、モデルはすぐに使用可能なメモリをすべて使い果たし、クラッシュします。

ストレージエージェントを追加するためのプロパティ
ストレージエージェントを追加するためのプロパティ
定義されたストレージコレクションを参照するメモリアナライザー
定義されたストレージコレクションを参照するメモリアナライザー

メモリ アナライザーを使用すると、ストレージ コレクションが問題の原因であることがわかります。エージェントとそのコレクションを削除した後でも、メモリは完全に解放されません。

コレクション タイプは ArrayList であり、内部的に配列を使用していることがわかります。配列をクリアすると、その要素は null になり、Java ガベージ コレクターによって最終的に削除されます。ただし、配列のサイズは変更されないため、メモリを消費します。

これを修正するには、多数のオブジェクトを含むコレクションを削除するときに、コレクションをクリアするだけでなく、正しい関数を使用して配列のサイズを調整する必要があります。巨大なコレクションを持つエージェントを削除するためのコードは次のとおりです。

for (Storage agent: storages){
agent.partNumbers.clear();
agent.partNumbers.trimToSize();
}
while(!storages.isEmpty()){
remove_storages (storages.get(0));
}
System. gc (); 

このアクションにより、適切なメモリ解放が保証され、モデルのパフォーマンスが向上します。

シミュレーションモデルに最適な最適化手法

上記のユースケースでは、モデルのパフォーマンスに影響を与える 2 つの一般的な問題を確認しました。その他の最適化手法をお探しの場合は、次のオプションをご検討ください:

  1. エージェントの数を最小限にする
    モデルには必要なエージェントのみを残してください。エージェントが多すぎると、メモリと処理能力が浪費される可能性があります。
  2. シンプルなロジックを使用
    モデルではシンプルなロジックを使用します。複雑な決定木(decision tree)や不必要な計算は避けてください。よりシンプルなロジックにより、モデルのパフォーマンスが向上し、理解とデバッグが容易になります。
  3. 効率的なデータ処理
    本当に必要なデータのみを保存し、効率的なデータ構造を使用します。データセットが大きく、データ処理が不十分だと、モデルの最適化に影響します。データ アクセスを高速化するには、インデックス コレクションまたはハッシュ マップの使用を検討してください。
  4. 組み込み関数を活用
    AnyLogic の組み込み関数とライブラリは、最適なモデル最適化のために設計されているため、それらを使用します。
  5. バッチ実験を実行
    バッチ実験は、複数のシナリオとパラメータを自動的にテストするのに適したオプションです。モデルのパフォーマンスを向上させるための最適な設定を見つけるのに役立ちます。
  6. リソース使用の最適化
    メモリと CPU の使用量を慎重に管理します。メモリ アナライザーなどのツールを使用して、メモリ リークやボトルネックを検出して修正します。
  7. 並列処理を活用
    可能であれば、並列処理を使用して複数のシミュレーションを同時に実行します。これにより、計算時間が短縮され、モデル全体のパフォーマンスが向上します。

AnyLogic によるモデルパフォーマンスの向上

モデルの最適化は、モデルがスムーズかつ効率的に動作するために不可欠です。AnyLogic は、モデルの弱点を特定して対処することでモデルの効率を高める強力なメモリ アナライザーを導入しました。

このツールを活用し、最適化手法に従うことで、モデルのパフォーマンスを大幅に向上させ、モデルが適切に動作し、現実的なデータを提供することが保証されます。この記事が、お客様のモデルで AnyLogic メモリ アナライザーをテストするきっかけになれば幸いです。


AnyLogic ソフトウェアで最高のモデリングテクノロジーを活用しましょう。

最新バージョンを入手

関連記事