1classdef FunctionTask < Task
2 % A software server in a LayeredNetwork.
4 % Copyright (c) 2012-2026, Imperial College London
19 %
public methods, including constructor
22 function self = FunctionTask(model, name, multiplicity, scheduling)
23 %self = FunctionTask(model, name, setupTime, delayoffTime, multiplicity, scheduling)
25 if ~exist(
'name',
'var')
26 line_error(mfilename,'Constructor requires to specify at least a name.');
34 scheduling = SchedStrategy.FCFS;
36 self@Task(model, name, multiplicity, scheduling);
37 self.setSetupTime(Immediate());
38 self.setDelayOffTime(Immediate());
41 function self = setSetupTime(self, SetupTime)
42 % self = SETTHINKTIME(self, THINKTIME)
44 if isnumeric(SetupTime)
45 if SetupTime <= GlobalConstants.FineTol
46 self.SetupTime = Immediate.getInstance();
47 self.SetupTimeMean = GlobalConstants.FineTol;
48 self.SetupTimeSCV = GlobalConstants.FineTol;
50 self.SetupTime = Exp(1/SetupTime);
51 self.SetupTimeMean = SetupTime;
52 self.SetupTimeSCV = 1.0;
54 elseif isa(SetupTime,'Distribution')
55 self.SetupTime = SetupTime;
56 self.SetupTimeMean = SetupTime.getMean();
57 self.SetupTimeSCV = SetupTime.getSCV();
61 function self = setDelayOffTime(self, DelayOffTime)
62 % self = SETTHINKTIME(self, THINKTIME)
64 if isnumeric(DelayOffTime)
65 if DelayOffTime <= GlobalConstants.FineTol
66 self.DelayOffTime = Immediate.getInstance();
67 self.DelayOffTimeMean = GlobalConstants.FineTol;
68 self.DelayOffTimeSCV = GlobalConstants.FineTol;
70 self.DelayOffTime = Exp(1/DelayOffTime);
71 self.DelayOffTimeMean = DelayOffTime;
72 self.DelayOffTimeSCV = 1.0;
74 elseif isa(DelayOffTime,'Distribution')
75 self.DelayOffTime = DelayOffTime;
76 self.DelayOffTimeMean = DelayOffTime.getMean();
77 self.DelayOffTimeSCV = DelayOffTime.getSCV();