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.
13 function obj = JobPopulation(
jobclass, bounds, name)
14 if nargin < 3 || isempty(name)
15 name = [
jobclass.getName()
'_population'];
17 obj@opt.DecisionVariable(name);
19 obj.minJobs = round(bounds(1));
20 obj.maxJobs = round(bounds(2));
23 function c = getJobClass(obj), c = obj.jobclass; end
24 function b = getBounds(obj), b = opt.DecisionVariable.unitBounds(1); end
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);
31 function apply(obj, model, value)
32 cls = opt.DecisionVariable.resolveClass(model, obj.jobclass);
33 if isempty(cls),
return; end
34 cls.setPopulation(value);
37 function t = getVariableType(obj), t =
'job_population'; end