外部调用simio仿真实验器并返回结果的方法(C#)

[复制链接]
查看11 | 回复0 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
Simio,下一代系统仿真中国总代理/技术服务商 http://www.xunhetech.com专注于simio项目咨询,开发和教育
===============================================================
C#源代码:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using SimioAPI;
namespace RunExperiments
{
public partial class RunExperiments : Form
{
private static double _expReturnValue = 0.0;
private static int _currentRun = 0;
public RunExperiments()
{

InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{

try

{

var reps = Convert.ToInt32(textNumberOfReps.Text);

var runtime = Convert.ToInt32(textDaysPerRun.Text);



var getFile = new OpenFileDialog();

getFile.Filter = "Simio Project Files(*.spfx)|*.spfx";

if (getFile.ShowDialog() == DialogResult.Cancel)

{

MessageBox.Show("Canceled by user.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);

return;

}

string[] warnings;

ISimioProject project = SimioProjectFactory.LoadProject(getFile.FileName, out warnings);

textProjectLoaded.Text = getFile.FileName;

IModel model = project.Models["Model"];

IExperiment experiment = model.Experiments["Experiment1"];

// Specify run times.

IRunSetup setup = experiment.RunSetup;

setup.StartingTime = new DateTime(2010, 10, 01);

setup.WarmupPeriod = TimeSpan.FromHours(0);

setup.EndingTime = experiment.RunSetup.StartingTime + TimeSpan.FromDays(runtime);

// Add event handler for ScenarioEnded

experiment.ScenarioEnded += new EventHandler(experiment_ScenarioEnded);

experiment.RunCompleted += new EventHandler(experiment_RunCompleted);

textResults.Text = "Start!!!" + "\r\n";

// For each number of runs

for (int i = 0; i < experiment.Scenarios.Count; i++)

{

experiment.Scenarios.ReplicationsRequired = reps;

}

textResults.Text += "Start run: " + DateTime.Now.ToString() + " \r\n";

// set table parameter value

model.Tables["Parameters"].Rows[0].Properties["Column1"].Value = _currentRun.ToString(System.Globalization.CultureInfo.InvariantCulture);

// Reset _expReturnValue

_expReturnValue = 0.0;

experiment.Scenarios[0].ReplicationsRequired = reps;

// Run Experiment

experiment.RunAsync();

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}
}
void experiment_RunCompleted(object sender, RunCompletedEventArgs e)
{

textResults.Text += "End run: " + DateTime.Now.ToString() + " return value: " + _expReturnValue.ToString() + "\r\n";

IExperiment experiment = (IExperiment)sender;

experiment.Reset();
}
void experiment_ScenarioEnded(object sender, ScenarioEndedEventArgs e)
{

IExperiment experiment = (IExperiment)sender;

// get response value

foreach (IExperimentResponse response in experiment.Responses)

{

double responseValue = 0.0;

if (e.Scenario.GetResponseValue(response, ref responseValue))

{

_expReturnValue += responseValue;

textResults.Text += "End scenario(" + e.Scenario.Name + ") " + DateTime.Now.ToString() + " return value: " + responseValue.ToString() + "\r\n";

break;

}

}
}
}
}
有问题请联系[email protected]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行