模型正在复制 1 次输出而不是所需的 3 次

Model is duplicating output of 1 time instead of the 3 required

在模型中,有两种类型的代理(FollowUp 和 NewConsult),我想在进入占用块和占用资源时收集时间,以便了解在该块中等待的时间 运行 一个参数变化实验。每个患者类型都有各自的 timeEnterClerk 变量,时间被添加到各自的 waitClerkTime 统计数据中。从输出中可以看出,每种代理类型都被指定了一个时间,无论是上午(时间 < 150)、下午(时间 > 150)还是一整天。我很困惑,因为在 waitClerkTime.add(time() - agent.timeEnterClerk );waitClerkTimeMorn.add(time() - agent.timeEnterClerk );waitClerkTimeAft.add(time() - agent.timeEnterClerk );.

中输出所有代理类型的平均值时情况并非如此
// On Enter

agent.timeEnterClerk = time();  

if (agent instanceof FollowUp)
    ((FollowUp)agent).timeEnterClerkFollowUp = time();

if (agent instanceof NewConsult)
    ((NewConsult)agent).timeEnterClerkNewConsult = time();

// On Seize

waitClerkTime.add(time() - agent.timeEnterClerk );

if (agent instanceof FollowUp)
    waitClerkTimeFollowUp.add(time() - ((FollowUp)agent).timeEnterClerkFollowUp );
if (agent instanceof NewConsult)
    waitClerkTimeNewConsult.add(time() - ((NewConsult)agent).timeEnterClerkNewConsult );

if (time() < 150)
    
    waitClerkTimeMorn.add(time() - agent.timeEnterClerk );

    if (agent instanceof FollowUp)
        waitClerkTimeMornFollowUp.add(time() - ((FollowUp)agent).timeEnterClerkFollowUp );
    if (agent instanceof NewConsult)
        waitClerkTimeMornNewConsult.add(time() - ((NewConsult)agent).timeEnterClerkNewConsult); 

        
if (time() > 150)
    
    waitClerkTimeAft.add(time() - agent.timeEnterClerk );

    if (agent instanceof FollowUp)
        waitClerkTimeAftFollowUp.add(time() - ((FollowUp)agent).timeEnterClerkFollowUp );
    if (agent instanceof NewConsult)
        waitClerkTimeAftNewConsult.add(time() - ((NewConsult)agent).timeEnterClerkNewConsult);

仿真后的参数变化运行:

KneeClinicDataExport.setCellValue(root.waitClerkTime.mean(), 1, row + 1, 1); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeMorn.mean(), 1, row + 1, 2); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeAft.mean(), 1, row + 1, 3);

KneeClinicDataExport.setCellValue(root.waitClerkTimeFollowUp.mean(), 1, row + 1, 4); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeMornFollowUp.mean(), 1, row + 1, 5); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeAftFollowUp.mean(), 1, row + 1, 6);

KneeClinicDataExport.setCellValue(root.waitClerkTimeNewConsult.mean(), 1, row + 1, 7); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeMornNewConsult.mean(), 1, row + 1, 8); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeAftNewConsult.mean(), 1, row + 1, 9);

KneeClinicDataExport.setCellValue(root.waitClerkTimeRevision.mean(), 1, row + 1, 10); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeMornRevision.mean(), 1, row + 1, 11); 
KneeClinicDataExport.setCellValue(root.waitClerkTimeAftRevision.mean(), 1, row + 1, 12);

row++;

您遇到此问题的原因是您没有在 if 语句中使用括号

在下面的例子中,两个语句都在条件为真时执行

if(conditions){
    statementA;
    statementB;
}

下面的例子中,当条件为真时只执行statementA,而statementB总是执行

if(conditions)
statementA;
statementB;