1classdef SolverCustom < NetworkSolver
2 % Example of custom solver
4 % Copyright (c) 2012-2026, Imperial College London
8 function self = SolverCustom(model,varargin)
9 % SELF = SolverCustom(MODEL,VARARGIN)
11 self@NetworkSolver(model, mfilename);
12 self.setOptions(Solver.parseOptions(varargin, self.defaultOptions));
17 function sn = getStruct(self)
20 % Get data structure summarizing the model
21 sn = self.model.getStruct(
false);
24 [runtime, analyzer] = runAnalyzer(self, options);
26 function [allMethods] = listValidMethods(self)
27 % allMethods = LISTVALIDMETHODS()
28 % List valid methods
for this solver
29 sn = self.model.getStruct();
30 allMethods = {
'default'};
36 function featSupported = getFeatureSet()
37 % FEATSUPPORTED = GETFEATURESET()
39 featSupported = SolverFeatureSet;
40 featSupported.setTrue({
'Sink',...
68 'StatelessClassSwitcher',...
86 'SchedStrategy_INF',...
87 'SchedStrategy_PS',...
88 'SchedStrategy_DPS',...
89 'SchedStrategy_FCFS',...
90 'SchedStrategy_GPS',...
91 'SchedStrategy_SIRO',...
92 'SchedStrategy_HOL',...
93 'SchedStrategy_LCFS',...
94 'SchedStrategy_LCFSPR',...
95 'SchedStrategy_SEPT',...
96 'SchedStrategy_LEPT',...
97 'SchedStrategy_SJF',...
98 'SchedStrategy_LJF',...
99 'RoutingStrategy_PROB',...
100 'RoutingStrategy_RAND',...
101 'RoutingStrategy_RROBIN',...
102 'RoutingStrategy_WRROBIN',...
103 'RoutingStrategy_KCHOICES',...
104 'SchedStrategy_EXT',...
109 function [bool, featSupported] = supports(model)
110 % [BOOL, FEATSUPPORTED] = SUPPORTS(MODEL)
112 featUsed = model.getUsedLangFeatures();
113 featSupported = SolverCustom.getFeatureSet();
114 bool = SolverFeatureSet.supports(featSupported, featUsed);
119 function options = defaultOptions()
120 % OPTIONS = DEFAULTOPTIONS()
122 options = Solver.defaultOptions();
123 options.timespan = [Inf,Inf];