自己整理了一下思路,才发现自带的代码是多么的精简,这就是高手与新手的差别啊~~
以下是我按照自己的思路编写的代码:[code]int batchnumber = 5;
double cycletime = exponential(0, 4, 0);
string labelName = "批次数量";
treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);
if (time()==0)
{
setnodenum(curlabel,batchnumber);
return cycletime;
}
else
{
if (getnodenum(curlabel)==1)
//如果等于0,似乎是正确的,但是会比预期中的批次数量大1.
//原因在于只要激发了该触发,就一定会生成一个临时实体。
{
setnodenum(curlabel,batchnumber);
//想要执行的语句一定要放在return前面。
return cycletime;
}
else
{
inc(curlabel,-1);
return 0;
}
}[/code]以下是flexsim自带代码:[code]int batchnumber = 5;
double cycletime = exponential(0, 10, 0);
string labelName = "批次数量";
treenode curlabel = assertlabel(current, labelName, DATATYPE_NUMBER);
if (time()>0 && getnodenum(curlabel)>1) {
inc(curlabel,-1);
return 0;
} else {
setnodenum(curlabel,batchnumber);
return cycletime;
}[/code] |