根据优先级对实体进行排序,为高优先级客户提供服务
此示例显示了如何通过使用优先队列和实体输入开关和实体输出开关块来最大程度地减少服务高优先级客户所需的时间。客户根据其服务优先级提供服务。在此示例中,两种类型的客户输入排队系统。一种类型代表高优先级客户,紧迫性。第二种客户的优先级较低,并且紧迫性较小。优先队列将高优先级客户置于低优先级客户之前。
构建模型
在模型中,到达客户由实体生成器和实体生成器1表示。
在实体发生器块中,客户间到达时间是由指数分布生成的
3
。
实体发生器块生成具有属性的实体,
优先事项
和开始时间
。这优先事项
属性设置为1
,这是客户的服务紧迫性。这开始时间
属性也设置为1
,初始化模型中使用的启动时间值。
同样,实体Generator1生成的实体,该实体是由指数分布生成的,平均值的指数分布
1
。实体具有相同的属性,优先事项
和开始时间
。这优先事项
属性设置为2
这是客户的服务紧迫性。这开始时间
属性设置为1
。
实体输出开关块接受实体生成器和实体生成器1块生成的实体,并将其转发到优先级队列。
实体队列块代表客户的排队,并根据其服务紧迫性将其优先考虑。
这容量实体队列块是
25
。
队列类型设定为
优先事项
根据实体的优先级值对实体进行排序。
优先源设定为
优先事项
,这是用于对实体进行分类的属性。
分类方向设定为
上升
。价值较低的实体优先事项
放在队列的前面。在此设置中,客户优先事项
的价值1
优先于客户2
。
Simu金宝applink功能块用于时间戳进入实体队列块的实体。
在实体队列块中事件动作标签,在入口操作,使用以下代码,以便每次实体进入块时,
getCurrentTime()
金宝app调用Simulink函数。
entity.starttime = getCurrentTime();
在Simuli金宝appnk功能块中,使用数字时钟块来时间戳进入实体队列块的实体。
实体服务器块表示客户收到的服务。
实体输出开关块输出出发实体。
切换标准设定为
从属性
,它根据实体属性选择偏离路径。
切换属性名称设定为
优先事项
。如果是优先事项
值是1
,块切换到输出端口1
如果是优先事项
值是2
,块切换到输出端口2
用于实体离开。
当实体进入实体终结者块时RecordHighPriorityWaittimes(开始时间)
调用函数来计算实体到达实体队列块之间花费的时间及其偏离实体终结者块之间的时间。
在实体终结者块中事件动作标签,在入口, 这
RecordHighPriorityWaittimes(开始时间)
函数被调用。
该函数的输入参数是
startime
,这是实体进入实体队列块时记录的时间戳。
Simu金宝applink功能块采用此参数,并计算开始时间和出发时间之间的差异。
同样,
RecordLowPriorityWaittimes(启动时间)
功能计算低优先级实体的时间。
计算出的总服务时间由仪表板示波器块显示。
模拟模型和审查结果
模型的仿真时间设置为100
。
模拟模型并观察仪表板示波器块中显示的结果。该街区表明,高优先级客户的等待时间大大低于低优先级客户。
也可以看看
实体队列|实体服务器|实体输出开关|实体输入开关|金宝appSimulink函数