SimPy 4.1の概要
SimPyは、Pythonに基づいたプロセスベースの離散イベントシミュレーションフレームワークです。SimPyでは、プロセスはPythonのジェネレーター関数によって定義され、顧客、車両、エージェントなどのアクティブコンポーネントをモデル化するために使用できます。SimPyは、サーバー、チェックアウトカウンター、トンネルなどの限られた容量の混雑ポイントをモデル化するためのさまざまな種類の共有リソースも提供します。
シミュレーションは「できるだけ早く」、リアルタイム(壁時計時間)で、または手動でイベントをステップ実行することによって実行できます。理論的には、SimPyで連続シミュレーションを行うことも可能ですが、そのための機能はありません。一方で、プロセスが互いにまたは共有リソースと相互作用しない固定ステップサイズのシミュレーションには、SimPyは過剰です。
簡単な例
異なる時間間隔で動作する2つの時計をシミュレートする短い例は次のとおりです:
import simpy
def clock(env, name, tick):
while True:
print(name, env.now)
yield env.timeout(tick)
env = simpy.Environment()
env.process(clock(env, 'fast', 0.5))
env.process(clock(env, 'slow', 1))
env.run(until=2)
このコードを実行すると、次のような出力が得られます:
fast 0
slow 0
fast 0.5
slow 1
fast 1.0
fast 1.5
ドキュメントとリソース
SimPyのドキュメントには、基本を学ぶためのチュートリアル、主要な概念を説明するガイド、いくつかの使用例、APIリファレンスが含まれています。SimPyはMITライセンスの下でリリースされています。シミュレーションモデルの開発者は、SimPyコミュニティと自分のSimPyモデリング技術を共有することが奨励されています。SimPyの概念を説明し、いくつかの例を提供する入門講演もあります:ビデオを視聴するか、スライドを取得してください。
SimPyは他のプログラミング言語でも再実装されています。詳細については、ポートのリストを参照してください。
まとめ
SimPyは、シミュレーションのための強力なツールであり、さまざまな分野での応用が期待されます。興味がある方は、ぜひ公式サイトを訪れて、最新の情報を確認してください。