LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
LineOptSolverOptions.m
1classdef LineOptSolverOptions < handle
2 % LineOptSolverOptions Configuration for opt.LineOptSolver, mirroring
3 % native-Python LineOptSolver.defaultOptions(). Chained setters return self.
4
5 properties
6 strategy = 'best1bin';
7 popsize = 15;
8 mutationLow = 0.5;
9 mutationHigh = 1.0;
10 recombination = 0.7;
11 tol = 0.01;
12 maxIterations = 100;
13 timeLimit = 300.0;
14 seed = [];
15 verbose = false;
16 penaltyWeight = 1e6;
17 scenarioAggregation = 'worst';
18 optimizer = 'evolution';
19 fdStep = 1e-6;
20 gradientRestarts = 4;
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
25 % default.
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.
31 lqnGradient = 'fd';
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.
36 frozenLayers = [];
37 end
38
39 methods
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''']);
58 end
59 obj.lqnGradient = v;
60 end
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
64 end
65 end
66end