对modeFRONTIER软件比较了解的用户应该知道,在modeFRONTIER软件中允许在进行DOE样本点计算或者优化计算的时候同时计算多个设计点(一组输入参数组合对应一个设计点),具体设置的地方在Sched uling Start节点的Run Options设置界面当中,如下图所示:
但是在实际使用上述功能的时候,有时会碰到这样的现象:优化流程中的某些节点在同时并发过多进程的时候,可能会出现卡死或者堵塞之类的现象。例如在优化流程中有调用远程服务器的SSH节点的时候,某些远程服务器由于服务器设置的原因,在同时有过多的并发客户端试图连接的时候,就可能出现其中一些进程连接不上的情况。
上述情况往往只要进程间能稍微错开一些时间,就不会出现问题。因此在这种情况下,可以考虑在流程中加入随机延时的功能,使得对应节点的调用可以错开。很多语言脚本(例如Python等)都有随机函数和延时函数,组合使用即可达到相应的效果。在modeFRONTIER也可以调用这些语言脚本,实现相应的功能。但可能很多用户还不太了解的是,在modeFRONTIER的计算器(Calculator)节点中,本身就自带上述两种功能函数,因此完全可以利用modeFRONTIER的计算器(Calculator)节点,很方便地实现我们想要的随机延时功能。
modeFRONTIER计算器中的随机函数是rand函数,如果不加任何参数,则rand()返回一个0到1之间的随机数,如果加上参数a,则rand(a)返回一个0到a之间的随机数。
modeFRONTIER计算器中的的延时函数为sleep函数,sleep(s)的功能就是系统不执行任何操作,等待s秒。
因此我们只需要在可能出现卡死或堵塞现象的节点之前,加入一个计算器节点,计算器节点的脚本就是sleep(rand(t)),t是最大延时时间,可以按需要设置即可。
这样,modeFRONTIER的不同设计点所对应的进程在调用相应节点时,就会错开一个随机的时间,因此避开相应的卡死或堵塞情况。
用户也可以在自己的流程中,利用随机函数rand()或延时函数sleep(),实现一些自己所需要的特定功能。
来源:艾迪捷