1classdef LineOptSolverOptions < handle
2 % LineOptSolverOptions Configuration
for opt.LineOptSolver, mirroring
3 % native-Python LineOptSolver.defaultOptions(). Chained setters
return self.
17 scenarioAggregation =
'worst';
18 optimizer =
'evolution';
21 % LayeredNetwork (LQN) gradient source (used only when the model
is a
22 % LayeredNetwork and the gradient path
is taken):
23 %
'fd' finite-difference the whole LayeredNetwork per
24 % parameter -- correct total derivative, robust
26 %
'partial_sens' assemble the direction from SolverLN
's per-layer
27 % WITHIN-LAYER partial derivatives -- cheap, biased.
28 % 'partial_plus_fd
' partial_sens direction, corrected by a full
29 % LayeredNetwork finite difference every fdRefresh
30 % gradient evaluations.
32 fdRefresh = 5; % partial_plus_fd full-FD correction period
33 % Explicit layer freezing (LQN only): a cell array of layer names (host
34 % or task layers) whose variables are held at the model's current value
35 % instead of being optimized. [] freezes nothing.
40 function obj = setStrategy(obj, v), obj.strategy = v; end
41 function obj = setPopsize(obj, v), obj.popsize = v; end
42 function obj = setMutation(obj, low, high), obj.mutationLow = low; obj.mutationHigh = high; end
43 function obj = setRecombination(obj, v), obj.recombination = v; end
44 function obj = setTolerance(obj, v), obj.tol = v; end
45 function obj = setMaxIterations(obj, v), obj.maxIterations = v; end
46 function obj = setTimeLimit(obj, v), obj.timeLimit = v; end
47 function obj = setSeed(obj, v), obj.seed = v; end
48 function obj = setVerbose(obj, v), obj.verbose = v; end
49 function obj = setPenaltyWeight(obj, v), obj.penaltyWeight = v; end
50 function obj = setScenarioAggregation(obj, v), obj.scenarioAggregation = v; end
51 function obj = setOptimizer(obj, v), obj.optimizer = v; end
52 function obj = setFdStep(obj, v), obj.fdStep = v; end
53 function obj = setGradientRestarts(obj, v), obj.gradientRestarts = v; end
54 function obj = setLqnGradient(obj, v)
55 if ~any(strcmp(v, {
'fd',
'partial_sens',
'partial_plus_fd'}))
56 line_error(mfilename, ['lqnGradient must be ''fd'', ' ...
57 '''partial_sens'', or ''partial_plus_fd''']);
61 function obj = setFdRefresh(obj, v), obj.fdRefresh = round(v); end
62 function obj = setFrozenLayers(obj, v)
63 if isempty(v), obj.frozenLayers = []; else, obj.frozenLayers = v; end