LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
FunctionTask.m
1classdef FunctionTask < Task
2 % A software server in a LayeredNetwork.
3 %
4 % Copyright (c) 2012-2026, Imperial College London
5 % All rights reserved.
6
7 properties
8
9 SetupTime;
10 SetupTimeMean;
11 SetupTimeSCV;
12 DelayOffTime;
13 DelayOffTimeMean;
14 DelayOffTimeSCV;
15
16 end
17
18 methods
19 %public methods, including constructor
20
21 %constructor
22 function self = FunctionTask(model, name, multiplicity, scheduling)
23 %self = FunctionTask(model, name, setupTime, delayoffTime, multiplicity, scheduling)
24
25 if ~exist('name','var')
26 line_error(mfilename,'Constructor requires to specify at least a name.');
27 end
28
29 if nargin < 5
30 multiplicity = 1;
31 end
32
33 if nargin < 6
34 scheduling = SchedStrategy.FCFS;
35 end
36 self@Task(model, name, multiplicity, scheduling);
37 self.setSetupTime(Immediate());
38 self.setDelayOffTime(Immediate());
39 end
40
41 function self = setSetupTime(self, SetupTime)
42 % self = SETTHINKTIME(self, THINKTIME)
43
44 if isnumeric(SetupTime)
45 if SetupTime <= GlobalConstants.FineTol
46 self.SetupTime = Immediate.getInstance();
47 self.SetupTimeMean = GlobalConstants.FineTol;
48 self.SetupTimeSCV = GlobalConstants.FineTol;
49 else
50 self.SetupTime = Exp(1/SetupTime);
51 self.SetupTimeMean = SetupTime;
52 self.SetupTimeSCV = 1.0;
53 end
54 elseif isa(SetupTime,'Distribution')
55 self.SetupTime = SetupTime;
56 self.SetupTimeMean = SetupTime.getMean();
57 self.SetupTimeSCV = SetupTime.getSCV();
58 end
59 end
60
61 function self = setDelayOffTime(self, DelayOffTime)
62 % self = SETTHINKTIME(self, THINKTIME)
63
64 if isnumeric(DelayOffTime)
65 if DelayOffTime <= GlobalConstants.FineTol
66 self.DelayOffTime = Immediate.getInstance();
67 self.DelayOffTimeMean = GlobalConstants.FineTol;
68 self.DelayOffTimeSCV = GlobalConstants.FineTol;
69 else
70 self.DelayOffTime = Exp(1/DelayOffTime);
71 self.DelayOffTimeMean = DelayOffTime;
72 self.DelayOffTimeSCV = 1.0;
73 end
74 elseif isa(DelayOffTime,'Distribution')
75 self.DelayOffTime = DelayOffTime;
76 self.DelayOffTimeMean = DelayOffTime.getMean();
77 self.DelayOffTimeSCV = DelayOffTime.getSCV();
78 end
79 end
80 end
81end