LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
JobPopulation.m
1classdef JobPopulation < opt.DecisionVariable
2 % JobPopulation Optimize the fixed circulating population of a closed
3 % class. Encodes an integer count in [minJobs, maxJobs]. Mirrors
4 % native-Python JobPopulation.
5
6 properties
8 minJobs
9 maxJobs
10 end
11
12 methods
13 function obj = JobPopulation(jobclass, bounds, name)
14 if nargin < 3 || isempty(name)
15 name = [jobclass.getName() '_population'];
16 end
17 obj@opt.DecisionVariable(name);
18 obj.jobclass = jobclass;
19 obj.minJobs = round(bounds(1));
20 obj.maxJobs = round(bounds(2));
21 end
22
23 function c = getJobClass(obj), c = obj.jobclass; end
24 function b = getBounds(obj), b = opt.DecisionVariable.unitBounds(1); end
25
26 function v = decode(obj, x)
27 continuous = obj.minJobs + x(1) * (obj.maxJobs - obj.minJobs);
28 v = min(max(round(continuous), obj.minJobs), obj.maxJobs);
29 end
30
31 function apply(obj, model, value)
32 cls = opt.DecisionVariable.resolveClass(model, obj.jobclass);
33 if isempty(cls), return; end
34 cls.setPopulation(value);
35 end
36
37 function t = getVariableType(obj), t = 'job_population'; end
38 end
39end
Definition Station.m:245