2017-08-23 2 views
1

Repast Simphonyでは、ランタイム環境からのシミュレーション内のすべてのエージェントのテーブル(1 tickあたり)を表示できます。実行時環境からテーブルまたはデータを簡単に保存する方法はありますか?または、表に示されているような出力を複製するコードを記述する必要がありますか?Repastエージェントテーブルをユーザコードから呼び出すことはできますか?

答えて

1

エージェントテーブルのツールバーには、テーブルをExcelファイルに保存するディスクアイコンがあります。頻繁に呼び出された場合、私はすべてのダニを記録するためにこれを使用してお勧めしませんので、しかし、これは非常に非効率的だろう

public void log(){ 
    double tick = RunEnvironment.getInstance().getCurrentSchedule().getTickCount(); 
    Context context = RunState.getInstance().getMasterContext(); 

    Map<String,TableModel> models = new HashMap<String,TableModel>(); 

    // Create a tab panel for each agent layer 
    for (Object agentType : context.getAgentTypes()){ 
     Class agentClass = (Class)agentType; 

     JPanel agentPanel = AgentTableFactory.createAgentTablePanel(context.getAgentLayer(agentClass), agentClass.getSimpleName()); 

     if (agentPanel instanceof TablePanel){ 
      TableModel model = ((TablePanel)agentPanel).getTable().getModel(); 
      models.put(agentClass.getSimpleName(), model); 

     } 
    } 

    SpreadsheetUtils.saveTablesAsExcel(models, new File("out-"+tick+".xlsx")); 
} 

注:プログラムでテーブルを生成し、次のコード例を使用してファイルに保存することも可能です。

関連する問題