diff --git a/dfols/__init__.py b/dfols/__init__.py index 74d7e05..5ae8a0e 100644 --- a/dfols/__init__.py +++ b/dfols/__init__.py @@ -7,8 +7,7 @@ It solves the nonlinear least-squares problem: min_{x} f(x) = r1(x)**2 + ... + rm(x)**2, -subject to the (optional) bounds - lb <= x <= ub, +(optionally) subject to finitely many convex constraints, where each function ri(x) is differentiable, possibly nonconvex. Since the derivatives of ri(x) are never required or approximated, the solver works when the evaluation of ri(x) is noisy. diff --git a/dfols/controller.py b/dfols/controller.py index 0796858..32e3e37 100644 --- a/dfols/controller.py +++ b/dfols/controller.py @@ -43,6 +43,7 @@ 'EXIT_INPUT_ERROR', 'EXIT_TR_INCREASE_ERROR', 'EXIT_LINALG_ERROR', 'EXIT_FALSE_SUCCESS_WARNING', 'EXIT_AUTO_DETECT_RESTART_WARNING'] +EXIT_TR_INCREASE_WARNING = 5 # warning, TR increase in proj constrained case - likely due to multiple active constraints EXIT_AUTO_DETECT_RESTART_WARNING = 4 # warning, auto-detected restart criteria EXIT_FALSE_SUCCESS_WARNING = 3 # warning, maximum fake successful steps reached EXIT_SLOW_WARNING = 2 # warning, maximum number of slow (successful) iterations reached @@ -70,6 +71,8 @@ def message(self, with_stem=True): return "Warning (slow progress): " + self.msg elif self.flag == EXIT_MAXFUN_WARNING: return "Warning (max evals): " + self.msg + elif self.flag == EXIT_TR_INCREASE_WARNING: + return "Warning (trust region increase): " + self.msg elif self.flag == EXIT_INPUT_ERROR: return "Error (bad input): " + self.msg elif self.flag == EXIT_TR_INCREASE_ERROR: @@ -82,7 +85,7 @@ def message(self, with_stem=True): return "Unknown exit flag: " + self.msg def able_to_do_restart(self): - if self.flag in [EXIT_TR_INCREASE_ERROR, EXIT_LINALG_ERROR, EXIT_SLOW_WARNING, EXIT_AUTO_DETECT_RESTART_WARNING]: + if self.flag in [EXIT_TR_INCREASE_ERROR, EXIT_TR_INCREASE_WARNING, EXIT_LINALG_ERROR, EXIT_SLOW_WARNING, EXIT_AUTO_DETECT_RESTART_WARNING]: return True elif self.flag in [EXIT_MAXFUN_WARNING, EXIT_INPUT_ERROR]: return False @@ -92,13 +95,13 @@ def able_to_do_restart(self): class Controller(object): - def __init__(self, objfun, args, x0, r0, r0_nsamples, xl, xu, npt, rhobeg, rhoend, nf, nx, maxfun, params, + def __init__(self, objfun, args, x0, r0, r0_nsamples, xl, xu, projections, npt, rhobeg, rhoend, nf, nx, maxfun, params, scaling_changes, do_logging): self.do_logging = do_logging self.objfun = objfun self.args = args self.maxfun = maxfun - self.model = Model(npt, x0, r0, xl, xu, r0_nsamples, precondition=params("interpolation.precondition"), + self.model = Model(npt, x0, r0, xl, xu, projections, r0_nsamples, precondition=params("interpolation.precondition"), abs_tol = params("model.abs_tol"), rel_tol = params("model.rel_tol"), do_logging=do_logging) self.nf = nf self.nx = nx @@ -137,6 +140,107 @@ def initialise_coordinate_directions(self, number_of_samples, num_directions, pa assert self.model.num_pts <= (self.n() + 1) * (self.n() + 2) // 2, "prelim: must have npt <= (n+1)(n+2)/2" assert 1 <= num_directions < self.model.num_pts, "Initialisation: must have 1 <= ndirs_initial < npt" + + if self.model.projections: + D = np.zeros((self.n(),self.n())) + k = 0 + while k < self.n(): + ek = np.zeros(self.n()) + ek[k] = 1 + p = np.dot(ek,min(1,self.delta)) + yk = dykstra(self.model.projections, self.model.xbase + p, max_iter=params("dykstra.max_iters"), tol=params("dykstra.d_tol")) + D[k,:] = yk - self.model.xbase + + k += 1 # move on to next point + + # Have at least one L.D. vector, try negative direction on bad one first + k = 0 + mr_tol = params("matrix_rank.r_tol") + D_rank, diag = qr_rank(D,tol=mr_tol) + while D_rank != num_directions and k < self.n(): + if diag[k] < mr_tol: + ek = np.zeros(self.n()) + ek[k] = 1 + p = -np.dot(ek,min(1,self.delta)) + yk = dykstra(self.model.projections, self.model.xbase + p, max_iter=params("dykstra.max_iters"), tol=params("dykstra.d_tol")) + dk = D[k,:].copy() + D[k,:] = yk - self.model.xbase + D_rank2, _diag2 = qr_rank(D,tol=params("matrix_rank.r_tol")) + if D_rank2 <= D_rank: + # Did not improve rank, revert change + D[k,:] = dk + # rank was improved, update D_rank for next comparison + D_rank = D_rank2 + k += 1 + + # Try random combination of negatives... + k = 0 + slctr = np.random.randint(0, 1+1, self.n()) # generate rand binary "selector" array + D_rank, diag = qr_rank(D,tol=params("matrix_rank.r_tol")) + while D_rank != num_directions and k < 100*self.n(): + if slctr[k%self.n()] == 1: # if selector says make -ve, make -ve + ek = np.zeros(self.n()) + ek[k%self.n()] = 1 + p = -np.dot(ek,min(1,self.delta)) + yk = dykstra(self.model.projections, self.model.xbase + p, max_iter=params("dykstra.max_iters"), tol=params("dykstra.d_tol")) + dk = D[k%self.n(),:].copy() + D[k%self.n(),:] = yk - self.model.xbase + D_rank2, _diag2 = qr_rank(D,tol=params("matrix_rank.r_tol")) + if D_rank2 <= D_rank: + # Did not improve rank, revert change + D[k%self.n(),:] = dk + # rank was improved, update D_rank for next comparison + D_rank = D_rank2 + + # Go again + slctr = np.random.randint(0, 1+1, self.n()) + k += 1 + + # Set still not L.I? Try random directions + i = 0 + D_rank, diag = qr_rank(D,tol=params("matrix_rank.r_tol")) + while D_rank != num_directions and i <= 100*num_directions: + k = 0 + while k < self.n(): + if diag[k] < mr_tol: + p = np.random.normal(size=self.n()) + p = p/np.linalg.norm(p) + p = np.dot(p,min(1,self.delta)) + yk = dykstra(self.model.projections, self.model.xbase + p, max_iter=params("dykstra.max_iters"), tol=params("dykstra.d_tol")) + dk = D[k,:].copy() + D[k,:] = yk - self.model.xbase + D_rank2, _diag2 = qr_rank(D,tol=params("matrix_rank.r_tol")) + if D_rank2 <= D_rank: + # Did not improve rank, revert change + D[k,:] = dk + # rank was improved, update D_rank for next comparison + D_rank = D_rank2 + k += 1 + i += 1 + + if D_rank != num_directions: + raise RuntimeError("Unable to generate suitable initial directions") + + # we have a L.I set of interpolation points + for k in range(0,self.n()): + # Evaluate objective at this new point + x = self.model.as_absolute_coordinates(D[k, :]) + rvec_list, f_list, num_samples_run, exit_info = self.evaluate_objective(x, number_of_samples, params) + + # Handle exit conditions (f < min obj value or maxfun reached) + if exit_info is not None: + if num_samples_run > 0: + self.model.save_point(x, np.mean(rvec_list[:num_samples_run, :], axis=0), num_samples_run, + x_in_abs_coords=True) + return exit_info # return & quit + + # Otherwise, add new results (increments model.npt_so_far) + self.model.change_point(k+1, x - self.model.xbase, rvec_list[0, :]) # expect step, not absolute x + for i in range(1, num_samples_run): + self.model.add_new_sample(k+1, rvec_extra=rvec_list[i, :]) + + return None # return & continue + at_lower_boundary = (self.model.sl > -0.01 * self.delta) # sl = xl - x0, should be -ve, actually < -rhobeg at_upper_boundary = (self.model.su < 0.01 * self.delta) # su = xu - x0, should be +ve, actually > rhobeg @@ -147,17 +251,19 @@ def initialise_coordinate_directions(self, number_of_samples, num_directions, pa # k = 2n+1, ..., (n+1)(n+2)/2 --> off-diagonal directions if 1 <= k < self.n() + 1: # first step along coord directions dirn = k - 1 # direction to move in (0,...,n-1) - stepa = self.delta if not at_upper_boundary[dirn] else -self.delta + stepa = self.delta if not at_upper_boundary[dirn] else -self.delta # take a +delta step if at lower, -delta if at upper stepb = None - xpts_added[k, dirn] = stepa + xpts_added[k, dirn] = stepa # set new (relative) point to the step since we haven't done any moving, so relative point is all zeros. elif self.n() + 1 <= k < 2 * self.n() + 1: # second step along coord directions dirn = k - self.n() - 1 # direction to move in (0,...,n-1) - stepa = xpts_added[k - self.n(), dirn] - stepb = -self.delta + stepa = xpts_added[k - self.n(), dirn] # previous step + stepb = -self.delta # new step if at_lower_boundary[dirn]: + # if at lower boundary, set the second step to be +ve stepb = min(2.0 * self.delta, self.model.su[dirn]) # su = xu - x0, should be +ve if at_upper_boundary[dirn]: + # if at upper boundary, set the second step to be -ve stepb = max(-2.0 * self.delta, self.model.sl[dirn]) # sl = xl - x0, should be -ve xpts_added[k, dirn] = stepb @@ -325,10 +431,13 @@ def get_new_direction_for_growing(self, step_length): return dirn * (step_length / LA.norm(dirn)) - def trust_region_step(self): + def trust_region_step(self, params): # Build model for full least squares objectives gopt, H = self.model.build_full_model() - d, gnew, crvmin = trsbox(self.model.xopt(), gopt, H, self.model.sl, self.model.su, self.delta) + if self.model.projections: + d, gnew, crvmin = ctrsbox(self.model.xopt(abs_coordinates=True), gopt, H, self.model.projections, self.delta, d_max_iters=params("dykstra.max_iters"), d_tol=params("dykstra.d_tol")) + else: + d, gnew, crvmin = trsbox(self.model.xopt(), gopt, H, self.model.sl, self.model.su, self.delta) return d, gopt, H, gnew, crvmin def geometry_step(self, knew, adelt, number_of_samples, params): @@ -337,8 +446,13 @@ def geometry_step(self, knew, adelt, number_of_samples, params): try: c, g = self.model.lagrange_gradient(knew) # c = 1.0 if knew == self.model.kopt else 0.0 # based at xopt, just like d - # Solve problem: bounds are sl <= xnew <= su, and ||xnew-xopt|| <= adelt - xnew = trsbox_geometry(self.model.xopt(), c, g, np.minimum(self.model.sl, 0.0), np.maximum(self.model.su, 0.0), adelt) + if self.model.projections: + # Solve problem: use projection onto arbitrary constraints, and ||xnew-xopt|| <= adelt + step = ctrsbox_geometry(self.model.xopt(abs_coordinates=True), c, g, self.model.projections, adelt, d_max_iters=params("dykstra.max_iters"), d_tol=params("dykstra.d_tol")) + xnew = self.model.xopt() + step + else: + # Solve problem: bounds are sl <= xnew <= su, and ||xnew-xopt|| <= adelt + xnew = trsbox_geometry(self.model.xopt(), c, g, np.minimum(self.model.sl, 0.0), np.maximum(self.model.su, 0.0), adelt) except LA.LinAlgError: exit_info = ExitInformation(EXIT_LINALG_ERROR, "Singular matrix encountered in geometry step") return exit_info # didn't fix geometry - return & quit @@ -499,13 +613,16 @@ def reduce_rho(self, current_iter, params): def calculate_ratio(self, current_iter, rvec_list, d, gopt, H): exit_info = None f = sumsq(np.mean(rvec_list, axis=0)) # estimate actual objective value - pred_reduction = - model_value(gopt, H, d) + pred_reduction = - model_value(gopt, H, d) # negative of m since m(0) = 0 actual_reduction = self.model.fopt() - f self.diffs = [abs(actual_reduction - pred_reduction), self.diffs[0], self.diffs[1]] if min(sqrt(sumsq(d)), self.delta) > self.rho: # if ||d|| >= rho, successful! self.last_successful_iter = current_iter if pred_reduction < 0.0: - exit_info = ExitInformation(EXIT_TR_INCREASE_ERROR, "Trust region step gave model increase") + if len(self.model.projections) > 1: # if we are using multiple projections, only warn since likely due to constraint intersection + exit_info = ExitInformation(EXIT_TR_INCREASE_WARNING, "Either multiple constraints are active or trust region step gave model increase") + else: + exit_info = ExitInformation(EXIT_TR_INCREASE_ERROR, "Either rust region step gave model increase") ratio = actual_reduction / pred_reduction return ratio, exit_info diff --git a/dfols/model.py b/dfols/model.py index 20373a9..745f2e6 100644 --- a/dfols/model.py +++ b/dfols/model.py @@ -36,12 +36,12 @@ import scipy.linalg as LA from .trust_region import trsbox_geometry -from .util import sumsq +from .util import sumsq, dykstra __all__ = ['Model'] class Model(object): - def __init__(self, npt, x0, r0, xl, xu, r0_nsamples, n=None, m=None, abs_tol=1e-12, rel_tol=1e-20, precondition=True, + def __init__(self, npt, x0, r0, xl, xu, projections, r0_nsamples, n=None, m=None, abs_tol=1e-12, rel_tol=1e-20, precondition=True, do_logging=True): if n is None: n = len(x0) @@ -63,6 +63,7 @@ def __init__(self, npt, x0, r0, xl, xu, r0_nsamples, n=None, m=None, abs_tol=1e- self.xbase = x0.copy() self.sl = xl - self.xbase # lower bound w.r.t. xbase (require xpt >= sl) self.su = xu - self.xbase # upper bound w.r.t. xbase (require xpt <= su) + self.projections = projections self.points = np.zeros((npt, n)) # interpolation points w.r.t. xbase # Function values @@ -123,6 +124,8 @@ def xpt(self, k, abs_coordinates=False): return np.minimum(np.maximum(self.sl, self.points[k, :].copy()), self.su) else: # Apply bounds and convert back to absolute coordinates + if self.projections: + return dykstra(self.projections, self.xbase + self.points[k,:]) return self.xbase + np.minimum(np.maximum(self.sl, self.points[k, :]), self.su) def rvec(self, k): @@ -133,8 +136,10 @@ def fval(self, k): assert 0 <= k < self.npt(), "Invalid index %g" % k return self.fval[k] - def as_absolute_coordinates(self, x): + def as_absolute_coordinates(self, x, full_dykstra=False): # If x were an interpolation point, get the absolute coordinates of x + if self.projections: + return dykstra(self.projections, self.xbase + x) return self.xbase + np.minimum(np.maximum(self.sl, x), self.su) def xpt_directions(self, include_kopt=True): diff --git a/dfols/params.py b/dfols/params.py index e3e2622..af7b93c 100644 --- a/dfols/params.py +++ b/dfols/params.py @@ -109,6 +109,11 @@ def __init__(self, n, npt, maxfun, objfun_has_noise=False): self.params["growing.full_rank.min_sing_val"] = 1e-6 # absolute floor on singular values self.params["growing.full_rank.svd_max_jac_cond"] = 1e8 # maximum condition number of Jacobian self.params["growing.perturb_trust_region_step"] = False # add random direction onto TRS solution? + # Dykstra's algorithm + self.params["dykstra.d_tol"] = 1e-10 + self.params["dykstra.max_iters"] = 100 + # Matrix rank algorithm + self.params["matrix_rank.r_tol"] = 1e-18 self.params_changed = {} for p in self.params: @@ -257,6 +262,12 @@ def param_type(self, key, npt): type_str, nonetype_ok, lower, upper = 'float', True, 1.0, None elif key == "growing.perturb_trust_region_step": type_str, nonetype_ok, lower, upper = 'bool', False, None, None + elif key == "dykstra.d_tol": + type_str, nonetype_ok, lower, upper = 'float', False, 0.0, None + elif key == "dykstra.max_iters": + type_str, nonetype_ok, lower, upper = 'int', False, 0, None + elif key == "matrix_rank.r_tol": + type_str, nonetype_ok, lower, upper = 'float', False, 0.0, None else: assert False, "ParameterList.param_type() has unknown key: %s" % key return type_str, nonetype_ok, lower, upper diff --git a/dfols/solver.py b/dfols/solver.py index f6279ba..0c7ee60 100644 --- a/dfols/solver.py +++ b/dfols/solver.py @@ -93,7 +93,7 @@ def __str__(self): return output -def solve_main(objfun, x0, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns_so_far, nf_so_far, nx_so_far, nsamples, params, +def solve_main(objfun, x0, args, xl, xu, projections, npt, rhobeg, rhoend, maxfun, nruns_so_far, nf_so_far, nx_so_far, nsamples, params, diagnostic_info, scaling_changes, r0_avg_old=None, r0_nsamples_old=None, default_growing_method_set_by_user=None, do_logging=True, print_progress=False): # Evaluate at x0 (keep nf, nx correct and check for f < 1e-12) @@ -160,7 +160,7 @@ def solve_main(objfun, x0, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns_so_f params('growing.delta_scale_new_dirns', new_value=0.1) # Initialise controller - control = Controller(objfun, args, x0, r0_avg, num_samples_run, xl, xu, npt, rhobeg, rhoend, nf, nx, maxfun, + control = Controller(objfun, args, x0, r0_avg, num_samples_run, xl, xu, projections, npt, rhobeg, rhoend, nf, nx, maxfun, params, scaling_changes, do_logging) # Initialise interpolation set @@ -271,7 +271,7 @@ def solve_main(objfun, x0, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns_so_f # Trust region step - d, gopt, H, gnew, crvmin = control.trust_region_step() + d, gopt, H, gnew, crvmin = control.trust_region_step(params) if do_logging: logging.debug("Trust region step is d = " + str(d)) xnew = control.model.xopt() + d @@ -851,7 +851,7 @@ def solve_main(objfun, x0, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns_so_f return x, rvec, f, jacmin, nsamples, control.nf, control.nx, nruns_so_far, exit_info, diagnostic_info -def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, maxfun=None, nsamples=None, user_params=None, +def solve(objfun, x0, args=(), bounds=None, projections=[], npt=None, rhobeg=None, rhoend=1e-8, maxfun=None, nsamples=None, user_params=None, objfun_has_noise=False, scaling_within_bounds=False, do_logging=True, print_progress=False): x0 = x0.astype(float) n = len(x0) @@ -869,6 +869,10 @@ def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, scaling_within_bounds = False warnings.warn("Ignoring scaling_within_bounds=True for unconstrained problem/1-sided bounds", RuntimeWarning) + if projections and scaling_within_bounds: + scaling_within_bounds = False + warnings.warn("Ignoring scaling_within_bounds=True for problem with arbitrary constraints", RuntimeWarning) + if xl is None: xl = -1e20 * np.ones((n,)) # unconstrained if xu is None: @@ -882,6 +886,18 @@ def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, if nsamples is None: nsamples = lambda delta, rho, iter, nruns: 1 # no averaging + # If using arbitrary constraints, create projection from bounds + if projections: + xlb = xl.copy() + xub = xu.copy() + bproj = lambda w: pbox(w,xlb,xub) + projections = projections.copy() + projections.append(bproj) + + # since using arbitrary constraints, don't constrain otherwise + xl = -1e20 * np.ones((n,)) + xu = 1e20 * np.ones((n,)) + # Set parameters params = ParameterList(int(n), int(npt), int(maxfun), objfun_has_noise=objfun_has_noise) # make sure int, not np.int if user_params is not None: @@ -976,6 +992,13 @@ def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, results = OptimResults(None, None, None, None, 0, 0, 0, exit_flag, exit_msg) return results + # Enforce arbitrary constraint bounds on x0 + if projections: + xp = dykstra(projections,x0,max_iter=params("dykstra.max_iters"),tol=params("dykstra.d_tol")) + if not np.allclose(xp,x0): + warnings.warn("x0 not feasible w.r.t given constraints, adjusting", RuntimeWarning) + x0 = xp.copy() + # Enforce lower & upper bounds on x0 idx = (x0 <= xl) if np.any(idx): @@ -993,7 +1016,7 @@ def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, nf = 0 nx = 0 xmin, rmin, fmin, jacmin, nsamples_min, nf, nx, nruns, exit_info, diagnostic_info = \ - solve_main(objfun, x0, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, + solve_main(objfun, x0, args, xl, xu, projections, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, diagnostic_info, scaling_changes, default_growing_method_set_by_user=default_growing_method_set_by_user, do_logging=do_logging, print_progress=print_progress) @@ -1012,12 +1035,12 @@ def solve(objfun, x0, args=(), bounds=None, npt=None, rhobeg=None, rhoend=1e-8, % (fmin, nf, rhobeg, rhoend)) if params("restarts.hard.use_old_rk"): xmin2, rmin2, fmin2, jacmin2, nsamples2, nf, nx, nruns, exit_info, diagnostic_info = \ - solve_main(objfun, xmin, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, + solve_main(objfun, xmin, args, xl, xu, projections, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, diagnostic_info, scaling_changes, r0_avg_old=rmin, r0_nsamples_old=nsamples_min, do_logging=do_logging, print_progress=print_progress) else: xmin2, rmin2, fmin2, jacmin2, nsamples2, nf, nx, nruns, exit_info, diagnostic_info = \ - solve_main(objfun, xmin, args, xl, xu, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, + solve_main(objfun, xmin, args, xl, xu, projections, npt, rhobeg, rhoend, maxfun, nruns, nf, nx, nsamples, params, diagnostic_info, scaling_changes, do_logging=do_logging, print_progress=print_progress) if fmin2 < fmin or np.isnan(fmin): diff --git a/dfols/tests/test_model.py b/dfols/tests/test_model.py index 9b6a384..66ed89f 100644 --- a/dfols/tests/test_model.py +++ b/dfols/tests/test_model.py @@ -46,7 +46,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e20 * np.ones((n,)) xu = 1e20 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) self.assertEqual(model.npt(), 1, 'Wrong npt after initialisation') self.assertTrue(array_compare(model.xopt(abs_coordinates=True), x0), 'Wrong xopt after initialisation') self.assertTrue(array_compare(model.ropt(), rosenbrock(x0)), 'Wrong ropt after initialisation') @@ -97,7 +97,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e20 * np.ones((n,)) xu = 1e20 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) # Now add better point x1 = np.array([1.0, 0.9]) rvec = rosenbrock(x1) @@ -124,7 +124,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) self.assertTrue(array_compare(model.sl, xl - x0), 'Wrong sl after initialisation') self.assertTrue(array_compare(model.su, xu - x0), 'Wrong su after initialisation') x1 = np.array([1.0, 0.9]) @@ -204,7 +204,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) x1 = np.array([1.0, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) x2 = np.array([1.0, 1.0]) @@ -224,17 +224,17 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) x1 = np.array([1.0, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) x2 = np.array([2.0, 0.9]) model.change_point(2, x2 - model.xbase, rosenbrock(x2)) self.assertAlmostEqual(model.min_objective_value(), 1e-12, 'Wrong min obj value') - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1, rel_tol=1e-2) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1, rel_tol=1e-2) self.assertAlmostEqual(model.min_objective_value(), 1e-2 * sumsq(rosenbrock(x0)), 'Wrong min obj value 2') - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1, abs_tol=1.0) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1, abs_tol=1.0) self.assertAlmostEqual(model.min_objective_value(), 1.0, 'Wrong min obj value 3') - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1, abs_tol=1.0, rel_tol=1e-2) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1, abs_tol=1.0, rel_tol=1e-2) self.assertAlmostEqual(model.min_objective_value(), 1.0, 'Wrong min obj value 4') @@ -245,7 +245,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) model.add_new_sample(0, rosenbrock(x0)) x1 = np.array([1.0, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) @@ -295,7 +295,7 @@ def runTest(self): # x0 = np.array([1.0, 2.9]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) model.add_new_sample(0, rosenbrock(x0)) x1 = np.array([1.0, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) @@ -326,7 +326,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) model.add_new_sample(0, rosenbrock(x0)) x1 = np.array([-1.2, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) @@ -354,7 +354,7 @@ def runTest(self): delta = 0.5 xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) model.add_new_sample(0, rosenbrock(x0)) x1 = x0 + delta * np.array([1.0, 0.0]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) @@ -373,7 +373,7 @@ def runTest(self): x0 = np.array([-1.2, 1.0]) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, x0, rosenbrock(x0), xl, xu, 1) + model = Model(npt, x0, rosenbrock(x0), xl, xu, [], 1) x1 = np.array([1.0, 0.9]) model.change_point(1, x1 - model.xbase, rosenbrock(x1)) x2 = np.array([2.0, 0.9]) @@ -407,7 +407,7 @@ def runTest(self): # x0 = np.zeros((n,)) xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) - model = Model(npt, A[0,:], np.array([b[0]]), xl, xu, 1) + model = Model(npt, A[0,:], np.array([b[0]]), xl, xu, [], 1) for i in range(1,npt): xi = A[i,:] @@ -450,7 +450,7 @@ def runTest(self): xl = -1e2 * np.ones((n,)) xu = 1e2 * np.ones((n,)) # model = Model(n+1, x0, np.array([0.0]), xl, xu, 1) - model = Model(n+1, A[0, :], np.array([b[0]]), xl, xu, 1) + model = Model(n+1, A[0, :], np.array([b[0]]), xl, xu, [], 1) for i in range(1,npt): xi = A[i,:] diff --git a/dfols/tests/test_solver.py b/dfols/tests/test_solver.py index 9c43445..b0601ad 100644 --- a/dfols/tests/test_solver.py +++ b/dfols/tests/test_solver.py @@ -41,6 +41,13 @@ def rosenbrock_jacobian(x): return np.array([[-20.0*x[0], 10.0], [-1.0, 0.0]]) +def p_box(x,l,u): + return np.minimum(np.maximum(x,l), u) + +def p_ball(x,c,r): + return c + (r/np.max([np.linalg.norm(x-c),r]))*(x-c) + + class TestNans(unittest.TestCase): # Generic objective that only returns NaNs (like optclim code) # Verify get a sensible termination @@ -185,3 +192,21 @@ def runTest(self): self.assertTrue(array_compare(soln.jacobian, jac(soln.x), thresh=1e-1), "Wrong Jacobian") self.assertTrue(abs(soln.f) < 1e-10, "Wrong fmin") + +class TestRosenbrockBoxBall(unittest.TestCase): + # Minimise the (2d) Rosenbrock function, where x[1] hits the upper bound + def runTest(self): + # n, m = 2, 2 + x0 = np.array([-1.2, 0.7]) # standard start point does not satisfy bounds + lower = np.array([0.7, -2.0]) + upper = np.array([1.0, 2]) + boxproj = lambda x: p_box(x,lower,upper) + ballproj = lambda x: p_ball(x,np.array([0.5,1]),0.25) + xmin = np.array([0.70424386, 0.85583188]) # approximate + fmin = np.dot(rosenbrock(xmin), rosenbrock(xmin)) + soln = dfols.solve(rosenbrock, x0, projections=[boxproj,ballproj]) + print(soln.x) + self.assertTrue(array_compare(soln.x, xmin, thresh=1e-2), "Wrong xmin") + self.assertTrue(array_compare(soln.resid, rosenbrock(soln.x), thresh=1e-10), "Wrong resid") + self.assertTrue(array_compare(soln.jacobian, rosenbrock_jacobian(soln.x), thresh=1e-2), "Wrong Jacobian") + self.assertTrue(abs(soln.f - fmin) < 1e-4, "Wrong fmin") diff --git a/dfols/tests/test_trust_region.py b/dfols/tests/test_trust_region.py index 64524e3..b9561c6 100644 --- a/dfols/tests/test_trust_region.py +++ b/dfols/tests/test_trust_region.py @@ -27,7 +27,7 @@ import numpy as np import unittest -from dfols.trust_region import trsbox, trsbox_geometry +from dfols.trust_region import ctrsbox, ctrsbox_geometry, trsbox, trsbox_geometry from dfols.util import model_value @@ -70,6 +70,12 @@ def cauchy_pt_box(g, H, delta, lower, upper): crvmin = -1.0 return s, red, crvmin +def p_box(x,l,u): + return np.minimum(np.maximum(x,l), u) + +def p_ball(x,c,r): + return c + (r/np.max([np.linalg.norm(x-c),r]))*(x-c) + class TestUncInternal(unittest.TestCase): def runTest(self): @@ -340,3 +346,135 @@ def runTest(self): # print(x) # print(xtrue) self.assertTrue(np.max(np.abs(x - xtrue)) < 1e-10, 'Wrong step') + + +# DFO-LS with arbitrary constraints +class TestGeom3CDFO(unittest.TestCase): + def runTest(self): + xbase = np.array([0.0, 0.0]) + 1 + g = np.array([1.0, -1.0]) + a = np.array([-2.0, -2.0]) + 1 + b = np.array([1.0, 2.0]) + 1 + proj = lambda x: p_box(x,a,b) + delta = 5.0 + c = 3.0 # may want to max instead + x = ctrsbox_geometry(xbase, c, g, [proj], delta) + xtrue = np.array([1.0, -2.0]) + self.assertTrue(np.max(np.abs(x - xtrue)) < 1e-10, 'Wrong step') + +class TestUncInternalCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 2.0 + xopt = np.ones((n,)) # trying nonzero (since bounds inactive) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [], Delta) + true_d = np.array([-1.0, 0.0, -0.5]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + s_cauchy, red_cauchy, _crvmin_cauchy = cauchy_pt(g, H, Delta) + self.assertTrue(est_min <= red_cauchy, 'Cauchy reduction not achieved') + self.assertTrue(np.all(gnew == g + H.dot(d)), 'Wrong gnew') + +class TestUncBdryCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 5.0 / 12.0 + xopt = np.zeros((n,)) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [], Delta) + true_d = np.array([-1.0 / 3.0, 0.0, -0.25]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + s_cauchy, red_cauchy, _crvmin_cauchy = cauchy_pt(g, H, Delta) + self.assertTrue(est_min <= red_cauchy, 'Cauchy reduction not achieved') + self.assertTrue(np.allclose(gnew, g + H.dot(d)), 'Wrong gnew') + + +class TestUncHardCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([0.0, 0.0, 1.0]) + H = np.array([[-2.0, 0.0, 0.0], [0.0, -1.0, 0.0], [0.0, 0.0, -1.0]]) + Delta = sqrt(2.0) + xopt = np.zeros((n,)) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [], Delta) + true_d = np.array([1.0, 0.0, -1.0]) # non-unique solution + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + s_cauchy, red_cauchy, _crvmin_cauchy = cauchy_pt(g, H, Delta) + self.assertTrue(est_min <= red_cauchy, 'Cauchy reduction not achieved') + self.assertTrue(np.allclose(gnew, g + H.dot(d)), 'Wrong gnew') + +class TestConInternalCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 2.0 + xopt = np.ones((n,)) # trying nonzero (since bounds inactive) + sl = xopt + np.array([-0.5, -10.0, -10.0]) + su = xopt + np.array([10.0, 10.0, 10.0]) + proj = lambda x: p_box(x,sl,su) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [proj], Delta) + true_d = np.array([-1.0, 0.0, -0.5]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + s_cauchy, red_cauchy, _crvmin_cauchy = cauchy_pt_box(g, H, Delta, sl-xopt, su-xopt) + self.assertTrue(est_min <= red_cauchy, 'Cauchy reduction not achieved') + self.assertTrue(np.all(gnew == g + H.dot(d)), 'Wrong gnew') + +class TestConBdryCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 5.0 / 12.0 + xopt = np.zeros((n,)) + sl = xopt + np.array([-0.3, -0.01, -0.1]) + su = xopt + np.array([10.0, 1.0, 10.0]) + proj = lambda x: p_box(x,sl,su) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [proj], Delta) + true_d = np.array([-1.0 / 3.0, 0.0, -0.25]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + s_cauchy, red_cauchy, _crvmin_cauchy = cauchy_pt_box(g, H, Delta, sl - xopt, su - xopt) + self.assertTrue(est_min <= red_cauchy, 'Cauchy reduction not achieved') + self.assertTrue(np.max(np.abs(gnew - g - H.dot(d))) < 1e-10, 'Wrong gnew') + +class TestBoxBallInternalCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 2.0 + xopt = np.ones((n,)) # trying nonzero (since bounds inactive) + sl = xopt + np.array([-0.5, -10.0, -10.0]) + su = xopt + np.array([10.0, 10.0, 10.0]) + boxproj = lambda x: p_box(x,sl,su) + ballproj = lambda x: p_ball(x,xopt,5) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [boxproj,ballproj], Delta) + true_d = np.array([-0.5, 0.0, -0.5]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + self.assertTrue(est_min <= true_min + 1e-3, 'Sufficient decrease not achieved') + + +class TestBoxBallBdryCDFO(unittest.TestCase): + def runTest(self): + n = 3 + g = np.array([1.0, 0.0, 1.0]) + H = np.array([[1.0, 0.0, 0.0], [0.0, 2.0, 0.0], [0.0, 0.0, 2.0]]) + Delta = 5.0 / 12.0 + xopt = np.zeros((n,)) + sl = xopt + np.array([-0.3, -0.01, -0.1]) + su = xopt + np.array([10.0, 1.0, 10.0]) + boxproj = lambda x: p_box(x,sl,su) + ballproj = lambda x: p_ball(x,xopt,0.25) + d, gnew, _crvmin = ctrsbox(xopt, g, H, [boxproj,ballproj], Delta) + true_d = np.array([-0.22913085, 0.0, -0.09999527]) + est_min = model_value(g, H, d) + true_min = model_value(g, H, true_d) + self.assertTrue(est_min <= true_min + 1e-3, 'Sufficient decrease not achieved') diff --git a/dfols/tests/test_util.py b/dfols/tests/test_util.py index f497904..51c1b30 100644 --- a/dfols/tests/test_util.py +++ b/dfols/tests/test_util.py @@ -165,4 +165,135 @@ def runTest(self): self.assertTrue(np.linalg.norm(dirns[i, :]) <= delta + 1e-10, "Unconstrained: dirn %i too long" % i) self.assertTrue(np.all(dirns[i, :] >= lower), "Direction %i below lower bound" % i) self.assertTrue(np.all(dirns[i, :] <= upper), "Direction %i above upper bound" % i) - # self.assertTrue(False, "bad") \ No newline at end of file + # self.assertTrue(False, "bad") + +# Trivial case of full rank +class TestMatrixRankQR1(unittest.TestCase): + def runTest(self): + mr_tol = 1e-18 + A = np.array([ + [1,0,0,0], + [0,1,0,0], + [0,0,1,0], + [0,0,0,1]]) + rank, D = qr_rank(A,mr_tol) + self.assertTrue(np.all(D > mr_tol), "Incorrect diagonal matrix output") + self.assertTrue(rank == 4, "Incorrect rank output") + +# Full rank but QR has negative entries for diag(R) +class TestMatrixRankQR2(unittest.TestCase): + def runTest(self): + mr_tol = 1e-18 + A = np.array([ + [1,2,3,4], + [0,6,7,8], + [-1,-2,-2,-1], + [4,2,2,1]]) + rank, D = qr_rank(A,mr_tol) + self.assertTrue(np.all(D > mr_tol), "Incorrect diagonal matrix output") + self.assertTrue(rank == 4, "Incorrect rank output") + + +# Not full rank +class TestMatrixRankQR3(unittest.TestCase): + def runTest(self): + mr_tol = 1e-18 + A = np.array([ + [1,2,3,4], + [2,6,4,8], + [0,0,0,0], + [0,0,0,0]]) + rank, D = qr_rank(A,mr_tol) + self.assertTrue(np.all(D[0:2] > mr_tol), "Incorrect diagonal matrix output (rows 1,2)") + self.assertTrue(np.all(D[2:4] <= mr_tol), "Incorrect diagonal matrix output (rows 3,4)") + self.assertTrue(rank == 2, "Incorrect rank output") + + +class TestDykstraBoxInt(unittest.TestCase): + def runTest(self): + x0 = np.array([0,0]) + lower = np.array([-0.01, -0.1]) + upper = np.array([0.01, 0.5]) + boxproj = lambda x: pbox(x,lower,upper) + P = [boxproj] + xproj = dykstra(P,x0) + self.assertTrue(np.all(xproj == x0), "Incorrect point returned by Dykstra") + + +class TestDykstraBoxExt(unittest.TestCase): + def runTest(self): + x0 = np.array([-2,5]) + lower = np.array([-1, -1]) + upper = np.array([0.5, 0.9]) + boxproj = lambda x: pbox(x,lower,upper) + P = [boxproj] + xproj = dykstra(P,x0) + xtrue = np.array([-1,0.9]) + self.assertTrue(np.allclose(xproj, xtrue), "Incorrect point returned by Dykstra") + +class TestDykstraBallInt(unittest.TestCase): + def runTest(self): + x0 = np.array([0,0]) + ballproj = lambda x: pball(x,x0+1,2) + P = [ballproj] + xproj = dykstra(P,x0) + self.assertTrue(np.all(xproj == x0), "Incorrect point returned by Dykstra") + + +class TestDykstraBallExt(unittest.TestCase): + def runTest(self): + x0 = np.array([-3,5]) + ballproj = lambda x: pball(x,np.array([-0.5,1]),1) + P = [ballproj] + xproj = dykstra(P,x0) + xtrue = np.array([-1.02999894, 1.8479983]) + self.assertTrue(np.allclose(xproj, xtrue), "Incorrect point returned by Dykstra") + + +class TestDykstraBoxBallInt(unittest.TestCase): + def runTest(self): + x0 = np.array([0.72,1.1]) + lower = np.array([0.7, -2.0]) + upper = np.array([1.0, 2]) + boxproj = lambda x: pbox(x,lower,upper) + ballproj = lambda x: pball(x,np.array([0.5,1]),0.25) + P = [boxproj,ballproj] + xproj = dykstra(P,x0) + self.assertTrue(np.all(xproj == x0), "Incorrect point returned by Dykstra") + +class TestDykstraBoxBallExt1(unittest.TestCase): + def runTest(self): + x0 = np.array([0,4]) + lower = np.array([0.7, -2.0]) + upper = np.array([1.0, 2]) + boxproj = lambda x: pbox(x,lower,upper) + ballproj = lambda x: pball(x,np.array([0.5,1]),0.25) + P = [boxproj,ballproj] + xproj = dykstra(P,x0) + xtrue = np.array([0.6940582, 1.1576116]) + self.assertTrue(np.allclose(xproj, xtrue), "Incorrect point returned by Dykstra") + + +class TestDykstraBoxBallExt2(unittest.TestCase): + def runTest(self): + x0 = np.array([0.8,-3]) + lower = np.array([0.7, -2.0]) + upper = np.array([1.0, 2]) + boxproj = lambda x: pbox(x,lower,upper) + ballproj = lambda x: pball(x,np.array([0.5,1]),0.25) + P = [boxproj,ballproj] + xproj = dykstra(P,x0) + xtrue = np.array([0.68976232, 0.8372417]) + self.assertTrue(np.allclose(xproj, xtrue), "Incorrect point returned by Dykstra") + + +class TestDykstraBoxBallBdry(unittest.TestCase): + def runTest(self): + x0 = np.array([0.7,0.85]) + lower = np.array([0.7, -2.0]) + upper = np.array([1.0, 2]) + boxproj = lambda x: pbox(x,lower,upper) + ballproj = lambda x: pball(x,np.array([0.5,1]),0.25) + P = [boxproj,ballproj] + xproj = dykstra(P,x0) + self.assertTrue(np.allclose(xproj, x0), "Incorrect point returned by Dykstra") diff --git a/dfols/trust_region.py b/dfols/trust_region.py index ec8c975..74ce269 100644 --- a/dfols/trust_region.py +++ b/dfols/trust_region.py @@ -11,6 +11,15 @@ The other outputs: gnew is the gradient of the model at d, and crvmin has information about the curvature of the model at the solution. +For handling arbitrary constraints, the call is + d, gnew, crvmin = ctrsbox(xopt, g, H, projections, delta) +which produces a new vector d approximately solving the constrained trust region subproblem: + min_{d} g'*d + 0.5*d'*H*d + s.t. ||d|| <= delta + xopt + d is feasible w.r.t. the constraint set C +The other outputs: gnew is the gradient of the model at d, and crvmin has +information about the curvature of the model at the solution. + We also provide a function for maximising the absolute value of a linear function inside a similar trust region - this is useful for geometry steps. The call @@ -23,6 +32,13 @@ min_s abs(c + g' * d) s.t. lower <= xbase + d <= upper ||d|| <= delta +Again, we have a version of this for handling arbitrary constraints +The call + x = ctrsbox_geometry(xbase, c, g, projections, Delta) +Solves + min_s abs(c + g' * d) + s.t. xbase + d is feasible w.r.t. the constraint set C + ||d|| <= delta Notes ---- @@ -63,13 +79,77 @@ # Fall back to Python implementation USE_FORTRAN = False +from .util import dykstra, pball, pbox, sumsq, model_value -from .util import sumsq +__all__ = ['ctrsbox', 'ctrsbox_geometry', 'trsbox', 'trsbox_geometry'] +ZERO_THRESH = 1e-14 -__all__ = ['trsbox', 'trsbox_geometry'] +def ctrsbox(xopt, g, H, projections, delta, d_max_iters=100, d_tol=1e-10, use_fortran=USE_FORTRAN): + n = xopt.size + assert xopt.shape == (n,), "xopt has wrong shape (should be vector)" + assert g.shape == (n,), "g and xopt have incompatible sizes" + assert len(H.shape) == 2, "H must be a matrix" + assert H.shape == (n,n), "H and xopt have incompatible sizes" + assert np.allclose(H, H.T), "H must be symmetric" + assert delta > 0.0, "delta must be strictly positive" -ZERO_THRESH = 1e-14 + d = np.zeros((n,)) + gnew = g.copy() + gy = g.copy() + crvmin = -1.0 + y = d.copy() + eta = 1.2 # L backtrack scaling factor + t = 1 + + # Initial guess of L is norm(Hessian) + L = np.linalg.norm(H, 2) + + # trust region is a ball of radius delta around xopt + trproj = lambda w: pball(w, xopt, delta) + + # combine trust region constraints with user-entered constraints + P = projections.copy() + P.append(trproj) + def proj(d0): + p = dykstra(P, xopt+d0, max_iter=d_max_iters, tol=d_tol) + # we want the step only, so we subtract xopt + # from the new point: proj(xk+d) - xk + return p - xopt + + MAX_LOOP_ITERS = 100 * n ** 2 + + # projected GD loop + for ii in range(MAX_LOOP_ITERS): + w = y - (1/L)*gy + prev_d = d.copy() + d = proj(w) + + # size of step taken + s = d - prev_d + stplen = np.linalg.norm(s) + + # update true gradient + gnew += H.dot(s) + + # update CRVMIN + crv = s.dot(H).dot(s)/sumsq(s) if sumsq(s) >= ZERO_THRESH else crvmin + crvmin = min(crvmin, crv) if crvmin != -1.0 else crv + + # exit condition + if stplen <= ZERO_THRESH: + break + + # momentum update + prev_t = t + t = (1 + np.sqrt(1 + 4 * t ** 2))/2 + prev_y = y.copy() + y = d + s*(prev_t - 1)/t + + # update gradient w.r.t y + gy += H.dot(y - prev_y) + + return d, gnew, crvmin def trsbox(xopt, g, H, sl, su, delta, use_fortran=USE_FORTRAN): @@ -405,8 +485,63 @@ def ball_step(x0, g, Delta): if sqrt(gsqnorm) < ZERO_THRESH: # Error catching: if g=0, make no step return 0.0 else: - return (sqrt(gdotx0**2 + gsqnorm*(Delta**2 - x0sqnorm)) - gdotx0) / gsqnorm + # Sqrt had negative input on prob 46 in OG DFOLS with noise + # print("Inside of the sqrt:", gdotx0**2 + gsqnorm*(Delta**2 - x0sqnorm)) + # Got Inside of the sqrt: -3.608971127647144e-42 + # Added max(0,...) here + return (sqrt(np.maximum(0,gdotx0**2 + gsqnorm*(Delta**2 - x0sqnorm))) - gdotx0) / gsqnorm + +def ctrsbox_linear(xbase, g, projections, Delta, d_max_iters=100, d_tol=1e-10, use_fortran=USE_FORTRAN): + # Solve the convex program: + # min_d g' * d + # s.t. xbase + d is feasible w.r.t. constraint set C + # ||d||^2 <= Delta^2 + + n = g.size + d = np.zeros((n,)) + y = d.copy() + t = 1 + dirn = -g + cons_dirns = [] + + # If g[i] = 0, never step along this direction + constant_directions = np.where(np.abs(dirn) < ZERO_THRESH)[0] + dirn[constant_directions] = 0.0 + + # trust region is a ball of radius delta centered around xbase + trproj = lambda w: pball(w, xbase, Delta) + # combine trust region constraints with user-entered constraints + P = projections.copy() + P.append(trproj) + def proj(d0): + p = dykstra(P, xbase + d0, max_iter=d_max_iters, tol=d_tol) + # we want the step only, so we subtract + # xbase from the new point: proj(xk + d) - xk + return p - xbase + + MAX_LOOP_ITERS = 100 * n ** 2 + + # projected GD loop + for ii in range(MAX_LOOP_ITERS): + w = y + dirn + prev_d = d.copy() + d = proj(w) + + s = d - prev_d + stplen = np.linalg.norm(s) + + # exit condition + if stplen <= ZERO_THRESH: + break + + # 'momentum' update + prev_t = t + t = (1 + np.sqrt(1 + 4 * t ** 2))/2 + prev_y = y.copy() + y = d + s*(prev_t - 1)/t + + return d def trsbox_linear(g, a_in, b_in, Delta, use_fortran=USE_FORTRAN): # Solve the convex program: @@ -466,6 +601,22 @@ def trsbox_linear(g, a_in, b_in, Delta, use_fortran=USE_FORTRAN): dirn[idx_hit] = 0.0 # no more searching this direction return x +def ctrsbox_geometry(xbase, c, g, projections, Delta, d_max_iters=100, d_tol=1e-10, use_fortran=USE_FORTRAN): + # Given a Lagrange polynomial defined by: L(x) = c + g' * (x - xbase) + # Maximise |L(x)| in a box + trust region - that is, solve: + # max_x abs(c + g' * (x - xbase)) + # s.t. x is feasible w.r.t constraint set C + # ||x-xbase|| <= Delta + # Setting s = x-xbase (or x = xbase + s), this is equivalent to: + # max_s abs(c + g' * s) + # s.t. xbase + s is is feasible w.r.t constraint set C + # ||s|| <= Delta + smin = ctrsbox_linear(xbase, g, projections, Delta, d_max_iters=100, d_tol=1e-10, use_fortran=use_fortran) # minimise g' * s + smax = ctrsbox_linear(xbase, -g, projections, Delta, d_max_iters=100, d_tol=1e-10, use_fortran=use_fortran) # maximise g' * s + if abs(c + np.dot(g, smin)) >= abs(c + np.dot(g, smax)): # choose the one with largest absolute value + return smin + else: + return smax def trsbox_geometry(xbase, c, g, lower, upper, Delta, use_fortran=USE_FORTRAN): # Given a Lagrange polynomial defined by: L(x) = c + g' * (x - xbase) diff --git a/dfols/util.py b/dfols/util.py index 6107e09..02c9884 100644 --- a/dfols/util.py +++ b/dfols/util.py @@ -27,11 +27,12 @@ import logging import numpy as np +import scipy.linalg as LA import sys __all__ = ['sumsq', 'eval_least_squares_objective', 'model_value', 'random_orthog_directions_within_bounds', - 'random_directions_within_bounds', 'apply_scaling', 'remove_scaling'] + 'random_directions_within_bounds', 'apply_scaling', 'remove_scaling', 'pbox', 'pball', 'dykstra', 'qr_rank'] def sumsq(x): @@ -207,3 +208,50 @@ def remove_scaling(x_scaled, scaling_changes): shift, scale = scaling_changes return shift + x_scaled * scale + +def dykstra(P,x0,max_iter=100,tol=1e-10): + x = x0.copy() + p = len(P) + y = np.zeros((p,x0.shape[0])) + + n = 0 + cI = float('inf') + while n < max_iter and cI >= tol: + cI = 0 + for i in range(0,p): + # Update iterate + prev_x = x.copy() + x = P[i](prev_x - y[i,:]) + + # Update increment + prev_y = y[i,:].copy() + y[i,:] = x - (prev_x - prev_y) + + # Stop condition + cI += np.linalg.norm(prev_y - y[i,:])**2 + + n += 1 + + return x + + +def pball(x,c,r): + return c + (r/np.max([np.linalg.norm(x-c),r]))*(x-c) + + +def pbox(x,l,u): + return np.minimum(np.maximum(x,l), u) + +''' +Calculates rank of square matrix with QR. +We use the fact that the rank of a square matrix A +can be given by the number of nonzero diagonal elements of +R in the QR factorization of A. +''' +def qr_rank(A,tol=1e-15): + m,n = A.shape + assert m == n, "Input matrix must be square" + Q,R = LA.qr(A) + D = np.abs(np.diag(R)) + rank = np.sum(D > tol) + return rank, D diff --git a/dfols/version.py b/dfols/version.py index 94b452c..dc26bd5 100644 --- a/dfols/version.py +++ b/dfols/version.py @@ -22,4 +22,4 @@ """ -__version__ = '1.2.3' +__version__ = '1.3.0' diff --git a/docs/advanced.rst b/docs/advanced.rst index 6073888..1303bee 100644 --- a/docs/advanced.rst +++ b/docs/advanced.rst @@ -103,6 +103,15 @@ Dynamically Growing Initial Set * :code:`growing.gamma_dec` - Trust region decrease parameter during the growing phase. Default is :code:`tr_radius.gamma_dec`. * :code:`growing.num_new_dirns_each_iter` - Number of new search directions to add with each iteration where we do not have a full set of search directions. Default is 0, as this approach is not recommended. +Dykstra's Algorithm +------------------------------- +* :code:`dykstra.d_tol` - Tolerance on the stopping conditions of Dykstra's algorithm. Default is :math:`10^{-10}`. +* :code:`dykstra.max_iters` - The maximum number of iterations Dykstra's algorithm is allowed to take before stopping. Default is :math:`100`. + +Checking Matrix Rank +------------------------------- +* :code:`matrix_rank.r_tol` - Tolerance on what is the smallest posisble diagonal entry value in the QR factorization before being considered zero. Default is :math:`10^{-18}`. + References ---------- diff --git a/docs/build/doctrees/advanced.doctree b/docs/build/doctrees/advanced.doctree index 06e7653..678b5b6 100755 Binary files a/docs/build/doctrees/advanced.doctree and b/docs/build/doctrees/advanced.doctree differ diff --git a/docs/build/doctrees/diagnostic.doctree b/docs/build/doctrees/diagnostic.doctree index 8d214f7..a3635b0 100755 Binary files a/docs/build/doctrees/diagnostic.doctree and b/docs/build/doctrees/diagnostic.doctree differ diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index 0740510..bd34af3 100755 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/history.doctree b/docs/build/doctrees/history.doctree index e0c1d81..665337c 100755 Binary files a/docs/build/doctrees/history.doctree and b/docs/build/doctrees/history.doctree differ diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree index c4b2eb2..9fc32b2 100755 Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ diff --git a/docs/build/doctrees/info.doctree b/docs/build/doctrees/info.doctree index 8f40b31..a431aac 100755 Binary files a/docs/build/doctrees/info.doctree and b/docs/build/doctrees/info.doctree differ diff --git a/docs/build/doctrees/install.doctree b/docs/build/doctrees/install.doctree index 8aab039..05b2139 100755 Binary files a/docs/build/doctrees/install.doctree and b/docs/build/doctrees/install.doctree differ diff --git a/docs/build/doctrees/userguide.doctree b/docs/build/doctrees/userguide.doctree index e30357b..5f8acd3 100755 Binary files a/docs/build/doctrees/userguide.doctree and b/docs/build/doctrees/userguide.doctree differ diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo index 3bc5cd9..987e588 100644 --- a/docs/build/html/.buildinfo +++ b/docs/build/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: 7851303ebe6ed71f013a86e86fbeadbc +config: f48a4434832128cee1c37b97e0d08ba7 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/docs/build/html/_sources/advanced.rst.txt b/docs/build/html/_sources/advanced.rst.txt index 6073888..1303bee 100644 --- a/docs/build/html/_sources/advanced.rst.txt +++ b/docs/build/html/_sources/advanced.rst.txt @@ -103,6 +103,15 @@ Dynamically Growing Initial Set * :code:`growing.gamma_dec` - Trust region decrease parameter during the growing phase. Default is :code:`tr_radius.gamma_dec`. * :code:`growing.num_new_dirns_each_iter` - Number of new search directions to add with each iteration where we do not have a full set of search directions. Default is 0, as this approach is not recommended. +Dykstra's Algorithm +------------------------------- +* :code:`dykstra.d_tol` - Tolerance on the stopping conditions of Dykstra's algorithm. Default is :math:`10^{-10}`. +* :code:`dykstra.max_iters` - The maximum number of iterations Dykstra's algorithm is allowed to take before stopping. Default is :math:`100`. + +Checking Matrix Rank +------------------------------- +* :code:`matrix_rank.r_tol` - Tolerance on what is the smallest posisble diagonal entry value in the QR factorization before being considered zero. Default is :math:`10^{-18}`. + References ---------- diff --git a/docs/build/html/_sources/history.rst.txt b/docs/build/html/_sources/history.rst.txt index fd4d8ef..0d1938c 100644 --- a/docs/build/html/_sources/history.rst.txt +++ b/docs/build/html/_sources/history.rst.txt @@ -45,3 +45,8 @@ Version 1.2.2 (26 Feb 2021) Version 1.2.3 (1 Jun 2021) --------------------------- * Minor update to customise handling of NaNs in objective evaluations - no changes to the DFO-LS algorithm. + +Version 1.3.0 (16 Oct 2021) +--------------------------- +* Handle finitely many arbitrary convex constraints in addition to simple bound constraints. +* Only new functionality is added, so there is no change to the solver for unconstrained/bound-constrained problems. diff --git a/docs/build/html/_sources/index.rst.txt b/docs/build/html/_sources/index.rst.txt index a0e467e..031d6c9 100644 --- a/docs/build/html/_sources/index.rst.txt +++ b/docs/build/html/_sources/index.rst.txt @@ -11,16 +11,17 @@ DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization **Author:** `Lindon Roberts `_ -DFO-LS is a flexible package for finding local solutions to nonlinear least-squares minimization problems (with optional bound constraints), without requiring any derivatives of the objective. DFO-LS stands for Derivative-Free Optimizer for Least-Squares. +DFO-LS is a flexible package for finding local solutions to nonlinear least-squares minimization problems (with optional constraints), without requiring any derivatives of the objective. DFO-LS stands for Derivative-Free Optimizer for Least-Squares. That is, DFO-LS solves .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b -The upper and lower bounds on the variables are non-relaxable (i.e. DFO-LS will never ask to evaluate a point outside the bounds). +The constraint set :math:`C` is the intersection of multiple convex sets provided as input by the user. All constraints are non-relaxable (i.e. DFO-LS will never ask to evaluate a point that is not feasible). Full details of the DFO-LS algorithm are given in our paper: C. Cartis, J. Fiala, B. Marteau and L. Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers `_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`preprint `_] . DFO-LS is a more flexible version of `DFO-GN `_. diff --git a/docs/build/html/_sources/info.rst.txt b/docs/build/html/_sources/info.rst.txt index 824a232..e4e0b29 100644 --- a/docs/build/html/_sources/info.rst.txt +++ b/docs/build/html/_sources/info.rst.txt @@ -3,14 +3,16 @@ Overview When to use DFO-LS ------------------ -DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional bound constraints) +DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional convex constraints). .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b We call :math:`f(x)` the objective function and :math:`r_i(x)` the residual functions (or simply residuals). +:math:`C` is the intersection of multiple convex sets given as input by the user. DFO-LS is a *derivative-free* optimization algorithm, which means it does not require the user to provide the derivatives of :math:`f(x)` or :math:`r_i(x)`, nor does it attempt to estimate them internally (by using finite differencing, for instance). diff --git a/docs/build/html/_sources/userguide.rst.txt b/docs/build/html/_sources/userguide.rst.txt index 6804892..e8a7b54 100644 --- a/docs/build/html/_sources/userguide.rst.txt +++ b/docs/build/html/_sources/userguide.rst.txt @@ -9,9 +9,9 @@ DFO-LS is designed to solve the local optimization problem .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C -where the bound constraints :math:`a \leq x \leq b` are optional. The upper and lower bounds on the variables are non-relaxable (i.e. DFO-LS will never ask to evaluate a point outside the bounds). +where the set :math:`C` is an optional non-empty, closed and convex constraint set. The constraints are non-relaxable (i.e. DFO-LS will never ask to evaluate a point that is not feasible). DFO-LS iteratively constructs an interpolation-based model for the objective, and determines a step using a trust-region framework. For an in-depth technical description of the algorithm see the paper [CFMR2018]_. @@ -48,6 +48,7 @@ The possible values of :code:`soln.flag` are defined by the following variables: * :code:`soln.EXIT_MAXFUN_WARNING` - maximum allowed objective evaluations reached. This is the most likely return value when using multiple restarts. * :code:`soln.EXIT_SLOW_WARNING` - maximum number of slow iterations reached. * :code:`soln.EXIT_FALSE_SUCCESS_WARNING` - DFO-LS reached the maximum number of restarts which decreased the objective, but to a worse value than was found in a previous run. +* :code:`soln.EXIT_TR_INCREASE_WARNING` - model increase when solving the trust region subproblem with multiple arbitrary constraints. * :code:`soln.EXIT_INPUT_ERROR` - error in the inputs. * :code:`soln.EXIT_TR_INCREASE_ERROR` - error occurred when solving the trust region subproblem. * :code:`soln.EXIT_LINALG_ERROR` - linear algebra error, e.g. the interpolation points produced a singular linear system. @@ -75,6 +76,7 @@ These arguments are: * :code:`args` - a tuple of extra arguments passed to the objective function. * :code:`bounds` - a tuple :code:`(lower, upper)` with the vectors :math:`a` and :math:`b` of lower and upper bounds on :math:`x` (default is :math:`a_i=-10^{20}` and :math:`b_i=10^{20}`). To set bounds for either :code:`lower` or :code:`upper`, but not both, pass a tuple :code:`(lower, None)` or :code:`(None, upper)`. +* :code:`projections` - a list :code:`[f1,f2,...,fn]` of functions that each take as input a point :code:`x` and return a new point :code:`y`. The new point :code:`y` should be given by the projection of :code:`x` onto a closed convex set. The intersection of all sets corresponding to a function must be non-empty. * :code:`npt` - the number of interpolation points to use (default is :code:`len(x0)+1`). If using restarts, this is the number of points to use in the first run of the solver, before any restarts (and may be optionally increased via settings in :code:`user_params`). * :code:`rhobeg` - the initial value of the trust region radius (default is :math:`0.1\max(\|x_0\|_{\infty}, 1)`, or 0.1 if :code:`scaling_within_bounds`). * :code:`rhoend` - minimum allowed value of trust region radius, which determines when a successful termination occurs (default is :math:`10^{-8}`). @@ -144,7 +146,7 @@ This and all following problems can be found in the `examples - + + - Advanced Usage — DFO-LS v1.2.3 documentation + Advanced Usage — DFO-LS v1.3.0 documentation @@ -61,7 +62,7 @@
- 1.2.3 + 1.3.0
@@ -85,7 +86,7 @@ -

Contents:

+

Contents:

@@ -171,20 +174,20 @@
-
+

Advanced Usage

This section describes different optional user parameters available in DFO-LS.

In the last section (Using DFO-LS), we introduced dfols.solve(), which has the optional input user_params. This is a Python dictionary of user parameters. We will now go through the settings which can be changed in this way. More details are available in the paper [CFMR2018].

The default values, used if no override is given, in some cases vary depending on whether objfun has stochastic noise; that is, whether evaluating objfun(x) several times at the same x gives the same result or not. Whether or not this is the case is determined by the objfun_has_noise input to dfols.solve() (and not by inspecting objfun, for instance).

-
+

General Algorithm Parameters

  • general.rounding_error_constant - Internally, all interpolation points are stored with respect to a base point \(x_b\); that is, we store \(\{y_t-x_b\}\), which reduces the risk of roundoff errors. We shift \(x_b\) to \(x_k\) when \(\|s_k\| \leq \text{const}\|x_k-x_b\|\), where ‘const’ is this parameter. Default is 0.1.

  • general.safety_step_thresh - Threshold for when to call the safety step, \(\|s_k\| \leq \gamma_S \rho_k\). Default is \(\gamma_S =0.5\).

  • general.check_objfun_for_overflow - Whether to cap the value of \(r_i(x)\) when they are large enough that an OverflowError will be encountered when trying to evaluate \(f(x)\). Default is True.

-
-
+
+

Logging and Output

-
-
+ +

Initialization of Points

  • init.random_initial_directions - Build the initial interpolation set using random directions (as opposed to coordinate directions). Default as of version 1.2 is False.

  • init.random_directions_make_orthogonal - If building initial interpolation set with random directions, whether or not these should be orthogonalized. Default is True.

  • init.run_in_parallel - If using random directions, whether or not to ask for all objfun to be evaluated at all points without any intermediate processing. Default is False.

-
- -
+ +

Termination on Small Objective Value

  • model.abs_tol - Tolerance on \(f(x_k)\); quit if \(f(x_k)\) is below this value. Default is \(10^{-12}\).

  • model.rel_tol - Relative tolerance on \(f(x_k)\); quit if \(f(x_k)/f(x_0)\) is below this value. Default is \(10^{-20}\).

-
-
+ +

Termination on Slow Progress

  • slow.history_for_slow - History used to determine whether the current iteration is ‘slow’. Default is 5.

  • slow.thresh_for_slow - Threshold for objective decrease used to determine whether the current iteration is ‘slow’. Default is \(10^{-4}\).

  • slow.max_slow_iters - Number of consecutive slow successful iterations before termination (or restart). Default is 20*len(x0).

-
-
+ +

Stochastic Noise Information

-
-
+ +

Interpolation Management

  • interpolation.precondition - whether or not to scale the interpolation linear system to improve conditioning. Default is True.

  • interpolation.throw_error_on_nans - whether or not to throw numpy.linalg.LinAlgError if trying to interpolate to NaN objective values. If False, DFO-LS should terminate gracefully with an error flag. Default is False.

-
-
+ +

Regression Model Management

  • regression.num_extra_steps - In successful iterations, the number of extra points (other than accepting the trust region step) to move, useful when \(|Y_k|>n+1\) (\(n\) is len(x0)). Default is 0.

  • regression.increase_num_extra_steps_with_restart - The amount to increase regression.num_extra_steps by with each restarts, for instance if increasing the number of points with each restart. Default is 0.

  • regression.momentum_extra_steps - If moving extra points in successful iterations, whether to use the ‘momentum’ method. If not, uses geometry-improving steps. Default is False.

-
-
+ +

Multiple Restarts

-
-
+ +

Dynamically Growing Initial Set

-
-
+ +
+

Dykstra’s Algorithm

+
    +
  • dykstra.d_tol - Tolerance on the stopping conditions of Dykstra’s algorithm. Default is \(10^{-10}\).

  • +
  • dykstra.max_iters - The maximum number of iterations Dykstra’s algorithm is allowed to take before stopping. Default is \(100\).

  • +
+
+
+

Checking Matrix Rank

+
    +
  • matrix_rank.r_tol - Tolerance on what is the smallest posisble diagonal entry value in the QR factorization before being considered zero. Default is \(10^{-18}\).

  • +
+
+

References

CFMR2018

Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, ACM Transactions on Mathematical Software, 45:3 (2019), pp. 32:1-32:41 [preprint]

-
-
+ +
diff --git a/docs/build/html/diagnostic.html b/docs/build/html/diagnostic.html index f4e5a4c..90a8f83 100644 --- a/docs/build/html/diagnostic.html +++ b/docs/build/html/diagnostic.html @@ -5,10 +5,11 @@ - + + - Diagnostic Information — DFO-LS v1.2.3 documentation + Diagnostic Information — DFO-LS v1.3.0 documentation @@ -61,7 +62,7 @@
- 1.2.3 + 1.3.0
@@ -85,7 +86,7 @@ -

Contents:

+

Contents:

  • Installing DFO-LS
  • Overview
  • @@ -164,7 +165,7 @@
    -
    +

    Diagnostic Information

    In Using DFO-LS, we saw that the output of DFO-LS returns a container which includes diagnostic information about the progress of the algorithm (soln.diagnostic_info). This object is a Pandas DataFrame, with one row per iteration of the algorithm. In this section, we explain the meaning of each type of output (the columns of the DataFrame).

    To save this information to a CSV file, use:

    @@ -183,23 +184,23 @@

    Diagnostic Information

    Depending on exactly how DFO-LS terminates, the last row of results may not be fully populated.

    -
    +

    Current Iterate

    • xk - Best point found so far (current iterate). This is only saved if user_params['logging.save_xk'] = True.

    • rk - The vector of residuals at the current iterate. This is only saved if user_params['logging.save_rk'] = True.

    • fk - The value of \(f\) at the current iterate.

    -
    -
    + +

    Trust Region

    • rho - The lower bound on the trust region radius \(\rho_k\).

    • delta - The trust region radius \(\Delta_k\).

    • norm_sk - The norm of the trust region step \(\|s_k\|\).

    -
    -
    + +

    Model Interpolation

    -
    -
    + +

    Iteration Count

    -
    -
    + +

    Algorithm Progress

    • iter_type - A text description of what type of iteration we had (e.g. Successful, Safety, etc.)

    • ratio - The ratio of actual to predicted objective reduction in the trust region step.

    • slow_iter - Equal to 1 if the current iteration is successful but slow, 0 if is successful but not slow, and -1 if was not successful.

    -
    -
    + +
    diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index ab3ee15..3f9829a 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -9,7 +9,7 @@ - Index — DFO-LS v1.2.3 documentation + Index — DFO-LS v1.3.0 documentation @@ -60,7 +60,7 @@
    - 1.2.3 + 1.3.0
    @@ -84,7 +84,7 @@ -

    Contents:

    +

    Contents:

    @@ -167,42 +169,42 @@
    -
    +

    Version History

    This section lists the different versions of DFO-LS and the updates between them.

    -
    +

    Version 1.0 (6 Feb 2018)

    • Initial release of DFO-LS

    -
    -
    +
    +

    Version 1.0.1 (20 Feb 2018)

    • Minor bug fix to trust region subproblem solver (the output crvmin is calculated correctly) - this has minimal impact on the performance of DFO-LS.

    -
    -
    + +

    Version 1.0.2 (20 Jun 2018)

    • Extra optional input args which passes through arguments for objfun.

    • Bug fixes: default parameters for reduced initialization cost regime, returning correct value if exiting from within a safety step, retrieving dependencies during installation.

    -
    -
    + +

    Version 1.1 (16 Jan 2019)

    • Use different default reduced initialization cost method for inverse problems to ensure whole space is searched correctly.

    • Bug fixes: default trust region radius when scaling feasible region, exit correctly when no Jacobian returned, handling overflow at initial value

    -
    -
    + +

    Version 1.1.1 (5 Apr 2019)

    • Link code to Zenodo, to create DOI - no changes to the DFO-LS algorithm.

    -
    -
    + +

    Version 1.2 (12 Feb 2020)

    • Use deterministic initialisation by default (so it is no longer necessary to set a random seed for reproducibility of DFO-LS results).

    • @@ -213,26 +215,33 @@

      Version 1.2 (12 Feb 2020) +

    +

    Version 1.2.1 (13 Feb 2020)

    • Make the use of the trustregion package optional, not installed by default.

    -
    -
    + +

    Version 1.2.2 (26 Feb 2021)

    • Minor update to remove NumPy deprecation warnings - no changes to the DFO-LS algorithm.

    -
    -
    + +

    Version 1.2.3 (1 Jun 2021)

    • Minor update to customise handling of NaNs in objective evaluations - no changes to the DFO-LS algorithm.

    -
    -
    + +
    +

    Version 1.3.0 (16 Oct 2021)

    +
      +
    • Handle finitely many arbitrary convex constraints in addition to simple bound constraints.

    • +
    • Only new functionality is added, so there is no change to the solver for unconstrained/bound-constrained problems.

    • +
    +
    +
    diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 76457b0..022ad20 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -5,10 +5,11 @@ - + + - DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization — DFO-LS v1.2.3 documentation + DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization — DFO-LS v1.3.0 documentation @@ -60,7 +61,7 @@
    - 1.2.3 + 1.3.0
    @@ -84,7 +85,7 @@ -

    Contents:

    +

    Contents:

    -
    +

    Acknowledgements

    This software was developed under the supervision of Coralia Cartis, and was supported by the EPSRC Centre For Doctoral Training in Industrially Focused Mathematical Modelling (EP/L015803/1) in collaboration with the Numerical Algorithms Group.

    -
    - + + diff --git a/docs/build/html/info.html b/docs/build/html/info.html index f3867f0..72e907a 100644 --- a/docs/build/html/info.html +++ b/docs/build/html/info.html @@ -5,10 +5,11 @@ - + + - Overview — DFO-LS v1.2.3 documentation + Overview — DFO-LS v1.3.0 documentation @@ -61,7 +62,7 @@
    - 1.2.3 + 1.3.0
    @@ -85,7 +86,7 @@ -

    Contents:

    +

    Contents:

    • Installing DFO-LS
    • Overview
        @@ -164,22 +165,24 @@
        -
        +

        Overview

        -
        +

        When to use DFO-LS

        -

        DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional bound constraints)

        +

        DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional convex constraints).

        \[\begin{split}\min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ -\text{s.t.} &\quad a \leq x \leq b\end{split}\]
        -

        We call \(f(x)\) the objective function and \(r_i(x)\) the residual functions (or simply residuals).

        +\text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b\end{split}\]
        +

        We call \(f(x)\) the objective function and \(r_i(x)\) the residual functions (or simply residuals). +\(C\) is the intersection of multiple convex sets given as input by the user.

        DFO-LS is a derivative-free optimization algorithm, which means it does not require the user to provide the derivatives of \(f(x)\) or \(r_i(x)\), nor does it attempt to estimate them internally (by using finite differencing, for instance).

        There are two main situations when using a derivative-free algorithm (such as DFO-LS) is preferable to a derivative-based algorithm (which is the vast majority of least-squares solvers).

        If the residuals are noisy, then calculating or even estimating their derivatives may be impossible (or at least very inaccurate). By noisy, we mean that if we evaluate \(r_i(x)\) multiple times at the same value of \(x\), we get different results. This may happen when a Monte Carlo simulation is used, for instance, or \(r_i(x)\) involves performing a physical experiment.

        If the residuals are expensive to evaluate, then estimating derivatives (which requires \(n\) evaluations of each \(r_i(x)\) for every point of interest \(x\)) may be prohibitively expensive. Derivative-free methods are designed to solve the problem with the fewest number of evaluations of the objective as possible.

        However, if you have provide (or a solver can estimate) derivatives of \(r_i(x)\), then it is probably a good idea to use one of the many derivative-based solvers (such as one from the SciPy library).

        -
        -
        + +

        Parameter Fitting

        A very common problem in many quantitative disciplines is fitting parameters to observed data. Typically, this means that we have developed a model for some proccess, which takes a vector of (known) inputs \(\mathrm{obs}\in\mathbb{R}^N\) and some model parameters \(x=(x_1, \ldots, x_n)\in\mathbb{R}^n\), and computes a (predicted) quantity of interest \(y\in\mathbb{R}\):

        @@ -193,8 +196,8 @@

        Parameter Fitting +

        +

        Solving Nonlinear Systems of Equations

        Suppose we wish to solve the system of nonlinear equations: find \(x\in\mathbb{R}^n\) satisfying

        -
        +
        +

        Details of the DFO-LS Algorithm

        DFO-LS is a type of trust-region method, a common category of optimization algorithms for nonconvex problems. Given a current estimate of the solution \(x_k\), we compute a model which approximates the objective \(m_k(s)\approx f(x_k+s)\) (for small steps \(s\)), and maintain a value \(\Delta_k>0\) (called the trust region radius) which measures the size of \(s\) for which the approximation is good.

        At each step, we compute a trial step \(s_k\) designed to make our approximation \(m_k(s)\) small (this task is called the trust region subproblem). We evaluate the objective at this new point, and if this provided a good decrease in the objective, we take the step (\(x_{k+1}=x_k+s_k\)), otherwise we stay put (\(x_{k+1}=x_k\)). Based on this information, we choose a new value \(\Delta_{k+1}\), and repeat the process.

        In DFO-LS, we construct our approximation \(m_k(s)\) by interpolating a linear approximation for each residual \(r_i(x)\) at several points close to \(x_k\). To make sure our interpolated model is accurate, we need to regularly check that the points are well-spaced, and move them if they aren’t (i.e. improve the geometry of our interpolation points).

        -

        A complete description of the DFO-LS algorithm is given in our paper [CFMR2018].

        -
        -
        +

        A complete description of the DFO-LS algorithm is given in our paper [CFMR2018].

        + +

        References

        CFMR2018

        Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, ACM Transactions on Mathematical Software, 45:3 (2019), pp. 32:1-32:41 [preprint]

        -
        -
        + +
        diff --git a/docs/build/html/install.html b/docs/build/html/install.html index d74c88f..e12aafc 100644 --- a/docs/build/html/install.html +++ b/docs/build/html/install.html @@ -5,10 +5,11 @@ - + + - Installing DFO-LS — DFO-LS v1.2.3 documentation + Installing DFO-LS — DFO-LS v1.3.0 documentation @@ -61,7 +62,7 @@
        - 1.2.3 + 1.3.0
        @@ -85,7 +86,7 @@ -

        Contents:

        +

        Contents:

        • Installing DFO-LS
          • Requirements
          • @@ -164,9 +165,9 @@
            -
            +

            Installing DFO-LS

            -
            +

            Requirements

            DFO-LS requires the following software to be installed:

            Optional package: DFO-LS versions 1.2 and higher also support the trustregion package for fast trust-region subproblem solutions. To install this, make sure you have a Fortran compiler (e.g. gfortran) and NumPy installed, then run pip install trustregion. You do not have to have trustregion installed for DFO-LS to work, and it is not installed by default.

            -
            -
            +
            +

            Installation using pip

            For easy installation, use pip (http://www.pip-installer.org/) as root:

            .. code-block:: bash
            @@ -208,8 +209,8 @@ 

            Installation using pip

            to upgrade DFO-LS to the latest version.

            -
            -
            + +

            Manual installation

            Alternatively, you can download the source code from Github and unpack as follows:

            @@ -238,8 +239,8 @@

            Manual installation +

            +

            Testing

            If you installed DFO-LS manually, you can test your installation by running:

            @@ -248,8 +249,8 @@

            Testing +

            +

            Uninstallation

            If DFO-LS was installed using pip you can uninstall as follows:

            @@ -258,8 +259,8 @@

            Uninstallation - Search — DFO-LS v1.2.3 documentation + Search — DFO-LS v1.3.0 documentation @@ -60,7 +60,7 @@
            - 1.2.3 + 1.3.0
            @@ -84,7 +84,7 @@ -

            Contents:

            +

            Contents:

            • Installing DFO-LS
            • Overview
            • diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index fd398c6..7e8fa9d 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["advanced","diagnostic","history","index","info","install","userguide"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["advanced.rst","diagnostic.rst","history.rst","index.rst","info.rst","install.rst","userguide.rst"],objects:{},objnames:{},objtypes:{},terms:{"00000000e":6,"00180000e":6,"00670067e":6,"00e":6,"01256863e":6,"01941978e":6,"04752848e":6,"06227943e":6,"07858081e":6,"09280752e":6,"09843514e":6,"10862447e":6,"10g":6,"12897463e":6,"19971362e":6,"1e20":6,"20e":6,"22992989e":6,"24129962e":6,"24991776e":6,"33017181e":6,"34676365e":6,"35e":6,"41166495e":6,"42808544e":6,"43e":6,"45394186e":6,"47252555e":6,"50e":6,"51525603e":6,"550476524e":6,"59085679e":6,"59634974e":6,"61e":6,"62398179e":6,"63036198e":6,"650274685e":6,"65956876e":6,"70205419e":6,"70749826e":6,"71355033e":6,"75304364e":6,"77e":6,"79999999e":6,"80e":6,"827884295e":6,"83184867e":6,"90335675e":6,"95045269e":6,"95108811e":6,"96161167e":6,"97239623e":6,"98196347e":6,"98830861e":6,"99950530e":6,"99999998e":6,"case":[0,4,6],"const":0,"default":[0,2,5,6],"float":6,"function":[0,4,6],"import":6,"long":2,"new":[0,4],"public":3,"return":[1,2,6],"short":6,"throw":0,"true":[0,1,4,6],"try":[0,3,4],"while":[0,4],Adding:3,And:6,For:[0,3,4,5,6],Such:4,That:[3,4],The:[0,1,3,6],Then:4,There:[0,4],These:6,Use:2,Using:[0,1,3],__future__:6,a_i:6,abl:6,about:[1,6],abov:[4,5,6],abs_tol:0,absolut:0,accept:0,access:6,accur:[4,6],accuraci:6,achiev:6,acm:[0,3,4,6],actual:1,add:[0,6],added:0,adding:0,addit:0,addition:5,additive_noise_level:0,adjust:[2,6],admin:5,advanc:[3,6],after:0,algebra:6,algorithm:[2,3,6],all:[0,1,4,6],allow:[0,6],along:6,alpha1:0,alpha2:0,alpha_1:0,alpha_2:0,also:[0,4,5,6],altern:[0,3,5,6],alwai:[0,4],amount:[0,6],ani:[0,1,3,6],anoth:0,appli:[0,6],applic:6,approach:0,approx:[4,6],approxim:[4,6],apr:3,aren:4,arg:[2,6],argument:[2,3],arrai:6,ask:[0,3,6],attempt:4,author:3,auto:2,auto_detect:0,automat:[0,5,6],avail:[0,6],averag:6,avoid:[0,2],awai:6,axes:6,b_i:6,base:[0,2,3,4,6],bash:5,basicconfig:6,becom:6,been:[1,6],befor:[0,6],behavior:2,below:[0,6],benjamin:[0,4,6],best:[0,1,4,6],between:2,block:5,bobyqa:3,both:6,bound:[0,1,2,3,4],bug:2,bugfix:2,build:[0,6],calcul:[2,4,6],calibr:[4,6],call:[0,1,4,6],can:[0,4,5,6],cannot:[0,4],cap:0,carlo:4,carti:[0,3,4,6],categori:4,caus:[0,6],cdl:6,cdot:[0,6],centr:3,certainli:4,cfmr2018:[0,4,6],chang:[0,1,2],check:4,check_objfun_for_overflow:0,choic:4,choos:4,clone:5,close:[2,4],closest:4,code:[2,5,6],coeffici:0,collabor:3,column:1,com:[5,6],common:4,commonli:6,compar:6,compil:5,complet:4,compon:0,comput:[1,4],computation:0,condit:[0,1,6],consecut:0,consid:4,consist:0,constrain:6,constraint:[3,4,6],construct:[4,6],contact:3,contain:[1,5,6],content:3,coordin:[0,6],coralia:[0,3,4,6],correct:[2,6],correctli:[2,6],correl:0,cost:[0,2,6],could:6,count:3,creat:2,criteria:0,criterion:0,crvmin:2,csv:1,current:[0,3,4,6],customis:2,data:[0,3,4],datafram:[1,6],date:3,deactiv:6,dec:0,decai:6,decreas:[0,4,6],def:6,defin:[1,6],deflat:4,delta:[1,6],delta_:4,delta_k:[0,1,4],delta_scale_new_dirn:0,demonstr:6,depend:[0,1,2,4,6],deprec:2,depth:6,deriv:[0,4,6],describ:[0,4,6],descript:[1,4,6],design:[4,6],detail:[0,3,6],detect:2,determin:[0,4,6],determinist:2,develop:[3,4],dfo:[0,1,2],dfol:[0,1,5,6],diagnost:[0,3,6],diagnostic_info:[1,6],dictionari:[0,6],did:[0,6],differ:[0,2,4,6],differenc:4,difficult:4,dimension:6,direct:[0,6],directli:4,directori:[5,6],disciplin:4,displai:6,distanc:1,divid:2,do_geom_step:0,do_log:6,do_safety_step:0,doctor:3,document:[5,6],doe:[4,6],doi:2,doing:4,don:2,download:5,dure:[0,2],dynam:3,each:[0,1,4,6],easi:[5,6],easy_instal:5,effect:0,either:6,enabl:2,encount:0,end:0,enough:[0,6],ensur:2,entri:6,epsrc:3,equal:1,equat:3,error:[0,1,4,6],estim:[3,4],eta1:0,eta2:0,eta_1:0,eta_2:0,etc:[0,1],eval:6,evalu:[0,1,2,3,4],even:4,everi:[4,6],exactli:[1,6],exampl:[3,4,5],exclud:0,exist:4,exit:[2,6],exit_false_success_warn:6,exit_input_error:6,exit_linalg_error:6,exit_maxfun_warn:6,exit_slow_warn:6,exit_success:6,exit_tr_increase_error:6,exp:6,expect:6,expens:[0,1,4],experi:4,explain:1,exponenti:6,extend:6,extra:[0,2,6],factor:0,fals:[0,6],far:[1,6],fast:5,faster:[2,6],feasibl:2,featur:3,feb:3,februari:[],fewest:4,fiala:[0,3,4,6],figur:6,file:[0,1,5,6],filemod:6,filenam:6,find:[3,4,6],finish:6,finit:4,first:6,fit:[0,3],fix:[0,2,6],flag:[0,6],flexibl:[0,3,4,6],floor:0,focus:3,follow:[5,6],form:4,format:6,formul:4,fortran:[2,5],found:[0,1,6],framework:6,free:[0,4,6],frobeniu:1,from:[1,2,4,5,6],full:[0,2,3,6],full_geom_step:0,full_rank:0,fulli:1,further:0,g_k:1,gamma:0,gamma_:0,gamma_dec:0,gamma_inc:0,gamma_inc_overlin:0,gaussian:6,gca:6,gener:[3,6],geometri:[0,2,4],geq:0,get:[4,6],gfortran:5,git:5,github:[5,6],give:[0,6],given:[0,3,4,6],gnu:3,good:[4,6],gracefulli:0,grad:6,gradient:1,grid:6,group:3,grow:3,guarante:4,had:1,hand:[2,4,5],handl:2,happen:4,hard:0,has:[0,1,2,3,4,6],have:[0,4,5,6],help:6,here:6,hessian:2,high:6,higher:5,histori:[0,3],history_for_slow:0,home:5,how:[0,1,3,5],howev:[4,6],htm:6,html:[5,6],http:[5,6],idea:4,imlug:6,imlug_genstatexpls_sect004:6,impact:[2,6],imposs:4,impract:0,improv:[0,2,3,4,6],inaccur:4,inc:0,includ:[0,1,6],increas:[0,6],increase_ndirs_initial_amt:0,increase_npt:0,increase_npt_amt:0,increase_num_extra_steps_with_restart:0,indic:6,industri:3,infinit:4,info:[1,6],inform:[3,4,6],infti:6,init:0,initi:[2,3,6],initialis:[2,6],input:[0,2,4,6],inspect:0,instal:[2,3],instanc:[0,4],instead:[4,5],integ:6,interest:[3,4],interfac:6,intermedi:0,intern:[0,4,6],interpol:[2,3,4,6],interpolation_change_j_norm:1,interpolation_condition_numb:1,interpolation_error:1,interpolation_total_residu:1,introduc:0,invers:2,involv:[0,4],iter:[0,2,3,6],iter_this_run:1,iter_typ:1,iters_tot:1,its:[0,6],j_k:[0,1],jacobian:[0,1,2,6],jan:[0,3,4,6],jun:3,june:3,just:2,keep:4,known:4,l015803:3,label:6,lambda:[0,1],larg:[0,4],larger:0,largest:0,last:[0,1],lastli:6,latest:5,ldot:4,least:4,least_squar:6,left:4,legend:6,len:[0,6],length:0,leq:[0,3,4,6],less:0,let:6,level:[0,5,6],librari:4,licens:3,like:[4,6],linalg:0,linalgerror:0,lindon:[0,3,4,6],line:[0,6],linear:[0,1,4,6],link:2,linspac:6,list:[2,6],loc:6,local:[3,6],locat:5,log:[1,2,3,6],longer:2,lower:[0,1,3,6],lsqcurvefit:6,m_k:4,magnitud:[0,6],mai:[1,3,4,6],main:[4,6],maintain:4,major:4,make:[0,2,4,5,6],manag:3,mani:[0,3,4,6],manual:3,marteau:[0,3,4,6],math:6,mathbb:[3,4,6],mathemat:[0,3,4,6],mathrm:4,mathwork:6,matplotlib:6,matrix:[1,6],max:6,max_distance_xk:1,max_fake_successful_step:0,max_npt:0,max_slow_it:0,max_unsuccessful_restart:0,maxfun:[0,6],maximum:[0,1,6],mean:[1,4],measur:[0,4],messag:6,method:[0,2,4],min:6,min_:[3,4,6],min_chgj_slop:0,min_correl:0,min_sing_v:0,minim:[2,4],minimum:[0,6],minor:2,model:[2,3,4,6],modifi:6,modul:6,momentum:0,momentum_extra_step:0,mont:4,more:[0,3,4],most:[0,1,4,6],move:[0,4,6],move_xk:0,msg:6,multipl:[2,3,4,6],multiplicative_noise_level:0,must:6,myfil:[1,6],n_to_print_whole_x_vector:0,nag:3,nan:[0,2],navig:5,ndirs_initi:0,necessari:2,need:[4,6],never:[3,6],next:6,nfev:6,nois:[3,4,6],noisi:[0,3,4],non:[3,6],nonconvex:4,none:[0,6],nonlinear:3,nonlinear_system:6,nonzero:0,nor:4,norm:1,norm_gk:1,norm_sk:1,normal:6,note:[5,6],now:[0,6],npt:[0,1,6],nrestart:6,nrun:[1,6],nsampl:[1,6],num_extra_step:0,num_geom_step:0,num_new_dirns_each_it:0,number:[0,1,4,6],numer:3,numericalalgorithmsgroup:5,numpi:[0,2,5,6],obj:6,object:[1,2,3,4],objfun:[0,1,2,6],objfun_has_nois:[0,6],obs:4,observ:[4,6],occur:6,often:4,older:5,one:[0,1,4,5,6],onli:[0,1,4,6],oper:2,oppos:0,opposit:0,opt:6,optim:[0,1,4,6],option:[0,2,3,4,5],order:6,org:5,origin:6,orthogon:0,other:0,otherwis:[0,4],our:[3,4,6],out:6,output:[1,2,3,4],outsid:[3,6],over:[0,6],overdetermin:4,overflow:2,overflowerror:0,overlin:0,overrid:0,overridden:6,overview:[3,6],packag:[2,3,5],page:6,panda:[1,5,6],paper:[0,3,4,6],param1:6,param2:6,paramet:[2,3],part:[2,6],partial:6,particularli:[4,6],pass:[2,6],past:0,per:[0,1,2,6],perform:[0,2,4,6],perturb:0,perturb_trust_region_step:0,phase:[0,6],physic:4,piec:[0,1],pip:3,pleas:3,plot:6,plt:6,point:[1,2,3,4,6],pois:1,poised:[0,1],popul:1,possibl:[4,6],post:0,practic:6,precondit:0,predict:[1,4],prediction_error:6,prefer:4,preprint:[0,3,4,6],present:5,preserv:0,previou:[0,6],previous:1,print:[0,2,6],print_funct:6,print_progress:6,privat:5,privileg:5,probabl:4,problem:[0,1,2,3,4,6],proccess:4,process:[0,4],produc:[4,6],progress:[3,6],prohibit:4,provid:[4,5,6],pull:5,pure:5,purpos:6,put:4,pydata:5,pyplot:6,python:[0,5,6],quad:[3,4,6],quantit:4,quantiti:4,quit:0,quit_on_noise_level:0,r_1:[0,4,6],r_2:4,r_i:[0,4,6],r_m:[0,4,6],radii:0,radiu:[0,1,2,4,6],random:[0,2,6],random_directions_make_orthogon:0,random_initial_direct:0,rang:6,rank:0,rate:0,rather:2,ratio:[0,1],reach:[0,6],recommend:0,recycl:0,reduc:[0,2],reduce_delta:0,reduct:1,refer:3,regim:2,region:[2,3,4,5,6],regress:3,regular:0,regularli:4,rel:0,rel_tol:0,relationship:4,relax:[3,6],releas:[2,3],remov:[2,5],repeat:4,replac:6,reproduc:[2,6],request:6,requir:[0,3,4,6],rerun:5,reset:0,reset_delta:0,reset_rho:0,resid:6,residu:[1,4,6],respect:0,restart:[1,2,3,6],result:[0,1,2,4,6],retriev:2,rho:[1,6],rho_:0,rho_k:[0,1],rhobeg:6,rhoend:6,rhoend_scal:0,right:[2,6],risk:0,robert:[0,3,4,6],robust:[0,3,4,6],root:5,rosenbrock:6,rosenbrock_noisi:6,rounding_error_const:0,roundoff:0,row:1,run:[0,5,6],run_in_parallel:0,runtim:2,runtimewarn:6,s_k:[0,1,4],safeti:[0,1,2],safety_step_thresh:0,sai:4,same:[0,3,4,6],sampl:6,sas:6,satisfi:[4,6],save:[0,1,6],save_diagnostic_info:[0,1],save_poised:[0,1],save_rk:[0,1],save_xk:[0,1],saw:1,scale:[0,2,6],scale_factor:0,scale_factor_for_quit:0,scaling_within_bound:6,scipi:[4,5,6],screen:0,script:6,search:[0,2,4],section:[0,1,2,6],see:[1,5,6],seed:[2,6],sens:4,sensibl:6,set:[1,2,3,4,6],set_xlabel:6,set_ylabel:6,setup:[0,5],sever:[0,4,6],shape:6,shift:[0,6],should:[0,5,6],show:6,side:[2,4],similar:4,similarli:4,simpl:[3,5],simpli:4,simul:4,sin:4,sinc:[0,1],singular:[0,6],site:5,situat:4,size:[4,6],slope:0,slow:[1,3,6],slow_it:1,small:[3,4,6],smaller:0,smallest:[0,1],smooth:0,soft:0,softwar:[0,3,4,5,6],soln:[1,6],solut:[2,3,4,5,6],solv:[0,1,3],solver:[0,2,3,4,6],some:[0,4,5,6],sourc:5,space:[0,2,4],specifi:[0,6],squar:[1,4],stai:4,stand:3,start:[2,4,6],statu:6,step:[0,1,2,4,6],still:0,stochast:[3,6],stop:2,store:[0,2],str:6,string:6,strongli:4,structur:3,subproblem:[2,4,5,6],success:[0,1,6],successfulli:6,sudo:5,suffici:6,suitabl:4,sum:[1,4],sum_:[3,4,6],supervis:3,support:[3,5,6],suppos:[4,6],sure:[4,5],svd_max_jac_cond:0,svd_scale_factor:0,system:[0,1,3,5],t_i:6,tabl:6,take:[4,6],taken:6,task:4,tdata:6,technic:6,techniqu:4,termin:[1,3,6],test:[3,6],text:[0,1,3,4,6],than:[0,2,6],thei:[0,4],them:[2,4],therefor:6,thi:[0,1,2,3,4,5,6],thresh_for_slow:0,threshold:0,through:[0,2],throw_error_on_nan:0,time:[0,1,4,6],to_csv:1,toler:0,top:5,total:[1,6],tr_radiu:0,train:3,transact:[0,3,4,6],trend:0,trial:4,triangular:2,trigger:0,troubl:6,trust:[2,3,4,5,6],trustregion:[2,5],tupl:6,turn:1,two:[0,4],type:[1,4],typic:4,unabl:6,under:3,underdetermin:4,uninstal:3,unknown:4,unless:6,unpack:5,unsuccess:0,updat:2,upgrad:5,upper:[2,3,6],usag:[3,6],use:[0,1,2,3,5],use_full_rank_interp:0,use_old_rk:0,use_restart:0,use_soft_restart:0,used:[0,1,4,6],useful:[0,4,6],user:[0,4,5,6],user_param:[0,1,6],uses:0,using:[0,2,3,4,6],usual:0,val1:6,val2:6,valu:[1,2,3,4,6],vari:0,variabl:[3,6],vast:4,vdot:4,vector:[0,1,4,6],veri:[0,4,6],version:[0,3,5],via:6,viewer:6,visibl:6,wai:[0,4,6],want:[5,6],warn:[2,6],well:4,what:1,when:[0,2,3,6],where:[0,4,6],whether:[0,4,6],which:[0,1,2,3,4,5,6],whole:2,why:6,wish:[3,4,6],within:[0,2,6],without:[0,3],work:5,wors:6,write:6,written:5,www:5,x_0:[0,6],x_1:[4,6],x_2:[4,6],x_b:0,x_j:6,x_k:[0,4],x_n:4,xmin:6,xtol:6,y_1:4,y_i:[4,6],y_k:[0,1],y_m:4,y_t:0,ydata:6,yet:0,you:[3,4,5,6],your:[4,5,6],zenodo:2,zero:2},titles:["Advanced Usage","Diagnostic Information","Version History","DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization","Overview","Installing DFO-LS","Using DFO-LS"],titleterms:{Adding:6,Using:6,acknowledg:3,advanc:0,algorithm:[0,1,4],apr:2,argument:6,bound:6,count:1,current:1,data:6,deriv:3,detail:4,dfo:[3,4,5,6],diagnost:1,dynam:0,equat:[4,6],estim:6,evalu:6,exampl:6,feb:2,fit:[4,6],free:3,gener:0,grow:0,histori:2,how:6,inform:[0,1],initi:0,instal:5,interpol:[0,1],iter:1,jan:2,jun:2,least:[3,6],log:0,manag:0,manual:5,minim:[3,6],model:[0,1],more:6,multipl:0,nois:0,noisi:6,nonlinear:[4,6],object:[0,6],optim:3,option:6,output:[0,6],overview:4,paramet:[0,4,6],pip:5,point:0,progress:[0,1],refer:[0,4,6],region:[0,1],regress:0,requir:5,restart:0,set:0,simpl:6,slow:0,small:0,solv:[4,6],squar:[3,6],stochast:0,system:[4,6],termin:0,test:5,trust:[0,1],uninstal:5,usag:0,use:[4,6],using:5,valu:0,version:2,when:4}}) \ No newline at end of file +Search.setIndex({docnames:["advanced","diagnostic","history","index","info","install","userguide"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":2,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["advanced.rst","diagnostic.rst","history.rst","index.rst","info.rst","install.rst","userguide.rst"],objects:{},objnames:{},objtypes:{},terms:{"00000000e":6,"00004412e":6,"00180000e":6,"00670067e":6,"00e":6,"01256863e":6,"01941978e":6,"04752848e":6,"06227943e":6,"07858081e":6,"09280752e":6,"09843514e":6,"10862447e":6,"10g":6,"12897463e":6,"19971362e":6,"1e20":6,"20e":6,"22992989e":6,"24129962e":6,"24991776e":6,"33017181e":6,"34676365e":6,"35e":6,"41166495e":6,"42808544e":6,"43e":6,"45394186e":6,"47252555e":6,"50e":6,"51525603e":6,"550476524e":6,"59085679e":6,"59634974e":6,"61e":6,"62398179e":6,"63036198e":6,"650274685e":6,"65956876e":6,"70205419e":6,"70749826e":6,"71355033e":6,"75304364e":6,"77e":6,"79826221e":6,"79999999e":6,"80e":6,"81262102e":[],"81976605e":6,"827884295e":6,"83184867e":6,"90335675e":6,"95045269e":6,"95108811e":6,"96161167e":6,"97239623e":6,"98196347e":6,"98830861e":6,"99950530e":6,"99999998e":6,"case":[0,4,6],"const":0,"default":[0,2,5,6],"float":6,"function":[0,2,4,6],"import":6,"long":2,"new":[0,2,4,6],"public":3,"return":[1,2,6],"short":6,"throw":0,"true":[0,1,4,6],"try":[0,3,4],"while":[0,4],Adding:3,And:6,For:[0,3,4,5,6],One:6,Such:[4,6],That:[3,4],The:[0,1,3,6],Then:4,There:[0,4],These:6,Use:2,Using:[0,1,3],__future__:6,a_i:6,abl:6,about:[1,6],abov:[4,5,6],abs_tol:0,absolut:0,accept:0,access:6,accur:[4,6],accuraci:6,achiev:6,acm:[0,3,4,6],activ:6,actual:1,add:[0,6],added:[0,2],adding:[0,6],addit:[0,2],addition:5,additive_noise_level:0,adjust:[2,6],admin:5,advanc:[3,6],after:0,algebra:6,algorithm:[2,3,6],all:[0,1,3,4,6],allow:[0,6],alon:6,along:6,alpha1:0,alpha2:0,alpha_1:0,alpha_2:0,also:[0,4,5,6],altern:[0,3,5,6],alwai:[0,4],amount:[0,6],ani:[0,1,3,6],anoth:0,appli:[0,6],applic:6,approach:0,approx:[4,6],approxim:[4,6],apr:3,arbitrari:[2,3],aren:4,arg:[2,6],argument:[2,3],arrai:6,ask:[0,3,6],assum:[],attempt:4,author:3,auto:2,auto_detect:0,automat:[0,5,6],avail:[0,6],averag:6,avoid:[0,2],awai:6,axes:6,b_i:6,ball:6,base:[0,2,3,4,6],bash:5,basicconfig:6,becaus:6,becom:6,been:[1,6],befor:[0,6],behavior:2,being:0,below:[0,6],benjamin:[0,4,6],best:[0,1,4,6],between:2,block:5,bobyqa:3,both:6,bound:[0,1,2,3],box:6,bug:2,bugfix:2,build:[0,6],calcul:[2,4,6],calibr:[4,6],call:[0,1,4,6],can:[0,4,5,6],cannot:[0,4],cap:0,carlo:4,carti:[0,3,4,6],categori:4,caus:[0,6],cdl:6,cdot:[0,6],centr:[3,6],certainli:4,cfmr2018:[0,4,6],chang:[0,1,2],check:[3,4],check_objfun_for_overflow:0,choic:4,choos:[4,6],clone:5,close:[2,4,6],closest:4,code:[2,5,6],coeffici:0,collabor:3,column:1,com:[5,6],common:[4,6],commonli:6,compar:6,compil:5,complet:4,complex:[],compon:0,comput:[1,4,6],computation:0,condit:[0,1,6],consecut:0,consid:[0,4],consist:0,constrain:[2,6],constraint:[2,3,4],construct:[4,6],contact:3,contain:[1,5,6],content:3,convex:[2,3,4],coordin:[0,6],coralia:[0,3,4,6],correct:[2,6],correctli:[2,6],correl:0,correspond:6,cost:[0,2,6],could:6,count:3,creat:2,criteria:0,criterion:0,crvmin:2,csv:1,current:[0,3,4,6],customis:2,d_tol:0,data:[0,3,4],datafram:[1,6],date:3,deactiv:6,debug:6,dec:0,decai:6,decreas:[0,4,6],def:6,defin:[1,6],deflat:4,delta:[1,6],delta_:4,delta_k:[0,1,4],delta_scale_new_dirn:0,demonstr:6,depend:[0,1,2,4,6],deprec:2,depth:6,deriv:[0,4,6],describ:[0,4,6],descript:[1,4,6],design:[4,6],detail:[0,3,6],detect:2,determin:[0,4,6],determinist:2,develop:[3,4],dfo:[0,1,2],dfol:[0,1,5,6],diagnost:[0,3,6],diagnostic_info:[1,6],diagon:0,dictionari:[0,6],did:[0,6],differ:[0,2,4,6],differenc:4,difficult:4,dimension:6,direct:[0,6],directli:4,directori:[5,6],disciplin:4,displai:6,distanc:1,divid:2,do_geom_step:0,do_log:6,do_safety_step:0,doctor:3,document:[5,6],doe:[4,6],doi:2,doing:4,don:2,download:5,dure:[0,2],dykstra:3,dynam:3,each:[0,1,4,6],easi:[5,6],easy_instal:5,effect:0,either:6,empti:6,enabl:2,encount:0,end:0,enough:[0,6],ensur:2,entri:[0,6],epsrc:3,equal:1,equat:3,equival:6,error:[0,1,4,6],estim:[3,4],eta1:0,eta2:0,eta_1:0,eta_2:0,etc:[0,1],eval:6,evalu:[0,1,2,3,4],even:4,everi:[4,6],exactli:[1,6],exampl:[3,4,5],exclud:0,exist:4,exit:[2,6],exit_false_success_warn:6,exit_input_error:6,exit_linalg_error:6,exit_maxfun_warn:6,exit_slow_warn:6,exit_success:6,exit_tr_increase_error:6,exit_tr_increase_warn:6,exp:6,expect:6,expens:[0,1,4],experi:4,explain:1,exponenti:6,extend:6,extra:[0,2,6],factor:0,fals:[0,6],far:[1,6],fast:5,faster:[2,6],feasibl:[2,3,6],featur:3,feb:3,februari:[],fewest:4,fiala:[0,3,4,6],figur:6,file:[0,1,5,6],filemod:6,filenam:6,find:[3,4,6],finish:6,finit:[2,4,6],first:6,fit:[0,3],fix:[0,2,6],flag:[0,6],flexibl:[0,3,4,6],floor:0,focus:3,follow:[5,6],form:4,format:6,formul:4,fortran:[2,5],found:[0,1,6],framework:6,free:[0,4,6],frobeniu:1,from:[1,2,4,5,6],full:[0,2,3,6],full_geom_step:0,full_rank:0,fulli:1,further:0,g_k:1,gamma:0,gamma_:0,gamma_dec:0,gamma_inc:0,gamma_inc_overlin:0,gaussian:6,gave:6,gca:6,gener:[3,6],geometri:[0,2,4],geq:0,get:[4,6],gfortran:5,git:5,github:[5,6],give:[0,6],given:[0,3,4,6],gnu:3,good:[4,6],gracefulli:0,grad:6,gradient:1,grid:6,group:3,grow:3,guarante:4,had:1,hand:[2,4,5],handl:[2,3],happen:4,hard:0,has:[0,1,2,3,4,6],have:[0,4,5,6],help:6,here:6,hessian:2,high:6,higher:5,histori:[0,3],history_for_slow:0,home:5,how:[0,1,3,5],howev:[4,6],htm:6,html:[5,6],http:[5,6],idea:4,imlug:6,imlug_genstatexpls_sect004:6,impact:[2,6],implement:6,imposs:4,impract:0,improv:[0,2,3,4,6],inaccur:4,inc:0,includ:[0,1,6],increas:[0,6],increase_ndirs_initial_amt:0,increase_npt:0,increase_npt_amt:0,increase_num_extra_steps_with_restart:0,indic:6,industri:3,infinit:4,info:[1,6],inform:[3,4,6],infti:6,init:0,initi:[2,3,6],initialis:[2,6],input:[0,2,3,4,6],inspect:0,instal:[2,3],instanc:[0,4],instead:[4,5,6],integ:6,interest:[3,4],interfac:6,intermedi:0,intern:[0,4,6],interpol:[2,3,4,6],interpolation_change_j_norm:1,interpolation_condition_numb:1,interpolation_error:1,interpolation_total_residu:1,intersect:[3,4,6],introduc:0,invers:2,involv:[0,4],iter:[0,2,3,6],iter_this_run:1,iter_typ:1,iters_tot:1,its:[0,6],j_k:[0,1],jacobian:[0,1,2,6],jan:[0,3,4,6],jun:3,june:[],just:2,keep:4,known:4,l015803:3,label:6,lambda:[0,1],larg:[0,4],larger:0,largest:0,last:[0,1],lastli:6,latest:5,ldot:4,least:4,least_squar:6,left:4,legend:6,len:[0,6],length:0,leq:[0,3,4,6],less:0,let:6,level:[0,5,6],librari:4,licens:3,lie:6,like:[4,6],linalg:[0,6],linalgerror:0,lindon:[0,3,4,6],line:[0,6],linear:[0,1,4,6],link:2,linspac:6,list:[2,6],loc:6,local:[3,6],locat:5,log:[1,2,3,6],longer:2,lower:[0,1,6],lsqcurvefit:6,m_k:4,magnitud:[0,6],mai:[1,3,4,6],main:[4,6],maintain:4,major:4,make:[0,2,4,5,6],manag:3,mani:[0,2,3,4,6],manual:3,marteau:[0,3,4,6],math:6,mathbb:[3,4,6],mathemat:[0,3,4,6],mathrm:4,mathwork:6,matplotlib:6,matrix:[1,3,6],matrix_rank:0,max:6,max_distance_xk:1,max_fake_successful_step:0,max_it:0,max_npt:0,max_slow_it:0,max_unsuccessful_restart:0,maxfun:[0,6],maximum:[0,1,6],mean:[1,4],measur:[0,4],messag:6,method:[0,2,4],min:6,min_:[3,4,6],min_chgj_slop:0,min_correl:0,min_sing_v:0,minim:[2,4],minimum:[0,6],minor:2,model:[2,3,4,6],modifi:6,modul:6,momentum:0,momentum_extra_step:0,mont:4,more:[0,3,4],moreov:[],most:[0,1,4,6],move:[0,4,6],move_xk:0,msg:6,multipl:[2,3,4,6],multiplicative_noise_level:0,must:6,myfil:[1,6],n_to_print_whole_x_vector:0,nag:3,nan:[0,2],navig:5,ndirs_initi:0,necessari:2,need:[4,6],never:[3,6],next:6,nfev:6,nois:[3,4,6],noisi:[0,3,4],non:[3,6],nonconvex:4,none:[0,6],nonlinear:3,nonlinear_system:6,nonzero:0,nor:4,norm:[1,6],norm_gk:1,norm_sk:1,normal:6,note:[5,6],novemb:3,now:[0,6],npt:[0,1,6],nrestart:6,nrun:[1,6],nsampl:[1,6],num_extra_step:0,num_geom_step:0,num_new_dirns_each_it:0,number:[0,1,4,6],numer:3,numericalalgorithmsgroup:5,numpi:[0,2,5,6],obj:6,object:[1,2,3,4],objfun:[0,1,2,6],objfun_has_nois:[0,6],obs:4,observ:[4,6],occur:6,oct:3,octob:[],often:4,older:5,one:[0,1,4,5,6],onli:[0,1,2,4,6],onto:6,oper:2,oppos:0,opposit:0,opt:6,optim:[0,1,4,6],option:[0,2,3,4,5],order:6,org:5,origin:6,orthogon:0,other:0,otherwis:[0,4],our:[3,4,6],out:6,output:[1,2,3,4],outsid:6,over:[0,6],overdetermin:4,overflow:2,overflowerror:0,overlin:0,overrid:0,overridden:6,overview:[3,6],packag:[2,3,5],page:6,panda:[1,5,6],paper:[0,3,4,6],param1:6,param2:6,paramet:[2,3],part:[2,6],partial:6,particularli:[4,6],pass:[2,6],past:0,pball:6,pbox:6,per:[0,1,2,6],perform:[0,2,4,6],perturb:0,perturb_trust_region_step:0,phase:[0,6],physic:4,piec:[0,1],pip:3,pleas:3,plot:6,plt:6,point:[1,2,3,4,6],pois:1,poised:[0,1],popul:1,posisbl:0,possibl:[4,6],post:0,practic:6,precondit:0,predict:[1,4],prediction_error:6,prefer:4,preprint:[0,3,4,6],present:5,preserv:0,previou:[0,6],previous:1,print:[0,2,6],print_funct:6,print_progress:6,privat:5,privileg:5,probabl:4,problem:[0,1,2,3,4,6],proccess:4,process:[0,4],produc:[4,6],progress:[3,6],prohibit:4,project:6,provid:[3,4,5,6],pull:5,pure:5,purpos:6,put:4,pydata:5,pyplot:6,python:[0,5,6],quad:[3,4,6],quantit:4,quantiti:4,quit:0,quit_on_noise_level:0,r_1:[0,4,6],r_2:4,r_i:[0,4,6],r_m:[0,4,6],r_tol:0,radii:0,radiu:[0,1,2,4,6],random:[0,2,6],random_directions_make_orthogon:0,random_initial_direct:0,rang:6,rank:3,rate:0,rather:2,ratio:[0,1],reach:[0,6],recommend:0,recycl:0,reduc:[0,2],reduce_delta:0,reduct:1,refer:3,regim:2,region:[2,3,4,5,6],regress:3,regular:0,regularli:4,rel:0,rel_tol:0,relationship:4,relax:[3,6],releas:[2,3],remov:[2,5],repeat:4,replac:6,reproduc:[2,6],request:6,requir:[0,3,4,6],rerun:5,reset:0,reset_delta:0,reset_rho:0,resid:6,residu:[1,4,6],respect:[0,6],restart:[1,2,3,6],result:[0,1,2,4,6],retriev:2,rho:[1,6],rho_:0,rho_k:[0,1],rhobeg:6,rhoend:6,rhoend_scal:0,right:[2,6],risk:0,robert:[0,3,4,6],robust:[0,3,4,6],root:5,rosenbrock:6,rosenbrock_noisi:6,rounding_error_const:0,roundoff:0,row:1,run:[0,5,6],run_in_parallel:0,runtim:2,runtimewarn:6,s_k:[0,1,4],safeti:[0,1,2],safety_step_thresh:0,sai:4,same:[0,3,4,6],sampl:6,sas:6,satisfi:[4,6],save:[0,1,6],save_diagnostic_info:[0,1],save_poised:[0,1],save_rk:[0,1],save_xk:[0,1],saw:1,scale:[0,2,6],scale_factor:0,scale_factor_for_quit:0,scaling_within_bound:6,scipi:[4,5,6],screen:0,script:6,search:[0,2,4],section:[0,1,2,6],see:[1,5,6],seed:[2,6],sens:4,sensibl:6,separ:6,set:[1,2,3,4,6],set_xlabel:6,set_ylabel:6,setup:[0,5],sever:[0,4,6],shape:6,shift:[0,6],should:[0,5,6],show:6,side:[2,4],similar:4,similarli:4,simpl:[2,3,5],simpli:4,simul:4,sin:4,sinc:[0,1],singular:[0,6],site:5,situat:4,size:[4,6],slope:0,slow:[1,3,6],slow_it:1,small:[3,4,6],smaller:0,smallest:[0,1],smooth:0,soft:0,softwar:[0,3,4,5,6],soln:[1,6],solut:[2,3,4,5,6],solv:[0,1,3],solver:[0,2,3,4,6],some:[0,4,5,6],someth:[],sourc:5,space:[0,2,4],specifi:[0,6],squar:[1,4],stai:4,stand:3,start:[2,4,6],statu:6,step:[0,1,2,4,6],still:0,stochast:[3,6],stop:[0,2],store:[0,2],str:6,string:6,strongli:4,structur:3,subject:6,subproblem:[2,4,5,6],success:[0,1,6],successfulli:6,sudo:5,suffici:6,suitabl:4,sum:[1,4],sum_:[3,4,6],supervis:3,support:[3,5,6],suppos:[4,6],sure:[4,5],svd_max_jac_cond:0,svd_scale_factor:0,system:[0,1,3,5],t_i:6,tabl:6,take:[0,4,6],taken:6,task:4,tdata:6,technic:6,techniqu:4,termin:[1,3,6],test:[3,6],text:[0,1,3,4,6],than:[0,2,6],thei:[0,4,6],them:[2,4,6],therefor:6,thi:[0,1,2,3,4,5,6],thresh_for_slow:0,threshold:0,through:[0,2],throw_error_on_nan:0,time:[0,1,4,6],to_csv:1,toler:0,too:6,top:5,total:[1,6],tr_radiu:0,train:3,transact:[0,3,4,6],trend:0,trial:4,triangular:2,trigger:0,troubl:6,trust:[2,3,4,5,6],trustregion:[2,5],tupl:6,turn:1,two:[0,4,6],type:[1,4],typic:4,unabl:6,unconstrain:2,under:3,underdetermin:4,uninstal:3,unknown:4,unless:6,unpack:5,unsuccess:0,updat:2,upgrad:5,upper:[2,6],usag:[3,6],use:[0,1,2,3,5],use_full_rank_interp:0,use_old_rk:0,use_restart:0,use_soft_restart:0,used:[0,1,4,6],useful:[0,4,6],user:[0,3,4,5,6],user_param:[0,1,6],uses:0,using:[0,2,3,4,6],usual:0,val1:6,val2:6,valu:[1,2,3,4,6],vari:0,variabl:6,vast:4,vdot:4,vector:[0,1,4,6],veri:[0,4,6],version:[0,3,5],via:6,viewer:6,visibl:6,wai:[0,4,6],want:[5,6],warn:[2,6],well:4,what:[0,1],when:[0,2,3,6],where:[0,4,6],whether:[0,4,6],which:[0,1,2,3,4,5,6],whole:2,why:6,wish:[3,4,6],within:[0,2,6],without:[0,3],work:5,wors:6,write:6,written:[5,6],www:5,x_0:[0,6],x_1:[4,6],x_2:[4,6],x_b:0,x_j:6,x_k:[0,4],x_n:4,xmin:6,xtol:6,y_1:4,y_i:[4,6],y_k:[0,1],y_m:4,y_t:0,ydata:6,yet:0,you:[3,4,5,6],your:[4,5,6],zenodo:2,zero:[0,2]},titles:["Advanced Usage","Diagnostic Information","Version History","DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization","Overview","Installing DFO-LS","Using DFO-LS"],titleterms:{Adding:6,Using:6,acknowledg:3,advanc:0,algorithm:[0,1,4],apr:2,arbitrari:6,argument:6,bound:6,check:0,constraint:6,convex:6,count:1,current:1,data:6,deriv:3,detail:4,dfo:[3,4,5,6],diagnost:1,dykstra:0,dynam:0,equat:[4,6],estim:6,evalu:6,exampl:6,feb:2,fit:[4,6],free:3,gener:0,grow:0,handl:6,histori:2,how:6,inform:[0,1],initi:0,instal:5,interpol:[0,1],iter:1,jan:2,jun:2,least:[3,6],log:0,manag:0,manual:5,matrix:0,minim:[3,6],model:[0,1],more:6,multipl:0,nois:0,noisi:6,nonlinear:[4,6],object:[0,6],oct:2,optim:3,option:6,output:[0,6],overview:4,paramet:[0,4,6],pip:5,point:0,progress:[0,1],rank:0,refer:[0,4,6],region:[0,1],regress:0,requir:5,restart:0,set:0,simpl:6,slow:0,small:0,solv:[4,6],squar:[3,6],stochast:0,system:[4,6],termin:0,test:5,trust:[0,1],uninstal:5,usag:0,use:[4,6],using:5,valu:0,version:2,when:4}}) \ No newline at end of file diff --git a/docs/build/html/userguide.html b/docs/build/html/userguide.html index 5b40502..4cfe6d0 100644 --- a/docs/build/html/userguide.html +++ b/docs/build/html/userguide.html @@ -5,10 +5,11 @@ - + + - Using DFO-LS — DFO-LS v1.2.3 documentation + Using DFO-LS — DFO-LS v1.3.0 documentation @@ -61,7 +62,7 @@
              - 1.2.3 + 1.3.0
              @@ -85,7 +86,7 @@ -

              Contents:

              +

              Contents:

            +

            How to use DFO-LS

            The main interface to DFO-LS is via the function solve

            @@ -211,6 +213,7 @@

            How to use DFO-LSsoln.EXIT_MAXFUN_WARNING - maximum allowed objective evaluations reached. This is the most likely return value when using multiple restarts.

          • soln.EXIT_SLOW_WARNING - maximum number of slow iterations reached.

          • soln.EXIT_FALSE_SUCCESS_WARNING - DFO-LS reached the maximum number of restarts which decreased the objective, but to a worse value than was found in a previous run.

          • +
          • soln.EXIT_TR_INCREASE_WARNING - model increase when solving the trust region subproblem with multiple arbitrary constraints.

          • soln.EXIT_INPUT_ERROR - error in the inputs.

          • soln.EXIT_TR_INCREASE_ERROR - error occurred when solving the trust region subproblem.

          • soln.EXIT_LINALG_ERROR - linear algebra error, e.g. the interpolation points produced a singular linear system.

          • @@ -222,8 +225,8 @@

            How to use DFO-LS +

            +

            Optional Arguments

            The solve function has several optional arguments which the user may provide:

            @@ -239,6 +242,7 @@

            Optional Arguments
          • args - a tuple of extra arguments passed to the objective function.

          • bounds - a tuple (lower, upper) with the vectors \(a\) and \(b\) of lower and upper bounds on \(x\) (default is \(a_i=-10^{20}\) and \(b_i=10^{20}\)). To set bounds for either lower or upper, but not both, pass a tuple (lower, None) or (None, upper).

          • +
          • projections - a list [f1,f2,...,fn] of functions that each take as input a point x and return a new point y. The new point y should be given by the projection of x onto a closed convex set. The intersection of all sets corresponding to a function must be non-empty.

          • npt - the number of interpolation points to use (default is len(x0)+1). If using restarts, this is the number of points to use in the first run of the solver, before any restarts (and may be optionally increased via settings in user_params).

          • rhobeg - the initial value of the trust region radius (default is \(0.1\max(\|x_0\|_{\infty}, 1)\), or 0.1 if scaling_within_bounds).

          • rhoend - minimum allowed value of trust region radius, which determines when a successful termination occurs (default is \(10^{-8}\)).

          • @@ -252,8 +256,8 @@

            Optional Argumentsscaling_within_bounds flag is designed to provide an easy way to achieve this, if you have set the bounds lower and upper.

            -

            -
            + +

            A Simple Example

            Suppose we wish to minimize the Rosenbrock test function:

            @@ -299,10 +303,10 @@

            A Simple Exampleexamples directory on the DFO-LS Github page.

            -

            -
            +
            +

            Adding Bounds and More Output

            -

            We can extend the above script to add constraints. To do this, we can add the lines

            +

            We can extend the above script to add constraints. To add bound constraints alone, we can add the lines

            # Define bound constraints (lower <= x <= upper)
             lower = np.array([-10.0, -10.0])
            @@ -344,7 +348,7 @@ 

            Adding Bounds and More Outputobjfun:

            +

            And for the simple bounds example we can now see each evaluation of objfun:

            Function eval 1 at point 1 has f = 39.65 at x = [-1.2   0.85]
             Initialising (coordinate directions)
            @@ -377,8 +381,97 @@ 

            Adding Bounds and More Output +

            Handling Arbitrary Convex Constraints

            +

            DFO-LS can also handle more general constraints where they can be written as the intersection of finitely many convex sets. For example, the below code +minimizes the Rosenbrock function subject to a constraint set given by the intersection of two convex sets. Note the intersection of the user-provided convex +sets must be non-empty.

            +
            +
            '''
            +DFO-LS example: minimize the Rosenbrock function with arbitrary convex constraints
            +
            +This example defines two functions pball(x) and pbox(x) that project onto ball and
            +box constraint sets respectively. It then passes both these functions to the DFO-LS
            +solver so that it can find a constrained minimizer to the Rosenbrock function.
            +Such a minimizer must lie in the intersection of constraint sets corresponding to
            +projection functions pball(x) and pbox(x). The description of the problem is as follows:
            +
            +    min rosenbrock(x)
            +    s.t.
            +        -2 <= x[0] <= 1.1,
            +        1.1 <= x[1] <= 3,
            +        norm(x-c) <= 0.4
            +
            +where c = [0.7, 1.5] is the centre of the ball.
            +'''
            +from __future__ import print_function
            +import numpy as np
            +import dfols
            +
            +# Define the objective function
            +def rosenbrock(x):
            +    return np.array([10.0 * (x[1] - x[0] ** 2), 1.0 - x[0]])
            +
            +# Define the starting point
            +x0 = np.array([-1.2, 1])
            +
            +'''
            +Define ball projection function
            +Projects the input x onto a ball with
            +centre point (0.7,1.5) and radius 0.4.
            +'''
            +def pball(x):
            +    c = np.array([0.7,1.5]) # ball centre
            +    r = 0.4 # ball radius
            +    return c + (r/np.max([np.linalg.norm(x-c),r]))*(x-c)
            +
            +'''
            +Define box projection function
            +Projects the input x onto a box
            +such that -2 <= x[0] <= 0.9 and
            +1.1 <= x[1] <= 3.
            +
            +Note: One could equivalently add bound
            +constraints as a separate input to the solver
            +instead.
            +'''
            +def pbox(x):
            +    l = np.array([-2, 1.1]) # lower bound
            +    u = np.array([0.9, 3]) # upper bound
            +    return np.minimum(np.maximum(x,l), u)
            +
            +# For optional extra output details
            +import logging
            +logging.basicConfig(level=logging.DEBUG, format='%(message)s')
            +
            +# Call DFO-LS
            +soln = dfols.solve(rosenbrock, x0, projections=[pball,pbox])
            +
            +# Display output
            +print(soln)
            +
            +
            +
            +

            Note that for bound constraints one can choose to either implement them by defining a projection function as above, or by passing the bounds as input like in the example from the section on adding bound constraints.

            +

            DFO-LS correctly finds the solution to this constrained problem too. Note that we get a warning because the step computed in the trust region subproblem +gave an increase in the model. This is common in the case where multiple constraints are active at the optimal point.

            +
            +
            ****** DFO-LS Results ******
            +Solution xmin = [0.9        1.15359245]
            +Residual vector = [3.43592448 0.1       ]
            +Objective value f(xmin) = 11.81557703
            +Needed 10 objective evaluations (at 10 points)
            +Approximate Jacobian = [[-1.79826221e+01  1.00004412e+01]
            + [-1.00000000e+00 -1.81976605e-15]]
            +Exit flag = 5
            +Warning (trust region increase): Either multiple constraints are active or trust region step gave model increase
            +****************************
            +
            -
            +
            +

            +

            Example: Noisy Objective Evaluation

            As described in Overview, derivative-free algorithms such as DFO-LS are particularly useful when objfun has noise. Let’s modify the previous example to include random noise in our objective evaluation, and compare it to a derivative-based solver:

            @@ -478,8 +571,8 @@

            Example: Noisy Objective Evaluation +

            +

            Example: Parameter Estimation/Data Fitting

            Next, we show a short example of using DFO-LS to solve a parameter estimation problem (taken from here). Given some observations \((t_i,y_i)\), we wish to calibrate parameters \(x=(x_1,x_2)\) in the exponential decay model

            @@ -562,8 +655,8 @@

            Example: Parameter Estimation/Data Fitting +

            +

            Example: Solving a Nonlinear System of Equations

            Lastly, we give an example of using DFO-LS to solve a nonlinear system of equations (taken from here). We wish to solve the following set of equations

            @@ -615,16 +708,16 @@

            Example: Solving a Nonlinear System of Equations +

            +

            References

            CFMR2018

            Coralia Cartis, Jan Fiala, Benjamin Marteau and Lindon Roberts, Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers, ACM Transactions on Mathematical Software, 45:3 (2019), pp. 32:1-32:41 [preprint]

            -
            -
            + +
            diff --git a/docs/build/latex/DFOLS.aux b/docs/build/latex/DFOLS.aux index a3dc2be..f97de9a 100755 --- a/docs/build/latex/DFOLS.aux +++ b/docs/build/latex/DFOLS.aux @@ -1,5 +1,7 @@ \relax \providecommand\hyper@newdestlabel[2]{} +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} \providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} \HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined \global\let\oldcontentsline\contentsline @@ -18,134 +20,142 @@ \providecommand\HyField@AuxAddToCoFields[2]{} \babel@aux{english}{} \newlabel{index::doc}{{}{1}{}{section*.2}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {1}Installing DFO\sphinxhyphen {}LS}{3}{chapter.1}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Installing DFO\sphinxhyphen {}LS}{3}{chapter.1}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{install:installing-dfo-ls}{{1}{3}{Installing DFO\sphinxhyphen {}LS}{chapter.1}{}} \newlabel{install::doc}{{1}{3}{Installing DFO\sphinxhyphen {}LS}{chapter.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {1.1}Requirements}{3}{section.1.1}} +\@writefile{toc}{\contentsline {section}{\numberline {1.1}Requirements}{3}{section.1.1}\protected@file@percent } \newlabel{install:requirements}{{1.1}{3}{Requirements}{section.1.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {1.2}Installation using pip}{3}{section.1.2}} +\@writefile{toc}{\contentsline {section}{\numberline {1.2}Installation using pip}{3}{section.1.2}\protected@file@percent } \newlabel{install:installation-using-pip}{{1.2}{3}{Installation using pip}{section.1.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {1.3}Manual installation}{4}{section.1.3}} +\@writefile{toc}{\contentsline {section}{\numberline {1.3}Manual installation}{4}{section.1.3}\protected@file@percent } \newlabel{install:manual-installation}{{1.3}{4}{Manual installation}{section.1.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {1.4}Testing}{4}{section.1.4}} +\@writefile{toc}{\contentsline {section}{\numberline {1.4}Testing}{4}{section.1.4}\protected@file@percent } \newlabel{install:testing}{{1.4}{4}{Testing}{section.1.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {1.5}Uninstallation}{4}{section.1.5}} +\@writefile{toc}{\contentsline {section}{\numberline {1.5}Uninstallation}{4}{section.1.5}\protected@file@percent } \newlabel{install:uninstallation}{{1.5}{4}{Uninstallation}{section.1.5}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {2}Overview}{5}{chapter.2}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Overview}{5}{chapter.2}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{info:overview}{{2}{5}{Overview}{chapter.2}{}} \newlabel{info::doc}{{2}{5}{Overview}{chapter.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {2.1}When to use DFO\sphinxhyphen {}LS}{5}{section.2.1}} +\@writefile{toc}{\contentsline {section}{\numberline {2.1}When to use DFO\sphinxhyphen {}LS}{5}{section.2.1}\protected@file@percent } \newlabel{info:when-to-use-dfo-ls}{{2.1}{5}{When to use DFO\sphinxhyphen {}LS}{section.2.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {2.2}Parameter Fitting}{5}{section.2.2}} +\@writefile{toc}{\contentsline {section}{\numberline {2.2}Parameter Fitting}{5}{section.2.2}\protected@file@percent } \newlabel{info:parameter-fitting}{{2.2}{5}{Parameter Fitting}{section.2.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {2.3}Solving Nonlinear Systems of Equations}{6}{section.2.3}} +\@writefile{toc}{\contentsline {section}{\numberline {2.3}Solving Nonlinear Systems of Equations}{6}{section.2.3}\protected@file@percent } \newlabel{info:solving-nonlinear-systems-of-equations}{{2.3}{6}{Solving Nonlinear Systems of Equations}{section.2.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {2.4}Details of the DFO\sphinxhyphen {}LS Algorithm}{6}{section.2.4}} -\newlabel{info:details-of-the-dfo-ls-algorithm}{{2.4}{6}{Details of the DFO\sphinxhyphen {}LS Algorithm}{section.2.4}{}} \citation{userguide:cfmr2018} -\@writefile{toc}{\contentsline {section}{\numberline {2.5}References}{7}{section.2.5}} +\@writefile{toc}{\contentsline {section}{\numberline {2.4}Details of the DFO\sphinxhyphen {}LS Algorithm}{7}{section.2.4}\protected@file@percent } +\newlabel{info:details-of-the-dfo-ls-algorithm}{{2.4}{7}{Details of the DFO\sphinxhyphen {}LS Algorithm}{section.2.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {2.5}References}{7}{section.2.5}\protected@file@percent } \newlabel{info:references}{{2.5}{7}{References}{section.2.5}{}} \citation{userguide:cfmr2018} -\@writefile{toc}{\contentsline {chapter}{\numberline {3}Using DFO\sphinxhyphen {}LS}{9}{chapter.3}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Using DFO\sphinxhyphen {}LS}{9}{chapter.3}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} \newlabel{userguide:using-dfo-ls}{{3}{9}{Using DFO\sphinxhyphen {}LS}{chapter.3}{}} \newlabel{userguide::doc}{{3}{9}{Using DFO\sphinxhyphen {}LS}{chapter.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.1}Nonlinear Least\sphinxhyphen {}Squares Minimization}{9}{section.3.1}} +\@writefile{toc}{\contentsline {section}{\numberline {3.1}Nonlinear Least\sphinxhyphen {}Squares Minimization}{9}{section.3.1}\protected@file@percent } \newlabel{userguide:nonlinear-least-squares-minimization}{{3.1}{9}{Nonlinear Least\sphinxhyphen {}Squares Minimization}{section.3.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.2}How to use DFO\sphinxhyphen {}LS}{9}{section.3.2}} +\@writefile{toc}{\contentsline {section}{\numberline {3.2}How to use DFO\sphinxhyphen {}LS}{9}{section.3.2}\protected@file@percent } \newlabel{userguide:how-to-use-dfo-ls}{{3.2}{9}{How to use DFO\sphinxhyphen {}LS}{section.3.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.3}Optional Arguments}{10}{section.3.3}} +\@writefile{toc}{\contentsline {section}{\numberline {3.3}Optional Arguments}{10}{section.3.3}\protected@file@percent } \newlabel{userguide:optional-arguments}{{3.3}{10}{Optional Arguments}{section.3.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.4}A Simple Example}{11}{section.3.4}} +\@writefile{toc}{\contentsline {section}{\numberline {3.4}A Simple Example}{11}{section.3.4}\protected@file@percent } \newlabel{userguide:a-simple-example}{{3.4}{11}{A Simple Example}{section.3.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.5}Adding Bounds and More Output}{12}{section.3.5}} +\@writefile{toc}{\contentsline {section}{\numberline {3.5}Adding Bounds and More Output}{12}{section.3.5}\protected@file@percent } \newlabel{userguide:adding-bounds-and-more-output}{{3.5}{12}{Adding Bounds and More Output}{section.3.5}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.6}Example: Noisy Objective Evaluation}{13}{section.3.6}} -\newlabel{userguide:example-noisy-objective-evaluation}{{3.6}{13}{Example: Noisy Objective Evaluation}{section.3.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.7}Example: Parameter Estimation/Data Fitting}{15}{section.3.7}} -\newlabel{userguide:example-parameter-estimation-data-fitting}{{3.7}{15}{Example: Parameter Estimation/Data Fitting}{section.3.7}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.8}Example: Solving a Nonlinear System of Equations}{17}{section.3.8}} -\newlabel{userguide:example-solving-a-nonlinear-system-of-equations}{{3.8}{17}{Example: Solving a Nonlinear System of Equations}{section.3.8}{}} -\@writefile{toc}{\contentsline {section}{\numberline {3.9}References}{18}{section.3.9}} -\newlabel{userguide:references}{{3.9}{18}{References}{section.3.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.6}Handling Arbitrary Convex Constraints}{14}{section.3.6}\protected@file@percent } +\newlabel{userguide:handling-arbitrary-convex-constraints}{{3.6}{14}{Handling Arbitrary Convex Constraints}{section.3.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.7}Example: Noisy Objective Evaluation}{15}{section.3.7}\protected@file@percent } +\newlabel{userguide:example-noisy-objective-evaluation}{{3.7}{15}{Example: Noisy Objective Evaluation}{section.3.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.8}Example: Parameter Estimation/Data Fitting}{17}{section.3.8}\protected@file@percent } +\newlabel{userguide:example-parameter-estimation-data-fitting}{{3.8}{17}{Example: Parameter Estimation/Data Fitting}{section.3.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.9}Example: Solving a Nonlinear System of Equations}{19}{section.3.9}\protected@file@percent } +\newlabel{userguide:example-solving-a-nonlinear-system-of-equations}{{3.9}{19}{Example: Solving a Nonlinear System of Equations}{section.3.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {3.10}References}{20}{section.3.10}\protected@file@percent } +\newlabel{userguide:references}{{3.10}{20}{References}{section.3.10}{}} \citation{userguide:cfmr2018} -\@writefile{toc}{\contentsline {chapter}{\numberline {4}Advanced Usage}{19}{chapter.4}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Advanced Usage}{21}{chapter.4}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{advanced:advanced-usage}{{4}{19}{Advanced Usage}{chapter.4}{}} -\newlabel{advanced::doc}{{4}{19}{Advanced Usage}{chapter.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.1}General Algorithm Parameters}{19}{section.4.1}} -\newlabel{advanced:general-algorithm-parameters}{{4.1}{19}{General Algorithm Parameters}{section.4.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.2}Logging and Output}{19}{section.4.2}} -\newlabel{advanced:logging-and-output}{{4.2}{19}{Logging and Output}{section.4.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.3}Initialization of Points}{20}{section.4.3}} -\newlabel{advanced:initialization-of-points}{{4.3}{20}{Initialization of Points}{section.4.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.4}Trust Region Management}{20}{section.4.4}} -\newlabel{advanced:trust-region-management}{{4.4}{20}{Trust Region Management}{section.4.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.5}Termination on Small Objective Value}{20}{section.4.5}} -\newlabel{advanced:termination-on-small-objective-value}{{4.5}{20}{Termination on Small Objective Value}{section.4.5}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.6}Termination on Slow Progress}{20}{section.4.6}} -\newlabel{advanced:termination-on-slow-progress}{{4.6}{20}{Termination on Slow Progress}{section.4.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.7}Stochastic Noise Information}{21}{section.4.7}} -\newlabel{advanced:stochastic-noise-information}{{4.7}{21}{Stochastic Noise Information}{section.4.7}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.8}Interpolation Management}{21}{section.4.8}} -\newlabel{advanced:interpolation-management}{{4.8}{21}{Interpolation Management}{section.4.8}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.9}Regression Model Management}{21}{section.4.9}} -\newlabel{advanced:regression-model-management}{{4.9}{21}{Regression Model Management}{section.4.9}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.10}Multiple Restarts}{21}{section.4.10}} -\newlabel{advanced:multiple-restarts}{{4.10}{21}{Multiple Restarts}{section.4.10}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.11}Dynamically Growing Initial Set}{22}{section.4.11}} -\newlabel{advanced:dynamically-growing-initial-set}{{4.11}{22}{Dynamically Growing Initial Set}{section.4.11}{}} -\@writefile{toc}{\contentsline {section}{\numberline {4.12}References}{23}{section.4.12}} -\newlabel{advanced:references}{{4.12}{23}{References}{section.4.12}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {5}Diagnostic Information}{25}{chapter.5}} +\newlabel{advanced:advanced-usage}{{4}{21}{Advanced Usage}{chapter.4}{}} +\newlabel{advanced::doc}{{4}{21}{Advanced Usage}{chapter.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.1}General Algorithm Parameters}{21}{section.4.1}\protected@file@percent } +\newlabel{advanced:general-algorithm-parameters}{{4.1}{21}{General Algorithm Parameters}{section.4.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.2}Logging and Output}{21}{section.4.2}\protected@file@percent } +\newlabel{advanced:logging-and-output}{{4.2}{21}{Logging and Output}{section.4.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.3}Initialization of Points}{22}{section.4.3}\protected@file@percent } +\newlabel{advanced:initialization-of-points}{{4.3}{22}{Initialization of Points}{section.4.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.4}Trust Region Management}{22}{section.4.4}\protected@file@percent } +\newlabel{advanced:trust-region-management}{{4.4}{22}{Trust Region Management}{section.4.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.5}Termination on Small Objective Value}{22}{section.4.5}\protected@file@percent } +\newlabel{advanced:termination-on-small-objective-value}{{4.5}{22}{Termination on Small Objective Value}{section.4.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.6}Termination on Slow Progress}{22}{section.4.6}\protected@file@percent } +\newlabel{advanced:termination-on-slow-progress}{{4.6}{22}{Termination on Slow Progress}{section.4.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.7}Stochastic Noise Information}{23}{section.4.7}\protected@file@percent } +\newlabel{advanced:stochastic-noise-information}{{4.7}{23}{Stochastic Noise Information}{section.4.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.8}Interpolation Management}{23}{section.4.8}\protected@file@percent } +\newlabel{advanced:interpolation-management}{{4.8}{23}{Interpolation Management}{section.4.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.9}Regression Model Management}{23}{section.4.9}\protected@file@percent } +\newlabel{advanced:regression-model-management}{{4.9}{23}{Regression Model Management}{section.4.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.10}Multiple Restarts}{23}{section.4.10}\protected@file@percent } +\newlabel{advanced:multiple-restarts}{{4.10}{23}{Multiple Restarts}{section.4.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.11}Dynamically Growing Initial Set}{24}{section.4.11}\protected@file@percent } +\newlabel{advanced:dynamically-growing-initial-set}{{4.11}{24}{Dynamically Growing Initial Set}{section.4.11}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.12}Dykstra’s Algorithm}{25}{section.4.12}\protected@file@percent } +\newlabel{advanced:dykstra-s-algorithm}{{4.12}{25}{Dykstra’s Algorithm}{section.4.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.13}Checking Matrix Rank}{25}{section.4.13}\protected@file@percent } +\newlabel{advanced:checking-matrix-rank}{{4.13}{25}{Checking Matrix Rank}{section.4.13}{}} +\@writefile{toc}{\contentsline {section}{\numberline {4.14}References}{25}{section.4.14}\protected@file@percent } +\newlabel{advanced:references}{{4.14}{25}{References}{section.4.14}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}Diagnostic Information}{27}{chapter.5}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{diagnostic:diagnostic-information}{{5}{25}{Diagnostic Information}{chapter.5}{}} -\newlabel{diagnostic::doc}{{5}{25}{Diagnostic Information}{chapter.5}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.1}Current Iterate}{25}{section.5.1}} -\newlabel{diagnostic:current-iterate}{{5.1}{25}{Current Iterate}{section.5.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.2}Trust Region}{25}{section.5.2}} -\newlabel{diagnostic:trust-region}{{5.2}{25}{Trust Region}{section.5.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.3}Model Interpolation}{26}{section.5.3}} -\newlabel{diagnostic:model-interpolation}{{5.3}{26}{Model Interpolation}{section.5.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.4}Iteration Count}{26}{section.5.4}} -\newlabel{diagnostic:iteration-count}{{5.4}{26}{Iteration Count}{section.5.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {5.5}Algorithm Progress}{26}{section.5.5}} -\newlabel{diagnostic:algorithm-progress}{{5.5}{26}{Algorithm Progress}{section.5.5}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {6}Version History}{27}{chapter.6}} +\newlabel{diagnostic:diagnostic-information}{{5}{27}{Diagnostic Information}{chapter.5}{}} +\newlabel{diagnostic::doc}{{5}{27}{Diagnostic Information}{chapter.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.1}Current Iterate}{27}{section.5.1}\protected@file@percent } +\newlabel{diagnostic:current-iterate}{{5.1}{27}{Current Iterate}{section.5.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.2}Trust Region}{27}{section.5.2}\protected@file@percent } +\newlabel{diagnostic:trust-region}{{5.2}{27}{Trust Region}{section.5.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.3}Model Interpolation}{28}{section.5.3}\protected@file@percent } +\newlabel{diagnostic:model-interpolation}{{5.3}{28}{Model Interpolation}{section.5.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.4}Iteration Count}{28}{section.5.4}\protected@file@percent } +\newlabel{diagnostic:iteration-count}{{5.4}{28}{Iteration Count}{section.5.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {5.5}Algorithm Progress}{28}{section.5.5}\protected@file@percent } +\newlabel{diagnostic:algorithm-progress}{{5.5}{28}{Algorithm Progress}{section.5.5}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Version History}{29}{chapter.6}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{history:version-history}{{6}{27}{Version History}{chapter.6}{}} -\newlabel{history::doc}{{6}{27}{Version History}{chapter.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.1}Version 1.0 (6 Feb 2018)}{27}{section.6.1}} -\newlabel{history:version-1-0-6-feb-2018}{{6.1}{27}{Version 1.0 (6 Feb 2018)}{section.6.1}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.2}Version 1.0.1 (20 Feb 2018)}{27}{section.6.2}} -\newlabel{history:version-1-0-1-20-feb-2018}{{6.2}{27}{Version 1.0.1 (20 Feb 2018)}{section.6.2}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.3}Version 1.0.2 (20 Jun 2018)}{27}{section.6.3}} -\newlabel{history:version-1-0-2-20-jun-2018}{{6.3}{27}{Version 1.0.2 (20 Jun 2018)}{section.6.3}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.4}Version 1.1 (16 Jan 2019)}{27}{section.6.4}} -\newlabel{history:version-1-1-16-jan-2019}{{6.4}{27}{Version 1.1 (16 Jan 2019)}{section.6.4}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.5}Version 1.1.1 (5 Apr 2019)}{28}{section.6.5}} -\newlabel{history:version-1-1-1-5-apr-2019}{{6.5}{28}{Version 1.1.1 (5 Apr 2019)}{section.6.5}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.6}Version 1.2 (12 Feb 2020)}{28}{section.6.6}} -\newlabel{history:version-1-2-12-feb-2020}{{6.6}{28}{Version 1.2 (12 Feb 2020)}{section.6.6}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.7}Version 1.2.1 (13 Feb 2020)}{28}{section.6.7}} -\newlabel{history:version-1-2-1-13-feb-2020}{{6.7}{28}{Version 1.2.1 (13 Feb 2020)}{section.6.7}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.8}Version 1.2.2 (26 Feb 2021)}{28}{section.6.8}} -\newlabel{history:version-1-2-2-26-feb-2021}{{6.8}{28}{Version 1.2.2 (26 Feb 2021)}{section.6.8}{}} -\@writefile{toc}{\contentsline {section}{\numberline {6.9}Version 1.2.3 (1 Jun 2021)}{28}{section.6.9}} -\newlabel{history:version-1-2-3-1-jun-2021}{{6.9}{28}{Version 1.2.3 (1 Jun 2021)}{section.6.9}{}} -\@writefile{toc}{\contentsline {chapter}{\numberline {7}Acknowledgements}{29}{chapter.7}} +\newlabel{history:version-history}{{6}{29}{Version History}{chapter.6}{}} +\newlabel{history::doc}{{6}{29}{Version History}{chapter.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.1}Version 1.0 (6 Feb 2018)}{29}{section.6.1}\protected@file@percent } +\newlabel{history:version-1-0-6-feb-2018}{{6.1}{29}{Version 1.0 (6 Feb 2018)}{section.6.1}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.2}Version 1.0.1 (20 Feb 2018)}{29}{section.6.2}\protected@file@percent } +\newlabel{history:version-1-0-1-20-feb-2018}{{6.2}{29}{Version 1.0.1 (20 Feb 2018)}{section.6.2}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.3}Version 1.0.2 (20 Jun 2018)}{29}{section.6.3}\protected@file@percent } +\newlabel{history:version-1-0-2-20-jun-2018}{{6.3}{29}{Version 1.0.2 (20 Jun 2018)}{section.6.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.4}Version 1.1 (16 Jan 2019)}{29}{section.6.4}\protected@file@percent } +\newlabel{history:version-1-1-16-jan-2019}{{6.4}{29}{Version 1.1 (16 Jan 2019)}{section.6.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.5}Version 1.1.1 (5 Apr 2019)}{30}{section.6.5}\protected@file@percent } +\newlabel{history:version-1-1-1-5-apr-2019}{{6.5}{30}{Version 1.1.1 (5 Apr 2019)}{section.6.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.6}Version 1.2 (12 Feb 2020)}{30}{section.6.6}\protected@file@percent } +\newlabel{history:version-1-2-12-feb-2020}{{6.6}{30}{Version 1.2 (12 Feb 2020)}{section.6.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.7}Version 1.2.1 (13 Feb 2020)}{30}{section.6.7}\protected@file@percent } +\newlabel{history:version-1-2-1-13-feb-2020}{{6.7}{30}{Version 1.2.1 (13 Feb 2020)}{section.6.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.8}Version 1.2.2 (26 Feb 2021)}{30}{section.6.8}\protected@file@percent } +\newlabel{history:version-1-2-2-26-feb-2021}{{6.8}{30}{Version 1.2.2 (26 Feb 2021)}{section.6.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.9}Version 1.2.3 (1 Jun 2021)}{30}{section.6.9}\protected@file@percent } +\newlabel{history:version-1-2-3-1-jun-2021}{{6.9}{30}{Version 1.2.3 (1 Jun 2021)}{section.6.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {6.10}Version 1.3.0 (16 Oct 2021)}{30}{section.6.10}\protected@file@percent } +\newlabel{history:version-1-3-0-16-oct-2021}{{6.10}{30}{Version 1.3.0 (16 Oct 2021)}{section.6.10}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Acknowledgements}{31}{chapter.7}\protected@file@percent } \@writefile{lof}{\addvspace {10\p@ }} \@writefile{lot}{\addvspace {10\p@ }} -\newlabel{index:acknowledgements}{{7}{29}{Acknowledgements}{chapter.7}{}} +\newlabel{index:acknowledgements}{{7}{31}{Acknowledgements}{chapter.7}{}} \bibcite{info:cfmr2018}{CFMR2018} \bibcite{userguide:cfmr2018}{CFMR2018} \bibcite{advanced:cfmr2018}{CFMR2018} -\@writefile{toc}{\contentsline {chapter}{Bibliography}{31}{chapter*.3}} +\@writefile{toc}{\contentsline {chapter}{Bibliography}{33}{chapter*.3}\protected@file@percent } diff --git a/docs/build/latex/DFOLS.fdb_latexmk b/docs/build/latex/DFOLS.fdb_latexmk index c8ca9ec..2aa6f09 100755 --- a/docs/build/latex/DFOLS.fdb_latexmk +++ b/docs/build/latex/DFOLS.fdb_latexmk @@ -1,187 +1,193 @@ # Fdb version 3 -["makeindex DFOLS.idx"] 1533896586 "DFOLS.idx" "DFOLS.ind" "DFOLS" 1622530124 - "DFOLS.idx" 1622530123 0 d41d8cd98f00b204e9800998ecf8427e "" +["makeindex DFOLS.idx"] 1533896586 "DFOLS.idx" "DFOLS.ind" "DFOLS" 1636264783 + "DFOLS.idx" 1636264783 0 d41d8cd98f00b204e9800998ecf8427e "pdflatex" (generated) "DFOLS.ilg" "DFOLS.ind" -["pdflatex"] 1622530123 "DFOLS.tex" "DFOLS.pdf" "DFOLS" 1622530124 - "/etc/texmf/web2c/texmf.cnf" 1585531380 475 c0e671620eb5563b2130f56340a5fde8 "" - "/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1480098666 4850 80dc9bab7f31fb78a000ccfed0e27cab "" - "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1511824771 3332 103109f5612ad95229751940c61aada0 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1480098688 1292 3059476c50a24578715759f22652f3d0 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1480098688 1384 87406e4336af44af883a035f17f319d9 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1480098688 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1480098688 1292 bd42be2f344128bff6d35d98474adfe3 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1480098688 1384 4632f5e54900a7dadbb83f555bc61e56 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm" 1480098688 1544 4fb84cf2931ec523c2c6a08d939088ba "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm" 1480098688 1596 04a657f277f0401ba37d66e716627ac4 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm" 1480098688 4484 b828043cbd581d289d955903c1339981 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm" 1480098688 6628 34c39492c0adc454c1c199922bba8363 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm" 1480098688 4736 423eba67d4e9420ec9df4a8def143b08 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm" 1480098688 6880 fe6c7967f27585f6fa9876f3af14edd2 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1480098688 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1480098689 4524 6bce29db5bc272ba5f332261583fee9c "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1480098689 6880 f19b8995b61c334d78fc734065f6b4d4 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1480098689 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1480098689 4408 25b74d011a4c66b7f212c0cc3c90061b "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1480098689 6672 e3ab9e37e925f3045c9005e6d1473d56 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1480098689 4640 532ca3305aad10cc01d769f3f91f1029 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm" 1480098689 6944 94c55ad86e6ea2826f78ba2240d50df9 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1480098696 3584 adb004a0c8e7c46ee66cad73671f37b4 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1480098698 1004 54797486969f23fa377b128694d548df "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1480098698 916 f87d7c45f9c908e672703b83b72241a3 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1480098698 924 9904cf1d39e9767e7a3622f2a125a565 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1480098698 928 2dc8d444221b7a635bb58038579b861a "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1480098698 908 2921f8a10601f252058503cc6570e581 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1480098698 940 75ac932a52f80982a9f8ea75d03a34cf "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1480098698 940 228d6584342e91276bf566bcf9716b83 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1480098701 992 662f679a0b3d2d53c1b94050fdaa3f50 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1480098701 1524 4414a8315f39513458b80dfc63bff03a "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1480098701 1288 655e228510b4c2a1abe905c368440826 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1480098701 1292 296a67155bdbfc32aa9c636f21e91433 "" - "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1480098701 1124 6c73e740cf17375f03eec0ee63599741 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1480098733 30251 6afa5cb1d0204815a708a080681d4674 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1480098733 36299 5f9df58c2139e7edcf37c8fca4bd384d "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1480098733 37912 77d683123f92148345f3fc36a38d9ab1 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1480098733 36281 c355509802a035cadc5f15869451dcee "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1480098733 35752 024fb6c41858982481f6968b5fc26508 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb" 1480098733 31809 8670ca339bf94e56da1fc21c80635e2a "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1480098733 32762 224316ccc9ad3ca0423a14971cfa7fc1 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1480098733 32569 5e5ddc8df908dea60932f3c484a54c0d "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb" 1480098733 32915 7bf7720c61a5b3a7ff25b0964421c9b6 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1480098733 32716 08e384dc442464e7285e891af9f45947 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb" 1480098734 34694 ad62b13721ee8eda1dcc8993c8bd7041 "" - "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm7.pfb" 1480098734 35309 940e81a5b9e04201a07e8b33a3ae6e64 "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1480098746 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1480098746 45758 19968a0990191524e34e1994d4a31cb6 "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb" 1480098746 44404 ea3d9c0311883914133975dd62a9185c "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb" 1480098746 35941 f27169cc74234d5bd5e4cca5abafaabb "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb" 1480098746 39013 b244066151b1e3e718f9b8e88a5ff23b "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1480098746 44729 811d6c62865936705a31c797a1d5dada "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1480098746 46026 6dab18b61c907687b520c72847215a68 "" - "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1480098746 45458 a3faba884469519614ca56ba5f6b1de1 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1480098757 2184 5d20c8b00cd914e50251116c274e2d0b "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1480098757 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1480098757 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf" 1480098757 2280 d7cd083c724c9449e1d12731253966f7 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf" 1480098757 2340 0efed6a948c3c37d870e4e7ddb85c7c3 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf" 1480098757 2344 88834f8322177295b0266ecc4b0754c3 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1480098758 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1480098758 3556 8a9a6dcbcd146ef985683f677f4758a6 "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1480098758 2348 91706c542228501c410c266421fbe30c "" - "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1480098758 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" - "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1480098806 71627 94eb9990bed73c364d7f53f960cc8c5b "" +["pdflatex"] 1636264782 "DFOLS.tex" "DFOLS.pdf" "DFOLS" 1636264783 + "/etc/texmf/web2c/texmf.cnf" 1635219538 475 c0e671620eb5563b2130f56340a5fde8 "" + "/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1136768653 1292 3059476c50a24578715759f22652f3d0 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1136768653 1384 87406e4336af44af883a035f17f319d9 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1136768653 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1136768653 1292 bd42be2f344128bff6d35d98474adfe3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1136768653 1384 4632f5e54900a7dadbb83f555bc61e56 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm" 1136768653 1344 dab2eee300fafcab19064bcc62d66daa "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm" 1136768653 1544 4fb84cf2931ec523c2c6a08d939088ba "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm" 1136768653 1596 04a657f277f0401ba37d66e716627ac4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm" 1136768653 4484 b828043cbd581d289d955903c1339981 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm" 1136768653 6628 34c39492c0adc454c1c199922bba8363 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8r.tfm" 1136768653 4736 423eba67d4e9420ec9df4a8def143b08 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm" 1136768653 6880 fe6c7967f27585f6fa9876f3af14edd2 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1136768653 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1136768653 4524 6bce29db5bc272ba5f332261583fee9c "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1136768653 6880 f19b8995b61c334d78fc734065f6b4d4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1136768653 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1136768653 4408 25b74d011a4c66b7f212c0cc3c90061b "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1136768653 6672 e3ab9e37e925f3045c9005e6d1473d56 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1136768653 4640 532ca3305aad10cc01d769f3f91f1029 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm" 1136768653 6944 94c55ad86e6ea2826f78ba2240d50df9 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1136768653 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm" 1136768653 1536 ae7aab2f8a4bc9edfce2899f53ba88c3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tctt0900.tfm" 1136768653 1536 bda3e6bf9784a4cc572c754e0c3eeb00 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/share/texlive/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1248133631 37912 77d683123f92148345f3fc36a38d9ab1 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb" 1248133631 31809 8670ca339bf94e56da1fc21c80635e2a "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1248133631 32762 224316ccc9ad3ca0423a14971cfa7fc1 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb" 1248133631 32915 7bf7720c61a5b3a7ff25b0964421c9b6 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1248133631 32716 08e384dc442464e7285e891af9f45947 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb" 1248133631 34694 ad62b13721ee8eda1dcc8993c8bd7041 "" + "/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm7.pfb" 1248133631 35309 940e81a5b9e04201a07e8b33a3ae6e64 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1136849748 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1136849748 45758 19968a0990191524e34e1994d4a31cb6 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb" 1136849748 44404 ea3d9c0311883914133975dd62a9185c "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb" 1136849748 35941 f27169cc74234d5bd5e4cca5abafaabb "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/helvetic/uhvbo8a.pfb" 1136849748 39013 b244066151b1e3e718f9b8e88a5ff23b "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1136849748 44729 811d6c62865936705a31c797a1d5dada "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1136849748 46026 6dab18b61c907687b520c72847215a68 "" + "/usr/share/texlive/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1136849748 45458 a3faba884469519614ca56ba5f6b1de1 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1136768653 2184 5d20c8b00cd914e50251116c274e2d0b "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1136768653 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1136768653 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf" 1136768653 3560 a297982f0907d62e9886d9e2666bf30b "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf" 1136768653 2280 d7cd083c724c9449e1d12731253966f7 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf" 1136768653 2340 0efed6a948c3c37d870e4e7ddb85c7c3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/helvetic/phvbo8t.vf" 1136768653 2344 88834f8322177295b0266ecc4b0754c3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1136768653 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1136768653 3556 8a9a6dcbcd146ef985683f677f4758a6 "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1136768653 2348 91706c542228501c410c266421fbe30c "" + "/usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1136768653 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" + "/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty" 1575674566 24708 5584a51a7101caf7e6bbf1fc27d8f7b1 "" "/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf" 1496785618 7008 9ff5fdcc865b01beca2b0fe4a46231d4 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1518644053 67244 2dce3d67c354c8d92f638d0f8682fb73 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1518644053 15861 065fe343082d0cd2428cf984d6b2ef66 "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def" 1518644053 12523 d80bc74bf5e02fe4304443a6de8d01be "" - "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1518644053 7434 1b3955075683beb1c883a0fcf92ed2d5 "" - "/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1480098815 1458 43ab4710dc82f3edeabecd0d099626b2 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty" 1480098815 7612 729a8cc22a1ee0029997c7f74717ae05 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1480098815 8237 3b62ef1f7e2c23a328c814b3893bc11f "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1517006633 185082 6c11d4e30ed78e2a12957b7e77030856 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1480098815 70864 bcd5b216757bd619ae692a151d90085d "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1480098815 7324 2310d1247db0114eb4726807c8837a0e "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1490564930 1251 d170e11a3246c3392bc7f59595af42cb "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1480098815 6797 90b7f83b0ad46826bc16058b1e3d48df "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1480098815 8253 473e0e41f9adadb1977e8631b8f72ea6 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty" 1480098815 14040 ac8866aac45982ac84021584b0abb252 "" - "/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1480098815 18425 5b3c0c59d76fac78978b5558e83c1f36 "" - "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1480098820 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" - "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1480098820 13829 94730e64147574077f8ecfea9bb69af4 "" - "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1480098820 961 6518c6525a34feb5e8250ffa91731cff "" - "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1480098820 961 d02606146ba5601b5645f987c92e6193 "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1480098820 2210 5c54ab129b848a5071554186d0168766 "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1480098820 4160 c115536cf8d4ff25aa8c1c9bc4ecb79a "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1504905757 84352 897a476d96a0681047a5b0f91178a3d2 "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1480098820 4115 318a66090112f3aa3f415aeb6fe8540f "" - "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1480098820 2431 fe3078ec12fc30287f568596f8e0b948 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1480098821 3140 977eaf314c97ac67b8675753fb15f67f "" - "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1492297155 4571 13977df0eda144b93597fc709035ad1f "" - "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1480098821 4732 d63eda807ac82cca2ca8488efd31a966 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1480098821 1940 c559b92ca91f1b2a0e60d836d4973f41 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu" 1487721667 2004 ac51aeac484f08c01026120d62677eca "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu" 1487721667 3181 1cb3e9ad01f4a01127b2ffd821bfeec7 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1480098821 22880 e7be6f7dd8c05d5108bf3a7d8cabe59a "" - "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1480098821 8292 e897c12e1e886ce77fe26afc5d470886 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def" 1492297155 10006 a90ba4035cf778f32f424e297d92e235 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu" 1487721667 11255 9d97362866549d3d3c994b5f28d1b9b5 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1492297155 16154 f2c73e20ca771d534a8516c62c6b0eae "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd" 1480098821 2217 d274654bda1292013bdf48d5f720a495 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def" 1480098821 7767 aa88823823f5e767d79ea1166ab1ae74 "" - "/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu" 1487721667 4919 76510afd60e8282294f944c2f9f5103b "" - "/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def" 1487721667 7784 325a2a09984cb5c4ff230f9867145ad3 "" - "/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty" 1480098823 1311 063f8536a047a2d9cb1803321f793f37 "" - "/usr/share/texlive/texmf-dist/tex/latex/carlisle/remreset.sty" 1480098823 1096 6a75275ca00e32428c6f059d2f618ea7 "" - "/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty" 1480098825 2883 427a7f7cb58418a0394dbd85c80668f6 "" - "/usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap" 1480098825 1207 4e0d96772f0d338847cbfb4eca683c81 "" - "/usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap" 1480098825 1938 beaa4a8467aa0074076e0e19f2992e29 "" - "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1498861448 10663 d7fcc0dc4f35e8998b8cfeef8407d37d "" - "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1480098827 45360 a0833d32f1b541964596b02870342d5a "" - "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1480098828 6749 16d2656a1984957e674b149555f1ea1d "" - "/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty" 1480098828 19488 fdd52eb173b3197d748e1ec25acb042f "" - "/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty" 1480098829 22449 7ec15c16d0d66790f28e90343c5434a3 "" - "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1480098829 40502 e003406220954b0716679d7928aedd8a "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1480098830 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1480098830 1224 978390e9c2234eab29404bc21b268d1e "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1515537368 17334 520b9b85ad8a2a48eda3f643e27a5179 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1498427532 15275 7d676729b1bedd3e7f3c6717affb366c "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1498427532 9066 649f2ccf62888e3d8c3e57256b70b8e1 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1480098830 2594 d18d5e19aa8239cf867fa670c556d2e9 "" - "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1480098830 3980 0a268fbfda01e381fa95821ab13b6aee "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1518041854 51699 9069fc983fff0db91d59a15af144ad62 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1518041854 234088 2c849389d62d41c593d9f5176c4116ab "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1480098831 12949 81e4e808884a8f0e276b69410e234656 "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1518041854 14098 4e70bf396c7c265bd8b0e5cab3fd3d4d "" - "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1518041854 122411 10b605a58a28bbe5d61db37da4a85beb "" - "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1480098833 678 4792914a8f45be57bb98413425e4c7af "" - "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1480098833 235 6031e5765137be07eed51a510b2b8fb7 "" - "/usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap" 1480098835 1866 c1c12138091b4a8edd4a24a940e6f792 "" - "/usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap" 1480098835 2370 3b1f71b14b974f07cef532db09ae9ee0 "" - "/usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap" 1480098835 3001 252c8ca42b06a22cb1a11c0e47790c6e "" - "/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty" 1480098835 852 0e34dbb72efc69fa07602405ad95585e "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1480098836 3834 4363110eb0ef1eb2b71c8fcbcdb6c357 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1480098836 12095 5337833c991d80788a43d3ce26bd1c46 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty" 1480098836 7075 2fe3d848bba95f139de11ded085e74aa "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1480098836 3720 63669daeb0b67d5fbec899824e2f1491 "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1480098836 22417 1d9df1eb66848aa31b18a593099cf45c "" - "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1480098836 9581 023642318cef9f4677efe364de1e2a27 "" - "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1480098836 2763 02a40cc5a32805c41d919cfbdba7e99a "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1480098837 798 d5895e9edc628f2be019beb2c0ec66df "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd" 1480098837 1488 9a55ac1cde6b4798a7f56844bb75a553 "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1480098837 774 61d7da1e9f9e74989b196d147e623736 "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1480098837 857 6c716f26c5eadfb81029fcd6ce2d45e6 "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1480098837 643 92c451bb86386a4e36a174603ddb5a13 "" - "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1480098837 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" - "/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty" 1480098840 13791 8c83287d79183c3bf58fd70871e8a70b "" - "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1480098841 37387 afa86533e532701faf233f3f592c61e0 "" - "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1485129666 12396 d41f82b039f900e95f351e54ae740f31 "" - "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1480098841 12083 80916157594a8e4354985aaefae4f367 "" - "/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty" 1480098842 1048 517e01cde97c1c0baf72e69d43aa5a2e "" - "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1480098842 12796 8edb7d69a20b857904dd0ea757c14ec9 "" - "/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty" 1480098842 10894 d359a13923460b2a73d4312d613554c8 "" - "/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1480098843 26220 3701aebf80ccdef248c0c20dd062fea9 "" - "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1480098843 55589 34128738f682d033422ca125f82e5d62 "" - "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1520210507 32485 c64754543d8ac501bea6e75e209ea521 "" - "/usr/share/texmf/web2c/texmf.cnf" 1520210507 32485 c64754543d8ac501bea6e75e209ea521 "" - "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1586757552 2556815 161db45eb32a3ed5e427095833ec947f "" - "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1585531429 724918 9f2ac0f6dd6683249c7737077a8c4a4a "" - "DFOLS.aux" 1622530124 12058 0d350ef6467443ffd0a5c3fba7362df4 "" - "DFOLS.ind" 1587347499 0 d41d8cd98f00b204e9800998ecf8427e "makeindex DFOLS.idx" - "DFOLS.out" 1622530124 9013 0da220324f9f4ff77d55207662ccf7c0 "" - "DFOLS.tex" 1622530120 84372 31d775510b3b18cfb9a674869b58bb8d "" - "DFOLS.toc" 1622530124 4400 03f706a729fe25e26c94f756d79c03cb "" - "data_fitting.png" 1587347499 29893 211bb1c28ea25d47c8c0990fbf39c55c "" - "footnotehyper-sphinx.sty" 1587347499 8888 1bbd7bdeae8c8bed1d10d551bddb1cc9 "" - "sphinx.sty" 1614221565 82020 a38700b8aa22dfd94a8a5b905e69be73 "" - "sphinxhighlight.sty" 1622530122 6607 9139c967ef186821cb11bb3b0580e00e "" - "sphinxmanual.cls" 1587347499 4236 124cd90deb92742b5d3922bfc2cd70c0 "" - "sphinxmessages.sty" 1622530122 745 3f5fcd6cdd7964ed608767954a8ced6f "" - "sphinxmulticell.sty" 1587347499 14606 0b6edc2b1a83546ed92026d1f6a311b5 "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def" 1594674696 109003 5221180ec273789a0ce3162f6932300a "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty" 1594674696 35557 fd9aed184cb6c2ec71927f6ebd72269d "" + "/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def" 1589491462 5211 2c3605e674ad86cdc9fdcfcd3de3a1da "" + "/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty" 1576625341 40635 c40361e206be584d448876bba8a64a3b "" + "/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty" 1576016050 33961 6b5c75130e435b2bfdb9f480a09a39f9 "" + "/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty" 1576625273 7734 b98cbb34c81f667027c1e3ebdbfce34b "" + "/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty" 1576625223 8371 9d55b8bd010bc717624922fb3477d92e "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty" 1583617216 6501 4011d89d9621e0b0901138815ba5ff29 "" + "/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty" 1572645307 1057 525c2192b5febbd8c1f662c9468335bb "" + "/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty" 1575499628 8356 7bbb2c2373aa810be568c29e333da8ed "" + "/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty" 1576625065 31769 002a487f55041f8e805cfbf6385ffd97 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty" 1576878844 5412 d5a2436094cd7be85769db90f29250a6 "" + "/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty" 1576624944 13807 952b0226d4efca026f0e19dd266dcc22 "" + "/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty" 1576624883 18552 1e1cc7b75da0dfaacce7cdcb27d306bf "" + "/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty" 1576015897 19007 15924f7228aca6c6d184b115f4baa231 "" + "/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty" 1593379760 20089 80423eac55aa175305d35b49e04fe23b "" + "/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty" 1576624663 7008 f92eaa0a3872ed622bbf538217cd2ab7 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1523134290 2211 ca7ce284ab93c8eecdc6029dc5ccbd73 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty" 1523134290 4161 7f6eb9092061a11f87d08ed13515b48d "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty" 1580683321 85660 baee036978c7a91f4e2bba43f05e5945 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty" 1523134290 4116 32e6abd27229755a83a8b7f18e583890 "" + "/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty" 1523134290 2432 8ff93b1137020e8f21930562a874ae66 "" + "/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty" 1576191570 19336 ce7ae9438967282886b3b036cfad1e4d "" + "/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty" 1576625391 3935 57aa3c3e203a5c2effb4d2bd2efbc323 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty" 1580683321 3140 3b501b609b11ff7320ce1a19dbac0e3b "" + "/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty" 1581632200 4947 0c2888dd88121ae675fc6e82213623ba "" + "/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty" 1580683321 5050 8933a39ad74377accd18991c5eb90c58 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty" 1580683321 1940 dd4f2aa11c89855a3c47d09758782ba5 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/report.cls" 1580683321 23082 a0e9a5941c744eda6abe56770037a201 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo" 1580683321 8446 9874cccac5fee462272c582807dbbf56 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd" 1580683321 2444 92c1f2a3fb5fbd5ac60f99eac55c9b29 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty" 1581112666 2821 2c0928feafd5527387e29a1af774d030 "" + "/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd" 1580683321 2288 de58492d6f867ba068b08f7f71d9f35f "" + "/usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty" 1264379041 1311 063f8536a047a2d9cb1803321f793f37 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty" 1215522782 2883 427a7f7cb58418a0394dbd85c80668f6 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap" 1215522782 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1548974385 11128 a53805799bebfed6358fc1658a18e41f "" + "/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1588627484 43231 b2e5a61c56a7db26d1486185f2d1dd75 "" + "/usr/share/texlive/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty" 1292029257 19488 fdd52eb173b3197d748e1ec25acb042f "" + "/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty" 1338588508 22449 7ec15c16d0d66790f28e90343c5434a3 "" + "/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty" 1578002852 41601 9cf6c5257b1bc7af01a58859749dd37a "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def" 1585083172 17448 c8e20d5f7e69b0cbecf82ab29daeebd9 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty" 1580683321 16932 04729abe63b66ec59ea56edcd722b058 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty" 1580683321 9067 1b996612394a52e1efe89c8bfe8a5892 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty" 1580683321 2590 e3b24ff953e5b58d924f163d25380312 "" + "/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty" 1580683321 3976 d7fa7d81d2870d509d25b17d0245e735 "" + "/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty" 1580250785 17914 4c28a13fc3d975e6e81c9bea1d697276 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def" 1589664343 50570 2e81797743231d9037b0cbe3436d74ba "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty" 1589664343 236775 8ab18a05f69e6caef423fa59cb0af03b "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty" 1579642962 13244 0070bcab7b5a88187847128d22faf4d8 "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def" 1589664343 14134 c11767c54bd7ecab56984ee4e4e3158c "" + "/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def" 1589664343 122447 8dcff5c67ff7f0649f41dc4abc99887f "" + "/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty" 1575152344 22520 c4c2dab203104295e1e618be7e5c0f5b "" + "/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def" 1593552530 24606 ecae4e851ce9ce4554d156050e5057f9 "" + "/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty" 1575499565 5766 13a9e8766c47f30327caf893ece86ac8 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oml.cmap" 1215649417 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/oms.cmap" 1215649417 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/share/texlive/texmf-dist/tex/latex/mmap/omx.cmap" 1215649417 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty" 1364856750 852 0e34dbb72efc69fa07602405ad95585e "" + "/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1575152444 3822 b53c749cd81352b4679a35b0dafefb95 "" + "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty" 1536789184 2757 ea00cb4f4e9abc702916f74d3812ef67 "" + "/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty" 1592253773 4288 25631f9679adf750bac898538ededd61 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1137110629 798 d5895e9edc628f2be019beb2c0ec66df "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd" 1586716065 1483 47067fbe7c3ffed1ede7aaa7b8549d7a "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1137110629 774 61d7da1e9f9e74989b196d147e623736 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty" 1586716065 856 8e0e5c8cca7b18e0400f97f5a2b90a99 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1137110629 643 92c451bb86386a4e36a174603ddb5a13 "" + "/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1137110629 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" + "/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty" 1576624809 9878 9e94e8fa600d95f9c7731bb21dfb67a4 "" + "/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty" 1575674187 9715 b051d5b493d9fe5f4bc251462d039e5f "" + "/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty" 1403566480 13791 8c83287d79183c3bf58fd70871e8a70b "" + "/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty" 1571259403 48596 2b6a95da931c07a430b1a61904aaa42d "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty" 1580683321 12560 ce3f59ceae9d9a27bfe037d6bf1d903c "" + "/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty" 1580683321 12133 b1e3e65b69714dbfcc5e6c0b19d66b50 "" + "/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty" 1334873510 1048 517e01cde97c1c0baf72e69d43aa5a2e "" + "/usr/share/texlive/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty" 1238697683 10894 d359a13923460b2a73d4312d613554c8 "" + "/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1137111090 26220 3701aebf80ccdef248c0c20dd062fea9 "" + "/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty" 1463002160 55589 34128738f682d033422ca125f82e5d62 "" + "/usr/share/texlive/texmf-dist/web2c/texmf.cnf" 1596975543 38841 5237427e4d3283e7b009b6a8b45dfdcd "" + "/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc" 1565080000 2900 1537cc8184ad1792082cd229ecc269f4 "" + "/usr/share/texmf/fonts/type1/public/cm-super/sftt0900.pfb" 1635219546 170827 2e4b634de7b58578eae1dc93e51dfe48 "" + "/usr/share/texmf/web2c/texmf.cnf" 1596975543 38841 5237427e4d3283e7b009b6a8b45dfdcd "" + "/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map" 1635219562 4873311 71a69169e8f25b40365ee00977a83dfd "" + "/var/lib/texmf/web2c/pdftex/pdflatex.fmt" 1635219594 2442914 5a5e4c82b80d767025ad43ba6bde5a43 "" + "DFOLS.aux" 1636264783 14319 ea5398765d03e8c87a7523effee11f24 "pdflatex" + "DFOLS.ind" 1610358580 0 d41d8cd98f00b204e9800998ecf8427e "makeindex DFOLS.idx" + "DFOLS.out" 1636264783 9791 341a503f84264c9db95170fed7c7200b "pdflatex" + "DFOLS.tex" 1636264782 92743 97520bf6433f1ca698c33ac451bbc1c1 "" + "DFOLS.toc" 1636264783 4810 09459712cca1ea8cde58f481ae343639 "pdflatex" + "data_fitting.png" 1610358580 29893 211bb1c28ea25d47c8c0990fbf39c55c "" + "footnotehyper-sphinx.sty" 1610358580 8888 1bbd7bdeae8c8bed1d10d551bddb1cc9 "" + "sphinx.sty" 1633985769 82020 a38700b8aa22dfd94a8a5b905e69be73 "" + "sphinxhighlight.sty" 1636264782 6615 02ef3c01e6bb67d3cc0658d354509680 "" + "sphinxmanual.cls" 1610358580 4236 124cd90deb92742b5d3922bfc2cd70c0 "" + "sphinxmessages.sty" 1636264782 745 3f5fcd6cdd7964ed608767954a8ced6f "" + "sphinxmulticell.sty" 1610358580 14606 0b6edc2b1a83546ed92026d1f6a311b5 "" (generated) "DFOLS.aux" - "DFOLS.out" - "DFOLS.pdf" - "DFOLS.log" "DFOLS.toc" + "DFOLS.out" "DFOLS.idx" + "DFOLS.log" + "DFOLS.pdf" diff --git a/docs/build/latex/DFOLS.fls b/docs/build/latex/DFOLS.fls index 0db93dd..782763e 100644 --- a/docs/build/latex/DFOLS.fls +++ b/docs/build/latex/DFOLS.fls @@ -1,4 +1,4 @@ -PWD /mnt/c/Users/lindo/Documents/git/dfols/docs/build/latex +PWD /home/matt/Dropbox/code/dfo/dfols/docs/build/latex INPUT /etc/texmf/web2c/texmf.cnf INPUT /usr/share/texmf/web2c/texmf.cnf INPUT /usr/share/texlive/texmf-dist/web2c/texmf.cnf @@ -13,20 +13,10 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo INPUT /usr/share/texlive/texmf-dist/tex/latex/base/size10.clo INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/utf8.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/utf8.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def INPUT /usr/share/texlive/texmf-dist/fonts/map/fontname/texfonts.map INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm INPUT /usr/share/texlive/texmf-dist/tex/latex/cmap/t1.cmap @@ -48,20 +38,19 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/switch.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf INPUT /usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf -INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/babel.def -INPUT /usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty INPUT sphinx.sty INPUT sphinx.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty @@ -78,10 +67,6 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty @@ -111,8 +96,10 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/float/float.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty @@ -121,74 +108,83 @@ INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/capt-of/capt-of.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/carlisle/remreset.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/carlisle/remreset.sty INPUT sphinxhighlight.sty INPUT sphinxhighlight.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg -INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/url/url.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty INPUT sphinxmessages.sty INPUT sphinxmessages.sty OUTPUT DFOLS.idx +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +INPUT /usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def INPUT DFOLS.aux INPUT DFOLS.aux OUTPUT DFOLS.aux -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd -INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii INPUT /usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -INPUT /usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg INPUT /usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty INPUT /usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty -INPUT /usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +INPUT /usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty INPUT DFOLS.out INPUT DFOLS.out INPUT DFOLS.out @@ -289,12 +285,20 @@ INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd INPUT /usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm -INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm +INPUT /usr/share/texlive/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/ectt0900.tfm +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +INPUT /usr/share/texlive/texmf-dist/fonts/tfm/jknappen/ec/tctt0900.tfm INPUT data_fitting.png INPUT ./data_fitting.png INPUT ./data_fitting.png @@ -305,6 +309,7 @@ INPUT DFOLS.ind INPUT DFOLS.aux INPUT ./DFOLS.out INPUT ./DFOLS.out +INPUT /usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc INPUT /usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb @@ -318,6 +323,7 @@ INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm7.pfb +INPUT /usr/share/texmf/fonts/type1/public/cm-super/sftt0900.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb INPUT /usr/share/texlive/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb diff --git a/docs/build/latex/DFOLS.log b/docs/build/latex/DFOLS.log index 2dd255e..50e8162 100755 --- a/docs/build/latex/DFOLS.log +++ b/docs/build/latex/DFOLS.log @@ -1,351 +1,37 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) (preloaded format=pdflatex 2020.3.30) 1 JUN 2021 16:48 +This is pdfTeX, Version 3.14159265-2.6-1.40.21 (TeX Live 2020/Debian) (preloaded format=pdflatex 2021.10.25) 7 NOV 2021 01:59 entering extended mode restricted \write18 enabled. %&-line parsing enabled. **DFOLS.tex (./DFOLS.tex -LaTeX2e <2017-04-15> -Babel <3.18> and hyphenation patterns for 3 language(s) loaded. -(./sphinxmanual.cls +LaTeX2e <2020-02-02> patch level 5 +L3 programming layer <2020-07-17> (./sphinxmanual.cls Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual) (/usr/share/texlive/texmf-dist/tex/latex/base/report.cls -Document Class: report 2014/09/29 v1.4h Standard LaTeX document class +Document Class: report 2019/12/20 v1.4l Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo -File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) -) -\c@part=\count79 -\c@chapter=\count80 -\c@section=\count81 -\c@subsection=\count82 -\c@subsubsection=\count83 -\c@paragraph=\count84 -\c@subparagraph=\count85 -\c@figure=\count86 -\c@table=\count87 -\abovecaptionskip=\skip41 -\belowcaptionskip=\skip42 -\bibindent=\dimen102 +File: size10.clo 2019/12/20 v1.4l Standard LaTeX file (size option) +) +\c@part=\count168 +\c@chapter=\count169 +\c@section=\count170 +\c@subsection=\count171 +\c@subsubsection=\count172 +\c@paragraph=\count173 +\c@subparagraph=\count174 +\c@figure=\count175 +\c@table=\count176 +\abovecaptionskip=\skip47 +\belowcaptionskip=\skip48 +\bibindent=\dimen134 ) LaTeX Info: Redefining \and on input line 35. ) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty -Package: inputenc 2015/03/17 v1.2c Input encoding file -\inpenc@prehook=\toks14 -\inpenc@posthook=\toks15 - -(/usr/share/texlive/texmf-dist/tex/latex/base/utf8.def -File: utf8.def 2017/01/28 v1.1t UTF-8 support for inputenc -Now handling font encoding OML ... -... no UTF-8 mapping file for font encoding OML -Now handling font encoding T1 ... -... processing UTF-8 mapping file for font encoding T1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.dfu -File: t1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc - defining Unicode char U+00A0 (decimal 160) - defining Unicode char U+00A1 (decimal 161) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00AB (decimal 171) - defining Unicode char U+00AD (decimal 173) - defining Unicode char U+00BB (decimal 187) - defining Unicode char U+00BF (decimal 191) - defining Unicode char U+00C0 (decimal 192) - defining Unicode char U+00C1 (decimal 193) - defining Unicode char U+00C2 (decimal 194) - defining Unicode char U+00C3 (decimal 195) - defining Unicode char U+00C4 (decimal 196) - defining Unicode char U+00C5 (decimal 197) - defining Unicode char U+00C6 (decimal 198) - defining Unicode char U+00C7 (decimal 199) - defining Unicode char U+00C8 (decimal 200) - defining Unicode char U+00C9 (decimal 201) - defining Unicode char U+00CA (decimal 202) - defining Unicode char U+00CB (decimal 203) - defining Unicode char U+00CC (decimal 204) - defining Unicode char U+00CD (decimal 205) - defining Unicode char U+00CE (decimal 206) - defining Unicode char U+00CF (decimal 207) - defining Unicode char U+00D0 (decimal 208) - defining Unicode char U+00D1 (decimal 209) - defining Unicode char U+00D2 (decimal 210) - defining Unicode char U+00D3 (decimal 211) - defining Unicode char U+00D4 (decimal 212) - defining Unicode char U+00D5 (decimal 213) - defining Unicode char U+00D6 (decimal 214) - defining Unicode char U+00D8 (decimal 216) - defining Unicode char U+00D9 (decimal 217) - defining Unicode char U+00DA (decimal 218) - defining Unicode char U+00DB (decimal 219) - defining Unicode char U+00DC (decimal 220) - defining Unicode char U+00DD (decimal 221) - defining Unicode char U+00DE (decimal 222) - defining Unicode char U+00DF (decimal 223) - defining Unicode char U+00E0 (decimal 224) - defining Unicode char U+00E1 (decimal 225) - defining Unicode char U+00E2 (decimal 226) - defining Unicode char U+00E3 (decimal 227) - defining Unicode char U+00E4 (decimal 228) - defining Unicode char U+00E5 (decimal 229) - defining Unicode char U+00E6 (decimal 230) - defining Unicode char U+00E7 (decimal 231) - defining Unicode char U+00E8 (decimal 232) - defining Unicode char U+00E9 (decimal 233) - defining Unicode char U+00EA (decimal 234) - defining Unicode char U+00EB (decimal 235) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00EE (decimal 238) - defining Unicode char U+00EF (decimal 239) - defining Unicode char U+00F0 (decimal 240) - defining Unicode char U+00F1 (decimal 241) - defining Unicode char U+00F2 (decimal 242) - defining Unicode char U+00F3 (decimal 243) - defining Unicode char U+00F4 (decimal 244) - defining Unicode char U+00F5 (decimal 245) - defining Unicode char U+00F6 (decimal 246) - defining Unicode char U+00F8 (decimal 248) - defining Unicode char U+00F9 (decimal 249) - defining Unicode char U+00FA (decimal 250) - defining Unicode char U+00FB (decimal 251) - defining Unicode char U+00FC (decimal 252) - defining Unicode char U+00FD (decimal 253) - defining Unicode char U+00FE (decimal 254) - defining Unicode char U+00FF (decimal 255) - defining Unicode char U+0100 (decimal 256) - defining Unicode char U+0101 (decimal 257) - defining Unicode char U+0102 (decimal 258) - defining Unicode char U+0103 (decimal 259) - defining Unicode char U+0104 (decimal 260) - defining Unicode char U+0105 (decimal 261) - defining Unicode char U+0106 (decimal 262) - defining Unicode char U+0107 (decimal 263) - defining Unicode char U+0108 (decimal 264) - defining Unicode char U+0109 (decimal 265) - defining Unicode char U+010A (decimal 266) - defining Unicode char U+010B (decimal 267) - defining Unicode char U+010C (decimal 268) - defining Unicode char U+010D (decimal 269) - defining Unicode char U+010E (decimal 270) - defining Unicode char U+010F (decimal 271) - defining Unicode char U+0110 (decimal 272) - defining Unicode char U+0111 (decimal 273) - defining Unicode char U+0112 (decimal 274) - defining Unicode char U+0113 (decimal 275) - defining Unicode char U+0114 (decimal 276) - defining Unicode char U+0115 (decimal 277) - defining Unicode char U+0116 (decimal 278) - defining Unicode char U+0117 (decimal 279) - defining Unicode char U+0118 (decimal 280) - defining Unicode char U+0119 (decimal 281) - defining Unicode char U+011A (decimal 282) - defining Unicode char U+011B (decimal 283) - defining Unicode char U+011C (decimal 284) - defining Unicode char U+011D (decimal 285) - defining Unicode char U+011E (decimal 286) - defining Unicode char U+011F (decimal 287) - defining Unicode char U+0120 (decimal 288) - defining Unicode char U+0121 (decimal 289) - defining Unicode char U+0122 (decimal 290) - defining Unicode char U+0123 (decimal 291) - defining Unicode char U+0124 (decimal 292) - defining Unicode char U+0125 (decimal 293) - defining Unicode char U+0128 (decimal 296) - defining Unicode char U+0129 (decimal 297) - defining Unicode char U+012A (decimal 298) - defining Unicode char U+012B (decimal 299) - defining Unicode char U+012C (decimal 300) - defining Unicode char U+012D (decimal 301) - defining Unicode char U+012E (decimal 302) - defining Unicode char U+012F (decimal 303) - defining Unicode char U+0130 (decimal 304) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0132 (decimal 306) - defining Unicode char U+0133 (decimal 307) - defining Unicode char U+0134 (decimal 308) - defining Unicode char U+0135 (decimal 309) - defining Unicode char U+0136 (decimal 310) - defining Unicode char U+0137 (decimal 311) - defining Unicode char U+0139 (decimal 313) - defining Unicode char U+013A (decimal 314) - defining Unicode char U+013B (decimal 315) - defining Unicode char U+013C (decimal 316) - defining Unicode char U+013D (decimal 317) - defining Unicode char U+013E (decimal 318) - defining Unicode char U+0141 (decimal 321) - defining Unicode char U+0142 (decimal 322) - defining Unicode char U+0143 (decimal 323) - defining Unicode char U+0144 (decimal 324) - defining Unicode char U+0145 (decimal 325) - defining Unicode char U+0146 (decimal 326) - defining Unicode char U+0147 (decimal 327) - defining Unicode char U+0148 (decimal 328) - defining Unicode char U+014A (decimal 330) - defining Unicode char U+014B (decimal 331) - defining Unicode char U+014C (decimal 332) - defining Unicode char U+014D (decimal 333) - defining Unicode char U+014E (decimal 334) - defining Unicode char U+014F (decimal 335) - defining Unicode char U+0150 (decimal 336) - defining Unicode char U+0151 (decimal 337) - defining Unicode char U+0152 (decimal 338) - defining Unicode char U+0153 (decimal 339) - defining Unicode char U+0154 (decimal 340) - defining Unicode char U+0155 (decimal 341) - defining Unicode char U+0156 (decimal 342) - defining Unicode char U+0157 (decimal 343) - defining Unicode char U+0158 (decimal 344) - defining Unicode char U+0159 (decimal 345) - defining Unicode char U+015A (decimal 346) - defining Unicode char U+015B (decimal 347) - defining Unicode char U+015C (decimal 348) - defining Unicode char U+015D (decimal 349) - defining Unicode char U+015E (decimal 350) - defining Unicode char U+015F (decimal 351) - defining Unicode char U+0160 (decimal 352) - defining Unicode char U+0161 (decimal 353) - defining Unicode char U+0162 (decimal 354) - defining Unicode char U+0163 (decimal 355) - defining Unicode char U+0164 (decimal 356) - defining Unicode char U+0165 (decimal 357) - defining Unicode char U+0168 (decimal 360) - defining Unicode char U+0169 (decimal 361) - defining Unicode char U+016A (decimal 362) - defining Unicode char U+016B (decimal 363) - defining Unicode char U+016C (decimal 364) - defining Unicode char U+016D (decimal 365) - defining Unicode char U+016E (decimal 366) - defining Unicode char U+016F (decimal 367) - defining Unicode char U+0170 (decimal 368) - defining Unicode char U+0171 (decimal 369) - defining Unicode char U+0172 (decimal 370) - defining Unicode char U+0173 (decimal 371) - defining Unicode char U+0174 (decimal 372) - defining Unicode char U+0175 (decimal 373) - defining Unicode char U+0176 (decimal 374) - defining Unicode char U+0177 (decimal 375) - defining Unicode char U+0178 (decimal 376) - defining Unicode char U+0179 (decimal 377) - defining Unicode char U+017A (decimal 378) - defining Unicode char U+017B (decimal 379) - defining Unicode char U+017C (decimal 380) - defining Unicode char U+017D (decimal 381) - defining Unicode char U+017E (decimal 382) - defining Unicode char U+01CD (decimal 461) - defining Unicode char U+01CE (decimal 462) - defining Unicode char U+01CF (decimal 463) - defining Unicode char U+01D0 (decimal 464) - defining Unicode char U+01D1 (decimal 465) - defining Unicode char U+01D2 (decimal 466) - defining Unicode char U+01D3 (decimal 467) - defining Unicode char U+01D4 (decimal 468) - defining Unicode char U+01E2 (decimal 482) - defining Unicode char U+01E3 (decimal 483) - defining Unicode char U+01E6 (decimal 486) - defining Unicode char U+01E7 (decimal 487) - defining Unicode char U+01E8 (decimal 488) - defining Unicode char U+01E9 (decimal 489) - defining Unicode char U+01EA (decimal 490) - defining Unicode char U+01EB (decimal 491) - defining Unicode char U+01F0 (decimal 496) - defining Unicode char U+01F4 (decimal 500) - defining Unicode char U+01F5 (decimal 501) - defining Unicode char U+0218 (decimal 536) - defining Unicode char U+0219 (decimal 537) - defining Unicode char U+021A (decimal 538) - defining Unicode char U+021B (decimal 539) - defining Unicode char U+0232 (decimal 562) - defining Unicode char U+0233 (decimal 563) - defining Unicode char U+1E02 (decimal 7682) - defining Unicode char U+1E03 (decimal 7683) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2010 (decimal 8208) - defining Unicode char U+2011 (decimal 8209) - defining Unicode char U+2012 (decimal 8210) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2015 (decimal 8213) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201A (decimal 8218) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) - defining Unicode char U+201E (decimal 8222) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+2039 (decimal 8249) - defining Unicode char U+203A (decimal 8250) - defining Unicode char U+2423 (decimal 9251) - defining Unicode char U+1E20 (decimal 7712) - defining Unicode char U+1E21 (decimal 7713) -) -Now handling font encoding OT1 ... -... processing UTF-8 mapping file for font encoding OT1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/ot1enc.dfu -File: ot1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc - defining Unicode char U+00A0 (decimal 160) - defining Unicode char U+00A1 (decimal 161) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00AD (decimal 173) - defining Unicode char U+00B8 (decimal 184) - defining Unicode char U+00BF (decimal 191) - defining Unicode char U+00C5 (decimal 197) - defining Unicode char U+00C6 (decimal 198) - defining Unicode char U+00D8 (decimal 216) - defining Unicode char U+00DF (decimal 223) - defining Unicode char U+00E6 (decimal 230) - defining Unicode char U+00EC (decimal 236) - defining Unicode char U+00ED (decimal 237) - defining Unicode char U+00EE (decimal 238) - defining Unicode char U+00EF (decimal 239) - defining Unicode char U+00F8 (decimal 248) - defining Unicode char U+0131 (decimal 305) - defining Unicode char U+0141 (decimal 321) - defining Unicode char U+0142 (decimal 322) - defining Unicode char U+0152 (decimal 338) - defining Unicode char U+0153 (decimal 339) - defining Unicode char U+0174 (decimal 372) - defining Unicode char U+0175 (decimal 373) - defining Unicode char U+0176 (decimal 374) - defining Unicode char U+0177 (decimal 375) - defining Unicode char U+0218 (decimal 536) - defining Unicode char U+0219 (decimal 537) - defining Unicode char U+021A (decimal 538) - defining Unicode char U+021B (decimal 539) - defining Unicode char U+2013 (decimal 8211) - defining Unicode char U+2014 (decimal 8212) - defining Unicode char U+2018 (decimal 8216) - defining Unicode char U+2019 (decimal 8217) - defining Unicode char U+201C (decimal 8220) - defining Unicode char U+201D (decimal 8221) -) -Now handling font encoding OMS ... -... processing UTF-8 mapping file for font encoding OMS - -(/usr/share/texlive/texmf-dist/tex/latex/base/omsenc.dfu -File: omsenc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc - defining Unicode char U+00A7 (decimal 167) - defining Unicode char U+00B6 (decimal 182) - defining Unicode char U+00B7 (decimal 183) - defining Unicode char U+2020 (decimal 8224) - defining Unicode char U+2021 (decimal 8225) - defining Unicode char U+2022 (decimal 8226) -) -Now handling font encoding OMX ... -... no UTF-8 mapping file for font encoding OMX -Now handling font encoding U ... -... no UTF-8 mapping file for font encoding U - defining Unicode char U+00A9 (decimal 169) - defining Unicode char U+00AA (decimal 170) - defining Unicode char U+00AE (decimal 174) - defining Unicode char U+00BA (decimal 186) - defining Unicode char U+02C6 (decimal 710) - defining Unicode char U+02DC (decimal 732) - defining Unicode char U+200C (decimal 8204) - defining Unicode char U+2026 (decimal 8230) - defining Unicode char U+2122 (decimal 8482) - defining Unicode char U+2423 (decimal 9251) -)) +Package: inputenc 2018/08/11 v1.3c Input encoding file +\inpenc@prehook=\toks15 +\inpenc@posthook=\toks16 +) defining Unicode char U+00A0 (decimal 160) defining Unicode char U+2500 (decimal 9472) defining Unicode char U+2502 (decimal 9474) @@ -357,15 +43,11 @@ Now handling font encoding U ... Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF ) (/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty -Package: fontenc 2017/04/05 v2.0i Standard LaTeX package - -(/usr/share/texlive/texmf-dist/tex/latex/base/t1enc.def -File: t1enc.def 2017/04/05 v2.0i Standard LaTeX file -LaTeX Font Info: Redeclaring font encoding T1 on input line 48. -)<>) +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +<>) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty -Package: amsmath 2017/09/02 v2.17a AMS math features -\@mathmargin=\skip43 +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip49 For additional information on amsmath, use the `?' option. (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty @@ -373,53 +55,53 @@ Package: amstext 2000/06/29 v2.01 AMS text (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 generic functions -\@emptytoks=\toks16 -\ex@=\dimen103 +\@emptytoks=\toks17 +\ex@=\dimen135 )) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d Bold Symbols -\pmbraise@=\dimen104 +\pmbraise@=\dimen136 ) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 2016/03/08 v2.02 operator names ) -\inf@bad=\count88 -LaTeX Info: Redefining \frac on input line 213. -\uproot@=\count89 -\leftroot@=\count90 -LaTeX Info: Redefining \overline on input line 375. -\classnum@=\count91 -\DOTSCASE@=\count92 -LaTeX Info: Redefining \ldots on input line 472. -LaTeX Info: Redefining \dots on input line 475. -LaTeX Info: Redefining \cdots on input line 596. -\Mathstrutbox@=\box26 -\strutbox@=\box27 -\big@size=\dimen105 -LaTeX Font Info: Redeclaring font encoding OML on input line 712. -LaTeX Font Info: Redeclaring font encoding OMS on input line 713. -\macc@depth=\count93 -\c@MaxMatrixCols=\count94 -\dotsspace@=\muskip10 -\c@parentequation=\count95 -\dspbrk@lvl=\count96 -\tag@help=\toks17 -\row@=\count97 -\column@=\count98 -\maxfields@=\count99 -\andhelp@=\toks18 -\eqnshift@=\dimen106 -\alignsep@=\dimen107 -\tagshift@=\dimen108 -\tagwidth@=\dimen109 -\totwidth@=\dimen110 -\lineht@=\dimen111 -\@envbody=\toks19 -\multlinegap=\skip44 -\multlinetaggap=\skip45 -\mathdisplay@stack=\toks20 -LaTeX Info: Redefining \[ on input line 2817. -LaTeX Info: Redefining \] on input line 2818. +\inf@bad=\count177 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count178 +\leftroot@=\count179 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count180 +\DOTSCASE@=\count181 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box45 +\strutbox@=\box46 +\big@size=\dimen137 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count182 +\c@MaxMatrixCols=\count183 +\dotsspace@=\muskip16 +\c@parentequation=\count184 +\dspbrk@lvl=\count185 +\tag@help=\toks18 +\row@=\count186 +\column@=\count187 +\maxfields@=\count188 +\andhelp@=\toks19 +\eqnshift@=\dimen138 +\alignsep@=\dimen139 +\tagshift@=\dimen140 +\tagwidth@=\dimen141 +\totwidth@=\dimen142 +\lineht@=\dimen143 +\@envbody=\toks20 +\multlinegap=\skip50 +\multlinetaggap=\skip51 +\mathdisplay@stack=\toks21 +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. ) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty Package: amssymb 2013/01/14 v3.01 AMS font symbols @@ -428,61 +110,62 @@ Package: amssymb 2013/01/14 v3.01 AMS font symbols Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 106. )) (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.sty -Package: babel 2018/02/14 3.18 The Babel package - -(/usr/share/texlive/texmf-dist/tex/generic/babel/switch.def -File: switch.def 2018/02/14 3.18 Babel switching mechanism -) -(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf -Language: english 2017/06/06 v3.3r English support from the babel system +Package: babel 2020/07/13 3.47 The Babel package (/usr/share/texlive/texmf-dist/tex/generic/babel/babel.def -File: babel.def 2018/02/14 3.18 Babel common definitions -\babel@savecnt=\count100 -\U@D=\dimen112 +File: babel.def 2020/07/13 3.47 Babel common definitions +\babel@savecnt=\count189 +\U@D=\dimen144 +\l@babelnohyphens=\language86 (/usr/share/texlive/texmf-dist/tex/generic/babel/txtbabel.def) -\bbl@dirlevel=\count101 +\bbl@readstream=\read2 ) -\l@british = a dialect from \language\l@english -\l@UKenglish = a dialect from \language\l@english -\l@canadian = a dialect from \language\l@american -\l@australian = a dialect from \language\l@british -\l@newzealand = a dialect from \language\l@british +\bbl@dirlevel=\count190 + +(/usr/share/texlive/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2017/06/06 v3.3r English support from the babel system +Package babel Info: \l@canadian = using hyphenrules for english +(babel) (\language0) on input line 102. +Package babel Info: \l@australian = using hyphenrules for ukenglish +(babel) (\language25) on input line 105. +Package babel Info: \l@newzealand = using hyphenrules for ukenglish +(babel) (\language25) on input line 108. )) (/usr/share/texlive/texmf-dist/tex/latex/psnfss/times.sty -Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) +Package: times 2020/03/25 PSNFSS-v9.3 (SPQR) ) (/usr/share/texlive/texmf-dist/tex/latex/fncychap/fncychap.sty Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters) -\RW=\skip46 -\mylen=\skip47 -\myhi=\skip48 -\px=\skip49 -\py=\skip50 -\pyy=\skip51 -\pxx=\skip52 -\c@AlphaCnt=\count102 -\c@AlphaDecCnt=\count103 +\RW=\skip52 +\mylen=\skip53 +\myhi=\skip54 +\px=\skip55 +\py=\skip56 +\pyy=\skip57 +\pxx=\skip58 +\c@AlphaCnt=\count191 +\c@AlphaDecCnt=\count192 ) (./sphinx.sty Package: sphinx 2019/09/02 v2.3.0 LaTeX package (Sphinx markup) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty -Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO) +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) ) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty -Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) (/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty Package: keyval 2014/10/28 v1.15 key=value parser (DPC) -\KV@toks@=\toks21 +\KV@toks@=\toks22 ) (/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty -Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR) +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) (/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty Package: trig 2016/01/03 v1.10 sin cos tan (DPC) @@ -490,252 +173,101 @@ Package: trig 2016/01/03 v1.10 sin cos tan (DPC) (/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration ) -Package graphics Info: Driver file: pdftex.def on input line 99. +Package graphics Info: Driver file: pdftex.def on input line 105. (/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex )) -\Gin@req@height=\dimen113 -\Gin@req@width=\dimen114 +\Gin@req@height=\dimen145 +\Gin@req@width=\dimen146 ) (/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty -Package: fancyhdr 2017/06/30 v3.9a Extensive control of page headers and footer +Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer s -\f@nch@headwidth=\skip53 -\f@nch@O@elh=\skip54 -\f@nch@O@erh=\skip55 -\f@nch@O@olh=\skip56 -\f@nch@O@orh=\skip57 -\f@nch@O@elf=\skip58 -\f@nch@O@erf=\skip59 -\f@nch@O@olf=\skip60 -\f@nch@O@orf=\skip61 +\f@nch@headwidth=\skip59 +\f@nch@O@elh=\skip60 +\f@nch@O@erh=\skip61 +\f@nch@O@olh=\skip62 +\f@nch@O@orh=\skip63 +\f@nch@O@elf=\skip64 +\f@nch@O@erf=\skip65 +\f@nch@O@olf=\skip66 +\f@nch@O@orf=\skip67 ) (/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty -Package: textcomp 2017/04/05 v2.0i Standard LaTeX package -Package textcomp Info: Sub-encoding information: -(textcomp) 5 = only ISO-Adobe without \textcurrency -(textcomp) 4 = 5 + \texteuro -(textcomp) 3 = 4 + \textohm -(textcomp) 2 = 3 + \textestimated + \textcurrency -(textcomp) 1 = TS1 - \textcircled - \t -(textcomp) 0 = TS1 (full) -(textcomp) Font families with sub-encoding setting implement -(textcomp) only a restricted character set as indicated. -(textcomp) Family '?' is the default used for unknown fonts. -(textcomp) See the documentation for details. -Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.def -File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file -Now handling font encoding TS1 ... -... processing UTF-8 mapping file for font encoding TS1 - -(/usr/share/texlive/texmf-dist/tex/latex/base/ts1enc.dfu -File: ts1enc.dfu 2017/01/28 v1.1t UTF-8 support for inputenc - defining Unicode char U+00A2 (decimal 162) - defining Unicode char U+00A3 (decimal 163) - defining Unicode char U+00A4 (decimal 164) - defining Unicode char U+00A5 (decimal 165) - defining Unicode char U+00A6 (decimal 166) - defining Unicode char U+00A7 (decimal 167) - defining Unicode char U+00A8 (decimal 168) - defining Unicode char U+00A9 (decimal 169) - defining Unicode char U+00AA (decimal 170) - defining Unicode char U+00AC (decimal 172) - defining Unicode char U+00AE (decimal 174) - defining Unicode char U+00AF (decimal 175) - defining Unicode char U+00B0 (decimal 176) - defining Unicode char U+00B1 (decimal 177) - defining Unicode char U+00B2 (decimal 178) - defining Unicode char U+00B3 (decimal 179) - defining Unicode char U+00B4 (decimal 180) - defining Unicode char U+00B5 (decimal 181) - defining Unicode char U+00B6 (decimal 182) - defining Unicode char U+00B7 (decimal 183) - defining Unicode char U+00B9 (decimal 185) - defining Unicode char U+00BA (decimal 186) - defining Unicode char U+00BC (decimal 188) - defining Unicode char U+00BD (decimal 189) - defining Unicode char U+00BE (decimal 190) - defining Unicode char U+00D7 (decimal 215) - defining Unicode char U+00F7 (decimal 247) - defining Unicode char U+0192 (decimal 402) - defining Unicode char U+02C7 (decimal 711) - defining Unicode char U+02D8 (decimal 728) - defining Unicode char U+02DD (decimal 733) - defining Unicode char U+0E3F (decimal 3647) - defining Unicode char U+2016 (decimal 8214) - defining Unicode char U+2020 (decimal 8224) - defining Unicode char U+2021 (decimal 8225) - defining Unicode char U+2022 (decimal 8226) - defining Unicode char U+2030 (decimal 8240) - defining Unicode char U+2031 (decimal 8241) - defining Unicode char U+203B (decimal 8251) - defining Unicode char U+203D (decimal 8253) - defining Unicode char U+2044 (decimal 8260) - defining Unicode char U+204E (decimal 8270) - defining Unicode char U+2052 (decimal 8274) - defining Unicode char U+20A1 (decimal 8353) - defining Unicode char U+20A4 (decimal 8356) - defining Unicode char U+20A6 (decimal 8358) - defining Unicode char U+20A9 (decimal 8361) - defining Unicode char U+20AB (decimal 8363) - defining Unicode char U+20AC (decimal 8364) - defining Unicode char U+20B1 (decimal 8369) - defining Unicode char U+2103 (decimal 8451) - defining Unicode char U+2116 (decimal 8470) - defining Unicode char U+2117 (decimal 8471) - defining Unicode char U+211E (decimal 8478) - defining Unicode char U+2120 (decimal 8480) - defining Unicode char U+2122 (decimal 8482) - defining Unicode char U+2126 (decimal 8486) - defining Unicode char U+2127 (decimal 8487) - defining Unicode char U+212E (decimal 8494) - defining Unicode char U+2190 (decimal 8592) - defining Unicode char U+2191 (decimal 8593) - defining Unicode char U+2192 (decimal 8594) - defining Unicode char U+2193 (decimal 8595) - defining Unicode char U+2329 (decimal 9001) - defining Unicode char U+232A (decimal 9002) - defining Unicode char U+2422 (decimal 9250) - defining Unicode char U+25E6 (decimal 9702) - defining Unicode char U+25EF (decimal 9711) - defining Unicode char U+266A (decimal 9834) -)) -LaTeX Info: Redefining \oldstylenums on input line 334. -Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. -Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. -Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. -Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. -Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. -Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. -Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. -Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. -Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. -Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. -Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. -Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. -Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. -Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. -Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. -Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. -Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. -Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. -Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. -Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. -Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. -Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. -Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. -Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. - -Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. -Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. -Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. -Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. -Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. -Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. -Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. -Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. -Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. -Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. -Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. -Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. -Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. -Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. -Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. -Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. -Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. -Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. -Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. -Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. -Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. -Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. -Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. -Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. -Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. -Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. -Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. -Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. -Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. -Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. -Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. -Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. -Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. -Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. -Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. -Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. -Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package ) (/usr/share/texlive/texmf-dist/tex/latex/titlesec/titlesec.sty -Package: titlesec 2016/03/21 v2.10.2 Sectioning titles -\ttl@box=\box28 -\beforetitleunit=\skip62 -\aftertitleunit=\skip63 -\ttl@plus=\dimen115 -\ttl@minus=\dimen116 -\ttl@toksa=\toks22 -\titlewidth=\dimen117 -\titlewidthlast=\dimen118 -\titlewidthfirst=\dimen119 +Package: titlesec 2019/10/16 v2.13 Sectioning titles +\ttl@box=\box47 +\beforetitleunit=\skip68 +\aftertitleunit=\skip69 +\ttl@plus=\dimen147 +\ttl@minus=\dimen148 +\ttl@toksa=\toks23 +\titlewidth=\dimen149 +\titlewidthlast=\dimen150 +\titlewidthfirst=\dimen151 ) (/usr/share/texlive/texmf-dist/tex/latex/tabulary/tabulary.sty Package: tabulary 2014/06/11 v0.10 tabulary package (DPC) (/usr/share/texlive/texmf-dist/tex/latex/tools/array.sty -Package: array 2016/10/06 v2.4d Tabular extension package (FMi) -\col@sep=\dimen120 -\extrarowheight=\dimen121 -\NC@list=\toks23 -\extratabsurround=\skip64 -\backup@length=\skip65 -) -\TY@count=\count104 -\TY@linewidth=\dimen122 -\tymin=\dimen123 -\tymax=\dimen124 -\TY@tablewidth=\dimen125 +Package: array 2019/08/31 v2.4l Tabular extension package (FMi) +\col@sep=\dimen152 +\ar@mcellbox=\box48 +\extrarowheight=\dimen153 +\NC@list=\toks24 +\extratabsurround=\skip70 +\backup@length=\skip71 +\ar@cellbox=\box49 +) +\TY@count=\count193 +\TY@linewidth=\dimen154 +\tymin=\dimen155 +\tymax=\dimen156 +\TY@tablewidth=\dimen157 ) (/usr/share/texlive/texmf-dist/tex/latex/tools/longtable.sty -Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) -\LTleft=\skip66 -\LTright=\skip67 -\LTpre=\skip68 -\LTpost=\skip69 -\LTchunksize=\count105 -\LTcapwidth=\dimen126 -\LT@head=\box29 -\LT@firsthead=\box30 -\LT@foot=\box31 -\LT@lastfoot=\box32 -\LT@cols=\count106 -\LT@rows=\count107 -\c@LT@tables=\count108 -\c@LT@chunks=\count109 -\LT@p@ftn=\toks24 +Package: longtable 2020/01/07 v4.13 Multi-page Table package (DPC) +\LTleft=\skip72 +\LTright=\skip73 +\LTpre=\skip74 +\LTpost=\skip75 +\LTchunksize=\count194 +\LTcapwidth=\dimen158 +\LT@head=\box50 +\LT@firsthead=\box51 +\LT@foot=\box52 +\LT@lastfoot=\box53 +\LT@cols=\count195 +\LT@rows=\count196 +\c@LT@tables=\count197 +\c@LT@chunks=\count198 +\LT@p@ftn=\toks25 ) (/usr/share/texlive/texmf-dist/tex/latex/varwidth/varwidth.sty Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages -\@vwid@box=\box33 -\sift@deathcycles=\count110 -\@vwid@loff=\dimen127 -\@vwid@roff=\dimen128 +\@vwid@box=\box54 +\sift@deathcycles=\count199 +\@vwid@loff=\dimen159 +\@vwid@roff=\dimen160 ) (./sphinxmulticell.sty Package: sphinxmulticell 2017/02/23 v1.6 better span rows and columns of a tabl e (Sphinx team) -\sphinx@TY@tablewidth=\dimen129 +\sphinx@TY@tablewidth=\dimen161 ) (/usr/share/texlive/texmf-dist/tex/latex/base/makeidx.sty Package: makeidx 2014/09/29 v1.0m Standard LaTeX package ) (/usr/share/texlive/texmf-dist/tex/latex/framed/framed.sty Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks -\OuterFrameSep=\skip70 -\fb@frw=\dimen130 -\fb@frh=\dimen131 -\FrameRule=\dimen132 -\FrameSep=\dimen133 +\OuterFrameSep=\skip76 +\fb@frw=\dimen162 +\fb@frh=\dimen163 +\FrameRule=\dimen164 +\FrameSep=\dimen165 ) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) @@ -755,41 +287,43 @@ Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. ) (/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty -Package: fancyvrb 2008/02/07 - -Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix -<2008/02/07> (tvz) -\FV@CodeLineNo=\count111 -\FV@InFile=\read1 -\FV@TabBox=\box34 -\c@FancyVerbLine=\count112 -\FV@StepNumber=\count113 +Package: fancyvrb 2020/05/03 v3.6 verbatim text (tvz,hv) +\FV@CodeLineNo=\count266 +\FV@InFile=\read3 +\FV@TabBox=\box55 +\c@FancyVerbLine=\count267 +\FV@StepNumber=\count268 \FV@OutFile=\write3 -) (./footnotehyper-sphinx.sty +) +(./footnotehyper-sphinx.sty Package: footnotehyper-sphinx 2017/10/27 v1.7 hyperref aware footnote.sty for s phinx (JFB) -\FNH@notes=\box35 -\FNH@width=\dimen134 +\FNH@notes=\box56 +\FNH@width=\dimen166 ) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty Package: float 2001/11/08 v1.3d Float enhancements (AL) -\c@float@type=\count114 -\float@exts=\toks25 -\float@box=\box36 -\@float@everytoks=\toks26 -\@floatcapt=\box37 +\c@float@type=\count269 +\float@exts=\toks26 +\float@box=\box57 +\@float@everytoks=\toks27 +\@floatcapt=\box58 ) (/usr/share/texlive/texmf-dist/tex/latex/wrapfig/wrapfig.sty -\wrapoverhang=\dimen135 -\WF@size=\dimen136 -\c@WF@wrappedlines=\count115 -\WF@box=\box38 -\WF@everypar=\toks27 +\wrapoverhang=\dimen167 +\WF@size=\dimen168 +\c@WF@wrappedlines=\count270 +\WF@box=\box59 +\WF@everypar=\toks28 Package: wrapfig 2003/01/31 v 3.6 ) (/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip.sty +Rollback for package 'parskip' requested -> version 'v1'. + This corresponds to the release introduced on 2001-04-09. + +(/usr/share/texlive/texmf-dist/tex/latex/parskip/parskip-2001-04-09.sty Package: parskip 2001/04/09 non-zero parskip adjustments -) +)) (/usr/share/texlive/texmf-dist/tex/latex/base/alltt.sty Package: alltt 1997/06/16 v2.0g defines alltt environment ) @@ -803,185 +337,173 @@ Package: capt-of 2009/12/29 v0.2 standard captions outside of floats (/usr/share/texlive/texmf-dist/tex/latex/needspace/needspace.sty Package: needspace 2010/09/12 v1.3d reserve vertical space ) -(/usr/share/texlive/texmf-dist/tex/latex/carlisle/remreset.sty) (./sphinxhighlight.sty Package: sphinxhighlight 2016/05/29 stylesheet for highlighting with pygments ) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty -Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty -Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty -Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO) -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty -Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO) - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty -Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO) -Package ifluatex Info: LuaTeX not detected. -) -Package etexcmds Info: Could not find \expanded. -(etexcmds) That can mean that you are not using pdfTeX 1.50 or -(etexcmds) that some package has redefined \expanded. -(etexcmds) In the latter case, load this package earlier. -))) -\sphinxverbatimsep=\dimen137 -\sphinxverbatimborder=\dimen138 -\sphinxshadowsep=\dimen139 -\sphinxshadowsize=\dimen140 -\sphinxshadowrule=\dimen141 -\spx@notice@border=\dimen142 -\spx@image@maxheight=\dimen143 -\spx@image@box=\dimen144 -\c@literalblock=\count116 -\sphinxcontinuationbox=\box39 -\sphinxvisiblespacebox=\box40 -\sphinxVerbatim@TitleBox=\box41 -\sphinxVerbatim@ContentsBox=\box42 -\py@argswidth=\skip71 -\lineblockindentation=\skip72 -\DUlineblockindent=\skip73 +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +)) +\sphinxverbatimsep=\dimen169 +\sphinxverbatimborder=\dimen170 +\sphinxshadowsep=\dimen171 +\sphinxshadowsize=\dimen172 +\sphinxshadowrule=\dimen173 +\spx@notice@border=\dimen174 +\spx@image@maxheight=\dimen175 +\spx@image@box=\dimen176 +\c@literalblock=\count271 +\sphinxcontinuationbox=\box60 +\sphinxvisiblespacebox=\box61 +\sphinxVerbatim@TitleBox=\box62 +\sphinxVerbatim@ContentsBox=\box63 +\py@argswidth=\skip77 +\lineblockindentation=\skip78 +\DUlineblockindent=\skip79 ) (/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty -Package: geometry 2010/09/12 v5.6 Page Geometry - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty -Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch -) -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty -Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO) -Package ifvtex Info: VTeX not detected. -) -(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty -Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional -) -\Gm@cnth=\count117 -\Gm@cntv=\count118 -\c@Gm@tempcnt=\count119 -\Gm@bindingoffset=\dimen145 -\Gm@wd@mp=\dimen146 -\Gm@odd@mp=\dimen147 -\Gm@even@mp=\dimen148 -\Gm@layoutwidth=\dimen149 -\Gm@layoutheight=\dimen150 -\Gm@layouthoffset=\dimen151 -\Gm@layoutvoffset=\dimen152 -\Gm@dimlist=\toks28 +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2020/03/06 v1.0d TeX engine tests +)) +\Gm@cnth=\count272 +\Gm@cntv=\count273 +\c@Gm@tempcnt=\count274 +\Gm@bindingoffset=\dimen177 +\Gm@wd@mp=\dimen178 +\Gm@odd@mp=\dimen179 +\Gm@even@mp=\dimen180 +\Gm@layoutwidth=\dimen181 +\Gm@layoutheight=\dimen182 +\Gm@layouthoffset=\dimen183 +\Gm@layoutvoffset=\dimen184 +\Gm@dimlist=\toks29 ) (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty -Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty -Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO) - - -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty -Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO) -Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO) -Package hobsub Info: Skipping package `infwarerr' (already loaded). -Package hobsub Info: Skipping package `ltxcmds' (already loaded). -Package hobsub Info: Skipping package `ifluatex' (already loaded). -Package hobsub Info: Skipping package `ifvtex' (already loaded). -Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO) -Package hobsub Info: Skipping package `ifpdf' (already loaded). -Package hobsub Info: Skipping package `etexcmds' (already loaded). -Package hobsub Info: Skipping package `kvsetkeys' (already loaded). -Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO) -Package: pdftexcmds 2018/01/21 v0.26 Utility functions of pdfTeX for LuaTeX (HO -) -Package pdftexcmds Info: LuaTeX not detected. +Package: hyperref 2020-05-15 v7.00e Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/generic/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2020-06-27 v0.33 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +) Package pdftexcmds Info: \pdf@primitive is available. Package pdftexcmds Info: \pdf@ifprimitive is available. Package pdftexcmds Info: \pdfdraftmode found. -Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO) -Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO ) -Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO) -Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO) +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) ) -Package hobsub Info: Skipping package `hobsub' (already loaded). -Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO) -Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO) -Package: xcolor-patch 2016/05/16 xcolor patch -Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO) -Package atveryend Info: \enddocument detected (standard20110627). -Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO) -Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO) -Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) ) -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty -Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) ) -\@linkdim=\dimen153 -\Hy@linkcounter=\count120 -\Hy@pagecounter=\count121 +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +\@linkdim=\dimen185 +\Hy@linkcounter=\count275 +\Hy@pagecounter=\count276 (/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def -File: pd1enc.def 2018/02/06 v6.86b Hyperref: PDFDocEncoding definition (HO) +File: pd1enc.def 2020-05-15 v7.00e Hyperref: PDFDocEncoding definition (HO) Now handling font encoding PD1 ... ... no UTF-8 mapping file for font encoding PD1 ) -\Hy@SavedSpaceFactor=\count122 - -(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg -File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) ) -Package hyperref Info: Option `unicode' set `true' on input line 4383. +(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count277 +Package hyperref Info: Option `unicode' set `true' on input line 4338. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def -File: puenc.def 2018/02/06 v6.86b Hyperref: PDF Unicode definition (HO) +File: puenc.def 2020-05-15 v7.00e Hyperref: PDF Unicode definition (HO) Now handling font encoding PU ... ... no UTF-8 mapping file for font encoding PU ) -Package hyperref Info: Option `colorlinks' set `true' on input line 4383. -Package hyperref Info: Option `breaklinks' set `true' on input line 4383. -Package hyperref Info: Hyper figures OFF on input line 4509. -Package hyperref Info: Link nesting OFF on input line 4514. -Package hyperref Info: Hyper index ON on input line 4517. -Package hyperref Info: Plain pages OFF on input line 4524. -Package hyperref Info: Backreferencing OFF on input line 4529. +Package hyperref Info: Option `colorlinks' set `true' on input line 4338. +Package hyperref Info: Option `breaklinks' set `true' on input line 4338. +Package hyperref Info: Hyper figures OFF on input line 4464. +Package hyperref Info: Link nesting OFF on input line 4469. +Package hyperref Info: Hyper index ON on input line 4472. +Package hyperref Info: Plain pages OFF on input line 4479. +Package hyperref Info: Backreferencing OFF on input line 4484. Package hyperref Info: Implicit mode ON; LaTeX internals redefined. -Package hyperref Info: Bookmarks ON on input line 4762. -\c@Hy@tempcnt=\count123 +Package hyperref Info: Bookmarks ON on input line 4717. +\c@Hy@tempcnt=\count278 (/usr/share/texlive/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip11 +\Urlmuskip=\muskip17 Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. ) -LaTeX Info: Redefining \url on input line 5115. -\XeTeXLinkMargin=\dimen154 -\Fld@menulength=\count124 -\Field@Width=\dimen155 -\Fld@charsize=\dimen156 -Package hyperref Info: Hyper figures OFF on input line 6369. -Package hyperref Info: Link nesting OFF on input line 6374. -Package hyperref Info: Hyper index ON on input line 6377. -Package hyperref Info: backreferencing OFF on input line 6384. -Package hyperref Info: Link coloring ON on input line 6387. -Package hyperref Info: Link coloring with OCG OFF on input line 6394. -Package hyperref Info: PDF/A mode OFF on input line 6399. -LaTeX Info: Redefining \ref on input line 6439. -LaTeX Info: Redefining \pageref on input line 6443. -\Hy@abspage=\count125 -\c@Item=\count126 -\c@Hfootnote=\count127 +LaTeX Info: Redefining \url on input line 5076. +\XeTeXLinkMargin=\dimen186 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count279 +\Field@Width=\dimen187 +\Fld@charsize=\dimen188 +Package hyperref Info: Hyper figures OFF on input line 6347. +Package hyperref Info: Link nesting OFF on input line 6352. +Package hyperref Info: Hyper index ON on input line 6355. +Package hyperref Info: backreferencing OFF on input line 6362. +Package hyperref Info: Link coloring ON on input line 6365. +Package hyperref Info: Link coloring with OCG OFF on input line 6372. +Package hyperref Info: PDF/A mode OFF on input line 6377. +LaTeX Info: Redefining \ref on input line 6417. +LaTeX Info: Redefining \pageref on input line 6421. + +(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) +) +\Hy@abspage=\count280 +\c@Item=\count281 +\c@Hfootnote=\count282 ) Package hyperref Info: Driver (autodetected): hpdftex. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def -File: hpdftex.def 2018/02/06 v6.86b Hyperref driver for pdfTeX -\Fld@listcount=\count128 -\c@bookmark@seq@number=\count129 +File: hpdftex.def 2020-05-15 v7.00e Hyperref driver for pdfTeX -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty -Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO) +(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +) +\Fld@listcount=\count283 +\c@bookmark@seq@number=\count284 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 -82. +86. ) -\Hy@SectionHShift=\skip74 +\Hy@SectionHShift=\skip80 ) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/hypcap.sty Package: hypcap 2016/05/16 v1.12 Adjusting the anchors of captions (HO) @@ -994,61 +516,54 @@ Package: sphinxmessages 2019/01/04 v2.0 Localized LaTeX macros (Sphinx team) Writing index file DFOLS.idx +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-06-29 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count285 +\l__pdf_internal_box=\box64 +) (./DFOLS.aux) \openout1 = `DFOLS.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 82. LaTeX Font Info: ... okay on input line 82. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 82. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 82. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. -LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 82. -LaTeX Font Info: Try loading font information for TS1+cmr on input line 82. - (/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmr.fd -File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions -) -LaTeX Font Info: ... okay on input line 82. LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 82. LaTeX Font Info: ... okay on input line 82. -LaTeX Font Info: Try loading font information for T1+ptm on input line 82. - -(/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd +LaTeX Font Info: Trying to load font information for T1+ptm on input line 82 +. + (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1ptm.fd File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. ) (/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii [Loading MPS to PDF converter (version 2006.09.02).] -\scratchcounter=\count130 -\scratchdimen=\dimen157 -\scratchbox=\box43 -\nofMPsegments=\count131 -\nofMParguments=\count132 -\everyMPshowfont=\toks29 -\MPscratchCnt=\count133 -\MPscratchDim=\dimen158 -\MPnumerator=\count134 -\makeMPintoPDFobject=\count135 -\everyMPtoPDFconversion=\toks30 -) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty -Package: epstopdf-base 2016/05/15 v2.6 Base part for package epstopdf - -(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty -Package: grfext 2016/05/16 v1.2 Manage graphics extensions (HO) -) +\scratchcounter=\count286 +\scratchdimen=\dimen189 +\scratchbox=\box65 +\nofMPsegments=\count287 +\nofMParguments=\count288 +\everyMPshowfont=\toks30 +\MPscratchCnt=\count289 +\MPscratchDim=\dimen190 +\MPnumerator=\count290 +\makeMPintoPDFobject=\count291 +\everyMPtoPDFconversion=\toks31 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 -38. -Package grfext Info: Graphics extension search list: -(grfext) [.pdf,.png,.jpg,.mps,.jpeg,.jbig2,.jb2,.PDF,.PNG,.JPG,.JPE -G,.JBIG2,.JB2,.eps] -(grfext) \AppendGraphicsExtensions on input line 456. +85. (/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv @@ -1088,15 +603,18 @@ e * \@reversemarginfalse * (1in=72.27pt=25.4mm, 1cm=28.453pt) -\AtBeginShipoutBox=\box44 +\AtBeginShipoutBox=\box66 Package hyperref Info: Link coloring ON on input line 82. (/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty -Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section -(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.sty -Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO) +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) ) -\c@section@level=\count136 +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count292 ) LaTeX Info: Redefining \ref on input line 82. LaTeX Info: Redefining \pageref on input line 82. @@ -1107,50 +625,34 @@ LaTeX Info: Redefining \nameref on input line 82. \openout5 = `DFOLS.out'. Package hyperref Info: Option `pageanchor' set `false' on input line 85. -LaTeX Font Info: Try loading font information for T1+phv on input line 85. +LaTeX Font Info: Trying to load font information for T1+phv on input line 85 +. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1phv.fd -File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. -) -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <10> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 85. -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 85. -LaTeX Font Info: Font shape `T1/phv/bx/it' in size <10> not available -(Font) Font shape `T1/phv/b/it' tried instead on input line 85. +File: t1phv.fd 2020/03/25 scalable font definitions for T1/phv. +) LaTeX Font Info: Font shape `T1/phv/b/it' in size <10> not available (Font) Font shape `T1/phv/b/sl' tried instead on input line 85. -LaTeX Font Info: Font shape `T1/phv/bx/it' in size <17.28> not available -(Font) Font shape `T1/phv/b/it' tried instead on input line 85. LaTeX Font Info: Font shape `T1/phv/b/it' in size <17.28> not available (Font) Font shape `T1/phv/b/sl' tried instead on input line 85. -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 85. <><><><> -LaTeX Font Info: Try loading font information for U+msa on input line 85. +LaTeX Font Info: Trying to load font information for U+msa on input line 85. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2013/01/14 v3.01 AMS symbols A ) -LaTeX Font Info: Try loading font information for U+msb on input line 85. +LaTeX Font Info: Trying to load font information for U+msb on input line 85. + (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2013/01/14 v3.01 AMS symbols B -) -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 85. - [1 +) [1 {/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2 -] -LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available -(Font) Font shape `T1/phv/b/n' tried instead on input line 87. - (./DFOLS.toc -LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available -(Font) Font shape `T1/ptm/b/n' tried instead on input line 2. - [1 +] (./DFOLS.toc [1 ]) \tf@toc=\write6 @@ -1162,18 +664,19 @@ LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available ] Chapter 1. -LaTeX Font Info: Try loading font information for TS1+ptm on input line 121. - +LaTeX Font Info: Trying to load font information for TS1+ptm on input line 1 +22. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1ptm.fd File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm. ) -LaTeX Font Info: Try loading font information for T1+pcr on input line 139. +LaTeX Font Info: Trying to load font information for T1+pcr on input line 14 +0. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/t1pcr.fd File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. ) [3] LaTeX Font Info: Font shape `T1/pcr/m/it' in size <9> not available -(Font) Font shape `T1/pcr/m/sl' tried instead on input line 215. +(Font) Font shape `T1/pcr/m/sl' tried instead on input line 216. [4] Chapter 2. [5 @@ -1182,111 +685,132 @@ Chapter 2. ] Chapter 3. -[9] -LaTeX Font Info: Font shape `T1/pcr/bx/n' in size <9> not available -(Font) Font shape `T1/pcr/b/n' tried instead on input line 425. - [10] -LaTeX Font Info: Try loading font information for TS1+pcr on input line 1. +[9] [10] +LaTeX Font Info: Trying to load font information for TS1+pcr on input line 1 +. (/usr/share/texlive/texmf-dist/tex/latex/psnfss/ts1pcr.fd File: ts1pcr.fd 2001/06/04 font definitions for TS1/pcr. ) [11] [12] [13] -Overfull \vbox (2.68167pt too high) detected at line 716 +LaTeX Font Info: Font shape `TS1/pcr/m/it' in size <9> not available +(Font) Font shape `TS1/pcr/m/sl' tried instead on input line 654. + [14] [15] + +Package textcomp Warning: Symbol \textasciigrave not provided by +(textcomp) font family pcr in TS1 encoding. +(textcomp) Default family used instead on input line 818. + +LaTeX Font Info: Trying to load font information for T1+cmtt on input line 8 +18. +(/usr/share/texlive/texmf-dist/tex/latex/base/t1cmtt.fd +File: t1cmtt.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) +LaTeX Font Info: Trying to load font information for TS1+cmtt on input line +818. + +(/usr/share/texlive/texmf-dist/tex/latex/base/ts1cmtt.fd +File: ts1cmtt.fd 2019/12/16 v2.5j Standard LaTeX font definitions +) + +Package textcomp Warning: Symbol \textasciigrave not provided by +(textcomp) font family pcr in TS1 encoding. +(textcomp) Default family used instead on input line 818. + + +Overfull \vbox (2.68167pt too high) detected at line 819 [] -[14] [15] - +[16] [17] + File: data_fitting.png Graphic file (type png) -Package pdftex.def Info: data_fitting.png used on input line 816. +Package pdftex.def Info: data_fitting.png used on input line 919. (pdftex.def) Requested size: 352.31625pt x 270.79639pt. - [16] -Overfull \vbox (2.92438pt too high) detected at line 876 - [] - -[17 <./data_fitting.png>] [18] + [18 <./data_fitting.png>] [19] [20] Chapter 4. -[19 +[21 -] [20] -Underfull \hbox (badness 10000) in paragraph at lines 1044--1045 +] [22] +Underfull \hbox (badness 10000) in paragraph at lines 1147--1148 []\T1/pcr/m/n/10 regression.increase_num_extra_steps_with_restart \T1/ptm/m/n/1 0 - The amount to in-crease [] -Underfull \hbox (badness 10000) in paragraph at lines 1079--1080 +Underfull \hbox (badness 10000) in paragraph at lines 1182--1183 []\T1/pcr/m/n/10 restarts.hard.increase_ndirs_initial_amt \T1/ptm/m/n/10 - Amou nt to in-crease \T1/pcr/m/n/10 growing. [] -[21] -Underfull \hbox (badness 8000) in paragraph at lines 1114--1115 +[23] +Underfull \hbox (badness 8000) in paragraph at lines 1217--1218 \T1/ptm/m/n/10 De-fault is \T1/pcr/m/n/10 False \T1/ptm/m/n/10 if $\OML/cmm/m/i t/10 m \OMS/cmsy/m/n/10 ^^U \OML/cmm/m/it/10 n$ \T1/ptm/m/n/10 and \T1/pcr/m/n/ 10 True \T1/ptm/m/n/10 oth-er-wise (op-po-site to \T1/pcr/m/n/10 growing.full_r ank. [] -[22] [23] [24 +[24] [25] [26 ] Chapter 5. -[25] [26] +[27] [28] Chapter 6. -[27 +[29 -] [28] +] [30] Chapter 7. -[29 +[31 -] [30 +] [32 ] (./DFOLS.ind) -Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1397. - [31 +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1530. + [33 ] -Package atveryend Info: Empty hook `AfterLastShipout' on input line 1397. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 1530. (./DFOLS.aux) -Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1397. -Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1397. +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 1530. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1530. Package rerunfilecheck Info: File `DFOLS.out' has not changed. -(rerunfilecheck) Checksum: 0DA220324F9F4FF77D55207662CCF7C0;9013. -Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1397. +(rerunfilecheck) Checksum: 341A503F84264C9DB95170FED7C7200B;9791. +Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1530. ) Here is how much of TeX's memory you used: - 13838 strings out of 494923 - 192129 string characters out of 6180742 - 326077 words of memory out of 5000000 - 16743 multiletter control sequences out of 15000+600000 - 52360 words of font info for 74 fonts, out of 8000000 for 9000 - 15 hyphenation exceptions out of 8191 - 37i,17n,51p,887b,548s stack positions out of 5000i,500n,10000p,200000b,80000s -{/usr/share/texlive/texmf-dist/fonts/enc/dvips/base/8r.enc}< -/usr/share/texlive/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb> -Output written on DFOLS.pdf (35 pages, 302355 bytes). + 13798 strings out of 480906 + 195638 string characters out of 5910771 + 539271 words of memory out of 5000000 + 28952 multiletter control sequences out of 15000+600000 + 584730 words of font info for 92 fonts, out of 8000000 for 9000 + 1142 hyphenation exceptions out of 8191 + 44i,17n,49p,887b,548s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texmf/fonts/enc/dvips/cm-super/cm-super-ts1.enc}{/usr/share/texli +ve/texmf-dist/fonts/enc/dvips/base/8r.enc} +Output written on DFOLS.pdf (37 pages, 324914 bytes). PDF statistics: - 584 PDF objects out of 1000 (max. 8388607) - 514 compressed objects within 6 object streams - 92 named destinations out of 1000 (max. 500000) - 450 words of extra memory for PDF output out of 10000 (max. 10000000) + 621 PDF objects out of 1000 (max. 8388607) + 548 compressed objects within 6 object streams + 98 named destinations out of 1000 (max. 500000) + 482 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/docs/build/latex/DFOLS.out b/docs/build/latex/DFOLS.out index c21e6e1..6bdb40d 100755 --- a/docs/build/latex/DFOLS.out +++ b/docs/build/latex/DFOLS.out @@ -16,38 +16,42 @@ \BOOKMARK [1][-]{section.3.3}{\376\377\000O\000p\000t\000i\000o\000n\000a\000l\000\040\000A\000r\000g\000u\000m\000e\000n\000t\000s}{chapter.3}% 16 \BOOKMARK [1][-]{section.3.4}{\376\377\000A\000\040\000S\000i\000m\000p\000l\000e\000\040\000E\000x\000a\000m\000p\000l\000e}{chapter.3}% 17 \BOOKMARK [1][-]{section.3.5}{\376\377\000A\000d\000d\000i\000n\000g\000\040\000B\000o\000u\000n\000d\000s\000\040\000a\000n\000d\000\040\000M\000o\000r\000e\000\040\000O\000u\000t\000p\000u\000t}{chapter.3}% 18 -\BOOKMARK [1][-]{section.3.6}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000N\000o\000i\000s\000y\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000\040\000E\000v\000a\000l\000u\000a\000t\000i\000o\000n}{chapter.3}% 19 -\BOOKMARK [1][-]{section.3.7}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000E\000s\000t\000i\000m\000a\000t\000i\000o\000n\000/\000D\000a\000t\000a\000\040\000F\000i\000t\000t\000i\000n\000g}{chapter.3}% 20 -\BOOKMARK [1][-]{section.3.8}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000S\000o\000l\000v\000i\000n\000g\000\040\000a\000\040\000N\000o\000n\000l\000i\000n\000e\000a\000r\000\040\000S\000y\000s\000t\000e\000m\000\040\000o\000f\000\040\000E\000q\000u\000a\000t\000i\000o\000n\000s}{chapter.3}% 21 -\BOOKMARK [1][-]{section.3.9}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{chapter.3}% 22 -\BOOKMARK [0][-]{chapter.4}{\376\377\000A\000d\000v\000a\000n\000c\000e\000d\000\040\000U\000s\000a\000g\000e}{}% 23 -\BOOKMARK [1][-]{section.4.1}{\376\377\000G\000e\000n\000e\000r\000a\000l\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s}{chapter.4}% 24 -\BOOKMARK [1][-]{section.4.2}{\376\377\000L\000o\000g\000g\000i\000n\000g\000\040\000a\000n\000d\000\040\000O\000u\000t\000p\000u\000t}{chapter.4}% 25 -\BOOKMARK [1][-]{section.4.3}{\376\377\000I\000n\000i\000t\000i\000a\000l\000i\000z\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000P\000o\000i\000n\000t\000s}{chapter.4}% 26 -\BOOKMARK [1][-]{section.4.4}{\376\377\000T\000r\000u\000s\000t\000\040\000R\000e\000g\000i\000o\000n\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 27 -\BOOKMARK [1][-]{section.4.5}{\376\377\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n\000\040\000o\000n\000\040\000S\000m\000a\000l\000l\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000\040\000V\000a\000l\000u\000e}{chapter.4}% 28 -\BOOKMARK [1][-]{section.4.6}{\376\377\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n\000\040\000o\000n\000\040\000S\000l\000o\000w\000\040\000P\000r\000o\000g\000r\000e\000s\000s}{chapter.4}% 29 -\BOOKMARK [1][-]{section.4.7}{\376\377\000S\000t\000o\000c\000h\000a\000s\000t\000i\000c\000\040\000N\000o\000i\000s\000e\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{chapter.4}% 30 -\BOOKMARK [1][-]{section.4.8}{\376\377\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000i\000o\000n\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 31 -\BOOKMARK [1][-]{section.4.9}{\376\377\000R\000e\000g\000r\000e\000s\000s\000i\000o\000n\000\040\000M\000o\000d\000e\000l\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 32 -\BOOKMARK [1][-]{section.4.10}{\376\377\000M\000u\000l\000t\000i\000p\000l\000e\000\040\000R\000e\000s\000t\000a\000r\000t\000s}{chapter.4}% 33 -\BOOKMARK [1][-]{section.4.11}{\376\377\000D\000y\000n\000a\000m\000i\000c\000a\000l\000l\000y\000\040\000G\000r\000o\000w\000i\000n\000g\000\040\000I\000n\000i\000t\000i\000a\000l\000\040\000S\000e\000t}{chapter.4}% 34 -\BOOKMARK [1][-]{section.4.12}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{chapter.4}% 35 -\BOOKMARK [0][-]{chapter.5}{\376\377\000D\000i\000a\000g\000n\000o\000s\000t\000i\000c\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{}% 36 -\BOOKMARK [1][-]{section.5.1}{\376\377\000C\000u\000r\000r\000e\000n\000t\000\040\000I\000t\000e\000r\000a\000t\000e}{chapter.5}% 37 -\BOOKMARK [1][-]{section.5.2}{\376\377\000T\000r\000u\000s\000t\000\040\000R\000e\000g\000i\000o\000n}{chapter.5}% 38 -\BOOKMARK [1][-]{section.5.3}{\376\377\000M\000o\000d\000e\000l\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000i\000o\000n}{chapter.5}% 39 -\BOOKMARK [1][-]{section.5.4}{\376\377\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000C\000o\000u\000n\000t}{chapter.5}% 40 -\BOOKMARK [1][-]{section.5.5}{\376\377\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000P\000r\000o\000g\000r\000e\000s\000s}{chapter.5}% 41 -\BOOKMARK [0][-]{chapter.6}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\000H\000i\000s\000t\000o\000r\000y}{}% 42 -\BOOKMARK [1][-]{section.6.1}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000\040\000\050\0006\000\040\000F\000e\000b\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 43 -\BOOKMARK [1][-]{section.6.2}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000.\0001\000\040\000\050\0002\0000\000\040\000F\000e\000b\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 44 -\BOOKMARK [1][-]{section.6.3}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000.\0002\000\040\000\050\0002\0000\000\040\000J\000u\000n\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 45 -\BOOKMARK [1][-]{section.6.4}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0001\000\040\000\050\0001\0006\000\040\000J\000a\000n\000\040\0002\0000\0001\0009\000\051}{chapter.6}% 46 -\BOOKMARK [1][-]{section.6.5}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0001\000.\0001\000\040\000\050\0005\000\040\000A\000p\000r\000\040\0002\0000\0001\0009\000\051}{chapter.6}% 47 -\BOOKMARK [1][-]{section.6.6}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000\040\000\050\0001\0002\000\040\000F\000e\000b\000\040\0002\0000\0002\0000\000\051}{chapter.6}% 48 -\BOOKMARK [1][-]{section.6.7}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0001\000\040\000\050\0001\0003\000\040\000F\000e\000b\000\040\0002\0000\0002\0000\000\051}{chapter.6}% 49 -\BOOKMARK [1][-]{section.6.8}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0002\000\040\000\050\0002\0006\000\040\000F\000e\000b\000\040\0002\0000\0002\0001\000\051}{chapter.6}% 50 -\BOOKMARK [1][-]{section.6.9}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0003\000\040\000\050\0001\000\040\000J\000u\000n\000\040\0002\0000\0002\0001\000\051}{chapter.6}% 51 -\BOOKMARK [0][-]{chapter.7}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000e\000m\000e\000n\000t\000s}{}% 52 -\BOOKMARK [0][-]{chapter*.3}{\376\377\000B\000i\000b\000l\000i\000o\000g\000r\000a\000p\000h\000y}{}% 53 +\BOOKMARK [1][-]{section.3.6}{\376\377\000H\000a\000n\000d\000l\000i\000n\000g\000\040\000A\000r\000b\000i\000t\000r\000a\000r\000y\000\040\000C\000o\000n\000v\000e\000x\000\040\000C\000o\000n\000s\000t\000r\000a\000i\000n\000t\000s}{chapter.3}% 19 +\BOOKMARK [1][-]{section.3.7}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000N\000o\000i\000s\000y\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000\040\000E\000v\000a\000l\000u\000a\000t\000i\000o\000n}{chapter.3}% 20 +\BOOKMARK [1][-]{section.3.8}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000\040\000E\000s\000t\000i\000m\000a\000t\000i\000o\000n\000/\000D\000a\000t\000a\000\040\000F\000i\000t\000t\000i\000n\000g}{chapter.3}% 21 +\BOOKMARK [1][-]{section.3.9}{\376\377\000E\000x\000a\000m\000p\000l\000e\000:\000\040\000S\000o\000l\000v\000i\000n\000g\000\040\000a\000\040\000N\000o\000n\000l\000i\000n\000e\000a\000r\000\040\000S\000y\000s\000t\000e\000m\000\040\000o\000f\000\040\000E\000q\000u\000a\000t\000i\000o\000n\000s}{chapter.3}% 22 +\BOOKMARK [1][-]{section.3.10}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{chapter.3}% 23 +\BOOKMARK [0][-]{chapter.4}{\376\377\000A\000d\000v\000a\000n\000c\000e\000d\000\040\000U\000s\000a\000g\000e}{}% 24 +\BOOKMARK [1][-]{section.4.1}{\376\377\000G\000e\000n\000e\000r\000a\000l\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s}{chapter.4}% 25 +\BOOKMARK [1][-]{section.4.2}{\376\377\000L\000o\000g\000g\000i\000n\000g\000\040\000a\000n\000d\000\040\000O\000u\000t\000p\000u\000t}{chapter.4}% 26 +\BOOKMARK [1][-]{section.4.3}{\376\377\000I\000n\000i\000t\000i\000a\000l\000i\000z\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000P\000o\000i\000n\000t\000s}{chapter.4}% 27 +\BOOKMARK [1][-]{section.4.4}{\376\377\000T\000r\000u\000s\000t\000\040\000R\000e\000g\000i\000o\000n\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 28 +\BOOKMARK [1][-]{section.4.5}{\376\377\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n\000\040\000o\000n\000\040\000S\000m\000a\000l\000l\000\040\000O\000b\000j\000e\000c\000t\000i\000v\000e\000\040\000V\000a\000l\000u\000e}{chapter.4}% 29 +\BOOKMARK [1][-]{section.4.6}{\376\377\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n\000\040\000o\000n\000\040\000S\000l\000o\000w\000\040\000P\000r\000o\000g\000r\000e\000s\000s}{chapter.4}% 30 +\BOOKMARK [1][-]{section.4.7}{\376\377\000S\000t\000o\000c\000h\000a\000s\000t\000i\000c\000\040\000N\000o\000i\000s\000e\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{chapter.4}% 31 +\BOOKMARK [1][-]{section.4.8}{\376\377\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000i\000o\000n\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 32 +\BOOKMARK [1][-]{section.4.9}{\376\377\000R\000e\000g\000r\000e\000s\000s\000i\000o\000n\000\040\000M\000o\000d\000e\000l\000\040\000M\000a\000n\000a\000g\000e\000m\000e\000n\000t}{chapter.4}% 33 +\BOOKMARK [1][-]{section.4.10}{\376\377\000M\000u\000l\000t\000i\000p\000l\000e\000\040\000R\000e\000s\000t\000a\000r\000t\000s}{chapter.4}% 34 +\BOOKMARK [1][-]{section.4.11}{\376\377\000D\000y\000n\000a\000m\000i\000c\000a\000l\000l\000y\000\040\000G\000r\000o\000w\000i\000n\000g\000\040\000I\000n\000i\000t\000i\000a\000l\000\040\000S\000e\000t}{chapter.4}% 35 +\BOOKMARK [1][-]{section.4.12}{\376\377\000D\000y\000k\000s\000t\000r\000a\040\031\000s\000\040\000A\000l\000g\000o\000r\000i\000t\000h\000m}{chapter.4}% 36 +\BOOKMARK [1][-]{section.4.13}{\376\377\000C\000h\000e\000c\000k\000i\000n\000g\000\040\000M\000a\000t\000r\000i\000x\000\040\000R\000a\000n\000k}{chapter.4}% 37 +\BOOKMARK [1][-]{section.4.14}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{chapter.4}% 38 +\BOOKMARK [0][-]{chapter.5}{\376\377\000D\000i\000a\000g\000n\000o\000s\000t\000i\000c\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{}% 39 +\BOOKMARK [1][-]{section.5.1}{\376\377\000C\000u\000r\000r\000e\000n\000t\000\040\000I\000t\000e\000r\000a\000t\000e}{chapter.5}% 40 +\BOOKMARK [1][-]{section.5.2}{\376\377\000T\000r\000u\000s\000t\000\040\000R\000e\000g\000i\000o\000n}{chapter.5}% 41 +\BOOKMARK [1][-]{section.5.3}{\376\377\000M\000o\000d\000e\000l\000\040\000I\000n\000t\000e\000r\000p\000o\000l\000a\000t\000i\000o\000n}{chapter.5}% 42 +\BOOKMARK [1][-]{section.5.4}{\376\377\000I\000t\000e\000r\000a\000t\000i\000o\000n\000\040\000C\000o\000u\000n\000t}{chapter.5}% 43 +\BOOKMARK [1][-]{section.5.5}{\376\377\000A\000l\000g\000o\000r\000i\000t\000h\000m\000\040\000P\000r\000o\000g\000r\000e\000s\000s}{chapter.5}% 44 +\BOOKMARK [0][-]{chapter.6}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\000H\000i\000s\000t\000o\000r\000y}{}% 45 +\BOOKMARK [1][-]{section.6.1}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000\040\000\050\0006\000\040\000F\000e\000b\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 46 +\BOOKMARK [1][-]{section.6.2}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000.\0001\000\040\000\050\0002\0000\000\040\000F\000e\000b\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 47 +\BOOKMARK [1][-]{section.6.3}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0000\000.\0002\000\040\000\050\0002\0000\000\040\000J\000u\000n\000\040\0002\0000\0001\0008\000\051}{chapter.6}% 48 +\BOOKMARK [1][-]{section.6.4}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0001\000\040\000\050\0001\0006\000\040\000J\000a\000n\000\040\0002\0000\0001\0009\000\051}{chapter.6}% 49 +\BOOKMARK [1][-]{section.6.5}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0001\000.\0001\000\040\000\050\0005\000\040\000A\000p\000r\000\040\0002\0000\0001\0009\000\051}{chapter.6}% 50 +\BOOKMARK [1][-]{section.6.6}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000\040\000\050\0001\0002\000\040\000F\000e\000b\000\040\0002\0000\0002\0000\000\051}{chapter.6}% 51 +\BOOKMARK [1][-]{section.6.7}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0001\000\040\000\050\0001\0003\000\040\000F\000e\000b\000\040\0002\0000\0002\0000\000\051}{chapter.6}% 52 +\BOOKMARK [1][-]{section.6.8}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0002\000\040\000\050\0002\0006\000\040\000F\000e\000b\000\040\0002\0000\0002\0001\000\051}{chapter.6}% 53 +\BOOKMARK [1][-]{section.6.9}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0002\000.\0003\000\040\000\050\0001\000\040\000J\000u\000n\000\040\0002\0000\0002\0001\000\051}{chapter.6}% 54 +\BOOKMARK [1][-]{section.6.10}{\376\377\000V\000e\000r\000s\000i\000o\000n\000\040\0001\000.\0003\000.\0000\000\040\000\050\0001\0006\000\040\000O\000c\000t\000\040\0002\0000\0002\0001\000\051}{chapter.6}% 55 +\BOOKMARK [0][-]{chapter.7}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000e\000m\000e\000n\000t\000s}{}% 56 +\BOOKMARK [0][-]{chapter*.3}{\376\377\000B\000i\000b\000l\000i\000o\000g\000r\000a\000p\000h\000y}{}% 57 diff --git a/docs/build/latex/DFOLS.pdf b/docs/build/latex/DFOLS.pdf index 3eb1243..713bd1e 100755 Binary files a/docs/build/latex/DFOLS.pdf and b/docs/build/latex/DFOLS.pdf differ diff --git a/docs/build/latex/DFOLS.tex b/docs/build/latex/DFOLS.tex index 2669ee3..e692098 100755 --- a/docs/build/latex/DFOLS.tex +++ b/docs/build/latex/DFOLS.tex @@ -73,8 +73,8 @@ \title{DFO-LS Documentation} -\date{01 June 2021} -\release{1.2.3} +\date{07 November 2021} +\release{1.3.0} \author{Lindon Roberts} \newcommand{\sphinxlogo}{\vbox{}} \renewcommand{\releasename}{Release} @@ -89,20 +89,21 @@ \phantomsection\label{\detokenize{index::doc}} -\sphinxstylestrong{Release:} 1.2.3 +\sphinxstylestrong{Release:} 1.3.0 -\sphinxstylestrong{Date:} 01 June 2021 +\sphinxstylestrong{Date:} 07 November 2021 \sphinxstylestrong{Author:} \sphinxhref{mailto:lindon.roberts@anu.edu.au}{Lindon Roberts} -DFO\sphinxhyphen{}LS is a flexible package for finding local solutions to nonlinear least\sphinxhyphen{}squares minimization problems (with optional bound constraints), without requiring any derivatives of the objective. DFO\sphinxhyphen{}LS stands for Derivative\sphinxhyphen{}Free Optimizer for Least\sphinxhyphen{}Squares. +DFO\sphinxhyphen{}LS is a flexible package for finding local solutions to nonlinear least\sphinxhyphen{}squares minimization problems (with optional constraints), without requiring any derivatives of the objective. DFO\sphinxhyphen{}LS stands for Derivative\sphinxhyphen{}Free Optimizer for Least\sphinxhyphen{}Squares. That is, DFO\sphinxhyphen{}LS solves \begin{equation*} \begin{split}\min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ -\text{s.t.} &\quad a \leq x \leq b\end{split} +\text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b\end{split} \end{equation*} -The upper and lower bounds on the variables are non\sphinxhyphen{}relaxable (i.e. DFO\sphinxhyphen{}LS will never ask to evaluate a point outside the bounds). +The constraint set \(C\) is the intersection of multiple convex sets provided as input by the user. All constraints are non\sphinxhyphen{}relaxable (i.e. DFO\sphinxhyphen{}LS will never ask to evaluate a point that is not feasible). Full details of the DFO\sphinxhyphen{}LS algorithm are given in our paper: C. Cartis, J. Fiala, B. Marteau and L. Roberts, \sphinxhref{https://doi.org/10.1145/3338517}{Improving the Flexibility and Robustness of Model\sphinxhyphen{}Based Derivative\sphinxhyphen{}Free Optimization Solvers}, \sphinxstyleemphasis{ACM Transactions on Mathematical Software}, 45:3 (2019), pp. 32:1\sphinxhyphen{}32:41 {[}\sphinxhref{https://arxiv.org/abs/1804.00154}{preprint}{]} . DFO\sphinxhyphen{}LS is a more flexible version of \sphinxhref{https://github.com/numericalalgorithmsgroup/dfogn}{DFO\sphinxhyphen{}GN}. @@ -248,12 +249,14 @@ \chapter{Overview} \section{When to use DFO\sphinxhyphen{}LS} \label{\detokenize{info:when-to-use-dfo-ls}} -DFO\sphinxhyphen{}LS is designed to solve the nonlinear least\sphinxhyphen{}squares minimization problem (with optional bound constraints) +DFO\sphinxhyphen{}LS is designed to solve the nonlinear least\sphinxhyphen{}squares minimization problem (with optional convex constraints). \begin{equation*} \begin{split}\min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ -\text{s.t.} &\quad a \leq x \leq b\end{split} +\text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b\end{split} \end{equation*} We call \(f(x)\) the objective function and \(r_i(x)\) the residual functions (or simply residuals). +\(C\) is the intersection of multiple convex sets given as input by the user. DFO\sphinxhyphen{}LS is a \sphinxstyleemphasis{derivative\sphinxhyphen{}free} optimization algorithm, which means it does not require the user to provide the derivatives of \(f(x)\) or \(r_i(x)\), nor does it attempt to estimate them internally (by using finite differencing, for instance). @@ -336,9 +339,9 @@ \section{Nonlinear Least\sphinxhyphen{}Squares Minimization} DFO\sphinxhyphen{}LS is designed to solve the local optimization problem \begin{equation*} \begin{split}\min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ -\text{s.t.} &\quad a \leq x \leq b\end{split} +\text{s.t.} &\quad x \in C\end{split} \end{equation*} -where the bound constraints \(a \leq x \leq b\) are optional. The upper and lower bounds on the variables are non\sphinxhyphen{}relaxable (i.e. DFO\sphinxhyphen{}LS will never ask to evaluate a point outside the bounds). +where the set \(C\) is an optional non\sphinxhyphen{}empty, closed and convex constraint set. The constraints are non\sphinxhyphen{}relaxable (i.e. DFO\sphinxhyphen{}LS will never ask to evaluate a point that is not feasible). DFO\sphinxhyphen{}LS iteratively constructs an interpolation\sphinxhyphen{}based model for the objective, and determines a step using a trust\sphinxhyphen{}region framework. For an in\sphinxhyphen{}depth technical description of the algorithm see the paper \sphinxcite{userguide:cfmr2018}. @@ -407,6 +410,9 @@ \section{How to use DFO\sphinxhyphen{}LS} \item {} \sphinxcode{\sphinxupquote{soln.EXIT\_FALSE\_SUCCESS\_WARNING}} \sphinxhyphen{} DFO\sphinxhyphen{}LS reached the maximum number of restarts which decreased the objective, but to a worse value than was found in a previous run. +\item {} +\sphinxcode{\sphinxupquote{soln.EXIT\_TR\_INCREASE\_WARNING}} \sphinxhyphen{} model increase when solving the trust region subproblem with multiple arbitrary constraints. + \item {} \sphinxcode{\sphinxupquote{soln.EXIT\_INPUT\_ERROR}} \sphinxhyphen{} error in the inputs. @@ -450,6 +456,9 @@ \section{Optional Arguments} \item {} \sphinxcode{\sphinxupquote{bounds}} \sphinxhyphen{} a tuple \sphinxcode{\sphinxupquote{(lower, upper)}} with the vectors \(a\) and \(b\) of lower and upper bounds on \(x\) (default is \(a_i=-10^{20}\) and \(b_i=10^{20}\)). To set bounds for either \sphinxcode{\sphinxupquote{lower}} or \sphinxcode{\sphinxupquote{upper}}, but not both, pass a tuple \sphinxcode{\sphinxupquote{(lower, None)}} or \sphinxcode{\sphinxupquote{(None, upper)}}. +\item {} +\sphinxcode{\sphinxupquote{projections}} \sphinxhyphen{} a list \sphinxcode{\sphinxupquote{{[}f1,f2,...,fn{]}}} of functions that each take as input a point \sphinxcode{\sphinxupquote{x}} and return a new point \sphinxcode{\sphinxupquote{y}}. The new point \sphinxcode{\sphinxupquote{y}} should be given by the projection of \sphinxcode{\sphinxupquote{x}} onto a closed convex set. The intersection of all sets corresponding to a function must be non\sphinxhyphen{}empty. + \item {} \sphinxcode{\sphinxupquote{npt}} \sphinxhyphen{} the number of interpolation points to use (default is \sphinxcode{\sphinxupquote{len(x0)+1}}). If using restarts, this is the number of points to use in the first run of the solver, before any restarts (and may be optionally increased via settings in \sphinxcode{\sphinxupquote{user\_params}}). @@ -542,7 +551,7 @@ \section{A Simple Example} \section{Adding Bounds and More Output} \label{\detokenize{userguide:adding-bounds-and-more-output}} -We can extend the above script to add constraints. To do this, we can add the lines +We can extend the above script to add constraints. To add bound constraints alone, we can add the lines \begin{quote} \begin{sphinxVerbatim}[commandchars=\\\{\}] @@ -593,7 +602,7 @@ \section{Adding Bounds and More Output} \end{sphinxVerbatim} \end{quote} -And we can now see each evaluation of \sphinxcode{\sphinxupquote{objfun}}: +And for the simple bounds example we can now see each evaluation of \sphinxcode{\sphinxupquote{objfun}}: \begin{quote} \begin{sphinxVerbatim}[commandchars=\\\{\}] @@ -634,6 +643,100 @@ \section{Adding Bounds and More Output} \end{quote} +\section{Handling Arbitrary Convex Constraints} +\label{\detokenize{userguide:handling-arbitrary-convex-constraints}} +DFO\sphinxhyphen{}LS can also handle more general constraints where they can be written as the intersection of finitely many convex sets. For example, the below code +minimizes the Rosenbrock function subject to a constraint set given by the intersection of two convex sets. Note the intersection of the user\sphinxhyphen{}provided convex +sets must be non\sphinxhyphen{}empty. +\begin{quote} + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{l+s+sd}{DFO\PYGZhy{}LS example: minimize the Rosenbrock function with arbitrary convex constraints} + +\PYG{l+s+sd}{This example defines two functions pball(x) and pbox(x) that project onto ball and} +\PYG{l+s+sd}{box constraint sets respectively. It then passes both these functions to the DFO\PYGZhy{}LS} +\PYG{l+s+sd}{solver so that it can find a constrained minimizer to the Rosenbrock function.} +\PYG{l+s+sd}{Such a minimizer must lie in the intersection of constraint sets corresponding to} +\PYG{l+s+sd}{projection functions pball(x) and pbox(x). The description of the problem is as follows:} + +\PYG{l+s+sd}{ min rosenbrock(x)} +\PYG{l+s+sd}{ s.t.} +\PYG{l+s+sd}{ \PYGZhy{}2 \PYGZlt{}= x[0] \PYGZlt{}= 1.1,} +\PYG{l+s+sd}{ 1.1 \PYGZlt{}= x[1] \PYGZlt{}= 3,} +\PYG{l+s+sd}{ norm(x\PYGZhy{}c) \PYGZlt{}= 0.4} + +\PYG{l+s+sd}{where c = [0.7, 1.5] is the centre of the ball.} +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{k+kn}{from} \PYG{n+nn}{\PYGZus{}\PYGZus{}future\PYGZus{}\PYGZus{}} \PYG{k+kn}{import} \PYG{n}{print\PYGZus{}function} +\PYG{k+kn}{import} \PYG{n+nn}{numpy} \PYG{k}{as} \PYG{n+nn}{np} +\PYG{k+kn}{import} \PYG{n+nn}{dfols} + +\PYG{c+c1}{\PYGZsh{} Define the objective function} +\PYG{k}{def} \PYG{n+nf}{rosenbrock}\PYG{p}{(}\PYG{n}{x}\PYG{p}{)}\PYG{p}{:} + \PYG{k}{return} \PYG{n}{np}\PYG{o}{.}\PYG{n}{array}\PYG{p}{(}\PYG{p}{[}\PYG{l+m+mf}{10.0} \PYG{o}{*} \PYG{p}{(}\PYG{n}{x}\PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{]} \PYG{o}{\PYGZhy{}} \PYG{n}{x}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]} \PYG{o}{*}\PYG{o}{*} \PYG{l+m+mi}{2}\PYG{p}{)}\PYG{p}{,} \PYG{l+m+mf}{1.0} \PYG{o}{\PYGZhy{}} \PYG{n}{x}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}\PYG{p}{]}\PYG{p}{)} + +\PYG{c+c1}{\PYGZsh{} Define the starting point} +\PYG{n}{x0} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{array}\PYG{p}{(}\PYG{p}{[}\PYG{o}{\PYGZhy{}}\PYG{l+m+mf}{1.2}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{]}\PYG{p}{)} + +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{l+s+sd}{Define ball projection function} +\PYG{l+s+sd}{Projects the input x onto a ball with} +\PYG{l+s+sd}{centre point (0.7,1.5) and radius 0.4.} +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{k}{def} \PYG{n+nf}{pball}\PYG{p}{(}\PYG{n}{x}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{c} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{array}\PYG{p}{(}\PYG{p}{[}\PYG{l+m+mf}{0.7}\PYG{p}{,}\PYG{l+m+mf}{1.5}\PYG{p}{]}\PYG{p}{)} \PYG{c+c1}{\PYGZsh{} ball centre} + \PYG{n}{r} \PYG{o}{=} \PYG{l+m+mf}{0.4} \PYG{c+c1}{\PYGZsh{} ball radius} + \PYG{k}{return} \PYG{n}{c} \PYG{o}{+} \PYG{p}{(}\PYG{n}{r}\PYG{o}{/}\PYG{n}{np}\PYG{o}{.}\PYG{n}{max}\PYG{p}{(}\PYG{p}{[}\PYG{n}{np}\PYG{o}{.}\PYG{n}{linalg}\PYG{o}{.}\PYG{n}{norm}\PYG{p}{(}\PYG{n}{x}\PYG{o}{\PYGZhy{}}\PYG{n}{c}\PYG{p}{)}\PYG{p}{,}\PYG{n}{r}\PYG{p}{]}\PYG{p}{)}\PYG{p}{)}\PYG{o}{*}\PYG{p}{(}\PYG{n}{x}\PYG{o}{\PYGZhy{}}\PYG{n}{c}\PYG{p}{)} + +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{l+s+sd}{Define box projection function} +\PYG{l+s+sd}{Projects the input x onto a box} +\PYG{l+s+sd}{such that \PYGZhy{}2 \PYGZlt{}= x[0] \PYGZlt{}= 0.9 and} +\PYG{l+s+sd}{1.1 \PYGZlt{}= x[1] \PYGZlt{}= 3.} + +\PYG{l+s+sd}{Note: One could equivalently add bound} +\PYG{l+s+sd}{constraints as a separate input to the solver} +\PYG{l+s+sd}{instead.} +\PYG{l+s+sd}{\PYGZsq{}\PYGZsq{}\PYGZsq{}} +\PYG{k}{def} \PYG{n+nf}{pbox}\PYG{p}{(}\PYG{n}{x}\PYG{p}{)}\PYG{p}{:} + \PYG{n}{l} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{array}\PYG{p}{(}\PYG{p}{[}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{2}\PYG{p}{,} \PYG{l+m+mf}{1.1}\PYG{p}{]}\PYG{p}{)} \PYG{c+c1}{\PYGZsh{} lower bound} + \PYG{n}{u} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{array}\PYG{p}{(}\PYG{p}{[}\PYG{l+m+mf}{0.9}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{]}\PYG{p}{)} \PYG{c+c1}{\PYGZsh{} upper bound} + \PYG{k}{return} \PYG{n}{np}\PYG{o}{.}\PYG{n}{minimum}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{maximum}\PYG{p}{(}\PYG{n}{x}\PYG{p}{,}\PYG{n}{l}\PYG{p}{)}\PYG{p}{,} \PYG{n}{u}\PYG{p}{)} + +\PYG{c+c1}{\PYGZsh{} For optional extra output details} +\PYG{k+kn}{import} \PYG{n+nn}{logging} +\PYG{n}{logging}\PYG{o}{.}\PYG{n}{basicConfig}\PYG{p}{(}\PYG{n}{level}\PYG{o}{=}\PYG{n}{logging}\PYG{o}{.}\PYG{n}{DEBUG}\PYG{p}{,} \PYG{n+nb}{format}\PYG{o}{=}\PYG{l+s+s1}{\PYGZsq{}}\PYG{l+s+si}{\PYGZpc{}(message)s}\PYG{l+s+s1}{\PYGZsq{}}\PYG{p}{)} + +\PYG{c+c1}{\PYGZsh{} Call DFO\PYGZhy{}LS} +\PYG{n}{soln} \PYG{o}{=} \PYG{n}{dfols}\PYG{o}{.}\PYG{n}{solve}\PYG{p}{(}\PYG{n}{rosenbrock}\PYG{p}{,} \PYG{n}{x0}\PYG{p}{,} \PYG{n}{projections}\PYG{o}{=}\PYG{p}{[}\PYG{n}{pball}\PYG{p}{,}\PYG{n}{pbox}\PYG{p}{]}\PYG{p}{)} + +\PYG{c+c1}{\PYGZsh{} Display output} +\PYG{n+nb}{print}\PYG{p}{(}\PYG{n}{soln}\PYG{p}{)} +\end{sphinxVerbatim} +\end{quote} + +Note that for bound constraints one can choose to either implement them by defining a projection function as above, or by passing the bounds as input like in the example from the section on adding bound constraints. + +DFO\sphinxhyphen{}LS correctly finds the solution to this constrained problem too. Note that we get a warning because the step computed in the trust region subproblem +gave an increase in the model. This is common in the case where multiple constraints are active at the optimal point. +\begin{quote} + +\begin{sphinxVerbatim}[commandchars=\\\{\}] +****** DFO\PYGZhy{}LS Results ****** +Solution xmin = [0.9 1.15359245] +Residual vector = [3.43592448 0.1 ] +Objective value f(xmin) = 11.81557703 +Needed 10 objective evaluations (at 10 points) +Approximate Jacobian = [[\PYGZhy{}1.79826221e+01 1.00004412e+01] + [\PYGZhy{}1.00000000e+00 \PYGZhy{}1.81976605e\PYGZhy{}15]] +Exit flag = 5 +Warning (trust region increase): Either multiple constraints are active or trust region step gave model increase +**************************** +\end{sphinxVerbatim} +\end{quote} + + \section{Example: Noisy Objective Evaluation} \label{\detokenize{userguide:example-noisy-objective-evaluation}} As described in {\hyperref[\detokenize{info::doc}]{\sphinxcrossref{\DUrole{doc}{Overview}}}}, derivative\sphinxhyphen{}free algorithms such as DFO\sphinxhyphen{}LS are particularly useful when \sphinxcode{\sphinxupquote{objfun}} has noise. Let’s modify the previous example to include random noise in our objective evaluation, and compare it to a derivative\sphinxhyphen{}based solver: @@ -1155,6 +1258,25 @@ \section{Dynamically Growing Initial Set} \end{itemize} +\section{Dykstra’s Algorithm} +\label{\detokenize{advanced:dykstra-s-algorithm}}\begin{itemize} +\item {} +\sphinxcode{\sphinxupquote{dykstra.d\_tol}} \sphinxhyphen{} Tolerance on the stopping conditions of Dykstra’s algorithm. Default is \(10^{-10}\). + +\item {} +\sphinxcode{\sphinxupquote{dykstra.max\_iters}} \sphinxhyphen{} The maximum number of iterations Dykstra’s algorithm is allowed to take before stopping. Default is \(100\). + +\end{itemize} + + +\section{Checking Matrix Rank} +\label{\detokenize{advanced:checking-matrix-rank}}\begin{itemize} +\item {} +\sphinxcode{\sphinxupquote{matrix\_rank.r\_tol}} \sphinxhyphen{} Tolerance on what is the smallest posisble diagonal entry value in the QR factorization before being considered zero. Default is \(10^{-18}\). + +\end{itemize} + + \section{References} \label{\detokenize{advanced:references}} @@ -1377,6 +1499,17 @@ \section{Version 1.2.3 (1 Jun 2021)} \end{itemize} +\section{Version 1.3.0 (16 Oct 2021)} +\label{\detokenize{history:version-1-3-0-16-oct-2021}}\begin{itemize} +\item {} +Handle finitely many arbitrary convex constraints in addition to simple bound constraints. + +\item {} +Only new functionality is added, so there is no change to the solver for unconstrained/bound\sphinxhyphen{}constrained problems. + +\end{itemize} + + \chapter{Acknowledgements} \label{\detokenize{index:acknowledgements}} This software was developed under the supervision of \sphinxhref{https://www.maths.ox.ac.uk/people/coralia.cartis}{Coralia Cartis}, and was supported by the EPSRC Centre For Doctoral Training in \sphinxhref{https://www.maths.ox.ac.uk/study-here/postgraduate-study/industrially-focused-mathematical-modelling-epsrc-cdt}{Industrially Focused Mathematical Modelling} (EP/L015803/1) in collaboration with the \sphinxhref{http://www.nag.com/}{Numerical Algorithms Group}. diff --git a/docs/build/latex/DFOLS.toc b/docs/build/latex/DFOLS.toc index 8523942..7108b3f 100755 --- a/docs/build/latex/DFOLS.toc +++ b/docs/build/latex/DFOLS.toc @@ -1,54 +1,58 @@ \babel@toc {english}{} -\contentsline {chapter}{\numberline {1}Installing DFO\sphinxhyphen {}LS}{3}{chapter.1} -\contentsline {section}{\numberline {1.1}Requirements}{3}{section.1.1} -\contentsline {section}{\numberline {1.2}Installation using pip}{3}{section.1.2} -\contentsline {section}{\numberline {1.3}Manual installation}{4}{section.1.3} -\contentsline {section}{\numberline {1.4}Testing}{4}{section.1.4} -\contentsline {section}{\numberline {1.5}Uninstallation}{4}{section.1.5} -\contentsline {chapter}{\numberline {2}Overview}{5}{chapter.2} -\contentsline {section}{\numberline {2.1}When to use DFO\sphinxhyphen {}LS}{5}{section.2.1} -\contentsline {section}{\numberline {2.2}Parameter Fitting}{5}{section.2.2} -\contentsline {section}{\numberline {2.3}Solving Nonlinear Systems of Equations}{6}{section.2.3} -\contentsline {section}{\numberline {2.4}Details of the DFO\sphinxhyphen {}LS Algorithm}{6}{section.2.4} -\contentsline {section}{\numberline {2.5}References}{7}{section.2.5} -\contentsline {chapter}{\numberline {3}Using DFO\sphinxhyphen {}LS}{9}{chapter.3} -\contentsline {section}{\numberline {3.1}Nonlinear Least\sphinxhyphen {}Squares Minimization}{9}{section.3.1} -\contentsline {section}{\numberline {3.2}How to use DFO\sphinxhyphen {}LS}{9}{section.3.2} -\contentsline {section}{\numberline {3.3}Optional Arguments}{10}{section.3.3} -\contentsline {section}{\numberline {3.4}A Simple Example}{11}{section.3.4} -\contentsline {section}{\numberline {3.5}Adding Bounds and More Output}{12}{section.3.5} -\contentsline {section}{\numberline {3.6}Example: Noisy Objective Evaluation}{13}{section.3.6} -\contentsline {section}{\numberline {3.7}Example: Parameter Estimation/Data Fitting}{15}{section.3.7} -\contentsline {section}{\numberline {3.8}Example: Solving a Nonlinear System of Equations}{17}{section.3.8} -\contentsline {section}{\numberline {3.9}References}{18}{section.3.9} -\contentsline {chapter}{\numberline {4}Advanced Usage}{19}{chapter.4} -\contentsline {section}{\numberline {4.1}General Algorithm Parameters}{19}{section.4.1} -\contentsline {section}{\numberline {4.2}Logging and Output}{19}{section.4.2} -\contentsline {section}{\numberline {4.3}Initialization of Points}{20}{section.4.3} -\contentsline {section}{\numberline {4.4}Trust Region Management}{20}{section.4.4} -\contentsline {section}{\numberline {4.5}Termination on Small Objective Value}{20}{section.4.5} -\contentsline {section}{\numberline {4.6}Termination on Slow Progress}{20}{section.4.6} -\contentsline {section}{\numberline {4.7}Stochastic Noise Information}{21}{section.4.7} -\contentsline {section}{\numberline {4.8}Interpolation Management}{21}{section.4.8} -\contentsline {section}{\numberline {4.9}Regression Model Management}{21}{section.4.9} -\contentsline {section}{\numberline {4.10}Multiple Restarts}{21}{section.4.10} -\contentsline {section}{\numberline {4.11}Dynamically Growing Initial Set}{22}{section.4.11} -\contentsline {section}{\numberline {4.12}References}{23}{section.4.12} -\contentsline {chapter}{\numberline {5}Diagnostic Information}{25}{chapter.5} -\contentsline {section}{\numberline {5.1}Current Iterate}{25}{section.5.1} -\contentsline {section}{\numberline {5.2}Trust Region}{25}{section.5.2} -\contentsline {section}{\numberline {5.3}Model Interpolation}{26}{section.5.3} -\contentsline {section}{\numberline {5.4}Iteration Count}{26}{section.5.4} -\contentsline {section}{\numberline {5.5}Algorithm Progress}{26}{section.5.5} -\contentsline {chapter}{\numberline {6}Version History}{27}{chapter.6} -\contentsline {section}{\numberline {6.1}Version 1.0 (6 Feb 2018)}{27}{section.6.1} -\contentsline {section}{\numberline {6.2}Version 1.0.1 (20 Feb 2018)}{27}{section.6.2} -\contentsline {section}{\numberline {6.3}Version 1.0.2 (20 Jun 2018)}{27}{section.6.3} -\contentsline {section}{\numberline {6.4}Version 1.1 (16 Jan 2019)}{27}{section.6.4} -\contentsline {section}{\numberline {6.5}Version 1.1.1 (5 Apr 2019)}{28}{section.6.5} -\contentsline {section}{\numberline {6.6}Version 1.2 (12 Feb 2020)}{28}{section.6.6} -\contentsline {section}{\numberline {6.7}Version 1.2.1 (13 Feb 2020)}{28}{section.6.7} -\contentsline {section}{\numberline {6.8}Version 1.2.2 (26 Feb 2021)}{28}{section.6.8} -\contentsline {section}{\numberline {6.9}Version 1.2.3 (1 Jun 2021)}{28}{section.6.9} -\contentsline {chapter}{\numberline {7}Acknowledgements}{29}{chapter.7} -\contentsline {chapter}{Bibliography}{31}{chapter*.3} +\contentsline {chapter}{\numberline {1}Installing DFO\sphinxhyphen {}LS}{3}{chapter.1}% +\contentsline {section}{\numberline {1.1}Requirements}{3}{section.1.1}% +\contentsline {section}{\numberline {1.2}Installation using pip}{3}{section.1.2}% +\contentsline {section}{\numberline {1.3}Manual installation}{4}{section.1.3}% +\contentsline {section}{\numberline {1.4}Testing}{4}{section.1.4}% +\contentsline {section}{\numberline {1.5}Uninstallation}{4}{section.1.5}% +\contentsline {chapter}{\numberline {2}Overview}{5}{chapter.2}% +\contentsline {section}{\numberline {2.1}When to use DFO\sphinxhyphen {}LS}{5}{section.2.1}% +\contentsline {section}{\numberline {2.2}Parameter Fitting}{5}{section.2.2}% +\contentsline {section}{\numberline {2.3}Solving Nonlinear Systems of Equations}{6}{section.2.3}% +\contentsline {section}{\numberline {2.4}Details of the DFO\sphinxhyphen {}LS Algorithm}{7}{section.2.4}% +\contentsline {section}{\numberline {2.5}References}{7}{section.2.5}% +\contentsline {chapter}{\numberline {3}Using DFO\sphinxhyphen {}LS}{9}{chapter.3}% +\contentsline {section}{\numberline {3.1}Nonlinear Least\sphinxhyphen {}Squares Minimization}{9}{section.3.1}% +\contentsline {section}{\numberline {3.2}How to use DFO\sphinxhyphen {}LS}{9}{section.3.2}% +\contentsline {section}{\numberline {3.3}Optional Arguments}{10}{section.3.3}% +\contentsline {section}{\numberline {3.4}A Simple Example}{11}{section.3.4}% +\contentsline {section}{\numberline {3.5}Adding Bounds and More Output}{12}{section.3.5}% +\contentsline {section}{\numberline {3.6}Handling Arbitrary Convex Constraints}{14}{section.3.6}% +\contentsline {section}{\numberline {3.7}Example: Noisy Objective Evaluation}{15}{section.3.7}% +\contentsline {section}{\numberline {3.8}Example: Parameter Estimation/Data Fitting}{17}{section.3.8}% +\contentsline {section}{\numberline {3.9}Example: Solving a Nonlinear System of Equations}{19}{section.3.9}% +\contentsline {section}{\numberline {3.10}References}{20}{section.3.10}% +\contentsline {chapter}{\numberline {4}Advanced Usage}{21}{chapter.4}% +\contentsline {section}{\numberline {4.1}General Algorithm Parameters}{21}{section.4.1}% +\contentsline {section}{\numberline {4.2}Logging and Output}{21}{section.4.2}% +\contentsline {section}{\numberline {4.3}Initialization of Points}{22}{section.4.3}% +\contentsline {section}{\numberline {4.4}Trust Region Management}{22}{section.4.4}% +\contentsline {section}{\numberline {4.5}Termination on Small Objective Value}{22}{section.4.5}% +\contentsline {section}{\numberline {4.6}Termination on Slow Progress}{22}{section.4.6}% +\contentsline {section}{\numberline {4.7}Stochastic Noise Information}{23}{section.4.7}% +\contentsline {section}{\numberline {4.8}Interpolation Management}{23}{section.4.8}% +\contentsline {section}{\numberline {4.9}Regression Model Management}{23}{section.4.9}% +\contentsline {section}{\numberline {4.10}Multiple Restarts}{23}{section.4.10}% +\contentsline {section}{\numberline {4.11}Dynamically Growing Initial Set}{24}{section.4.11}% +\contentsline {section}{\numberline {4.12}Dykstra’s Algorithm}{25}{section.4.12}% +\contentsline {section}{\numberline {4.13}Checking Matrix Rank}{25}{section.4.13}% +\contentsline {section}{\numberline {4.14}References}{25}{section.4.14}% +\contentsline {chapter}{\numberline {5}Diagnostic Information}{27}{chapter.5}% +\contentsline {section}{\numberline {5.1}Current Iterate}{27}{section.5.1}% +\contentsline {section}{\numberline {5.2}Trust Region}{27}{section.5.2}% +\contentsline {section}{\numberline {5.3}Model Interpolation}{28}{section.5.3}% +\contentsline {section}{\numberline {5.4}Iteration Count}{28}{section.5.4}% +\contentsline {section}{\numberline {5.5}Algorithm Progress}{28}{section.5.5}% +\contentsline {chapter}{\numberline {6}Version History}{29}{chapter.6}% +\contentsline {section}{\numberline {6.1}Version 1.0 (6 Feb 2018)}{29}{section.6.1}% +\contentsline {section}{\numberline {6.2}Version 1.0.1 (20 Feb 2018)}{29}{section.6.2}% +\contentsline {section}{\numberline {6.3}Version 1.0.2 (20 Jun 2018)}{29}{section.6.3}% +\contentsline {section}{\numberline {6.4}Version 1.1 (16 Jan 2019)}{29}{section.6.4}% +\contentsline {section}{\numberline {6.5}Version 1.1.1 (5 Apr 2019)}{30}{section.6.5}% +\contentsline {section}{\numberline {6.6}Version 1.2 (12 Feb 2020)}{30}{section.6.6}% +\contentsline {section}{\numberline {6.7}Version 1.2.1 (13 Feb 2020)}{30}{section.6.7}% +\contentsline {section}{\numberline {6.8}Version 1.2.2 (26 Feb 2021)}{30}{section.6.8}% +\contentsline {section}{\numberline {6.9}Version 1.2.3 (1 Jun 2021)}{30}{section.6.9}% +\contentsline {section}{\numberline {6.10}Version 1.3.0 (16 Oct 2021)}{30}{section.6.10}% +\contentsline {chapter}{\numberline {7}Acknowledgements}{31}{chapter.7}% +\contentsline {chapter}{Bibliography}{33}{chapter*.3}% diff --git a/docs/build/latex/sphinxhighlight.sty b/docs/build/latex/sphinxhighlight.sty index 9be977b..fe63e4f 100755 --- a/docs/build/latex/sphinxhighlight.sty +++ b/docs/build/latex/sphinxhighlight.sty @@ -52,7 +52,7 @@ \@namedef{PYG@tok@gp}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.78,0.36,0.04}{##1}}} \@namedef{PYG@tok@go}{\def\PYG@tc##1{\textcolor[rgb]{0.20,0.20,0.20}{##1}}} \@namedef{PYG@tok@gt}{\def\PYG@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} -\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{-\fboxrule}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}} +\@namedef{PYG@tok@err}{\def\PYG@bc##1{{\setlength{\fboxsep}{\string -\fboxrule}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}}} \@namedef{PYG@tok@kc}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} \@namedef{PYG@tok@kd}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} \@namedef{PYG@tok@kn}{\let\PYG@bf=\textbf\def\PYG@tc##1{\textcolor[rgb]{0.00,0.44,0.13}{##1}}} diff --git a/docs/history.rst b/docs/history.rst index fd4d8ef..0d1938c 100644 --- a/docs/history.rst +++ b/docs/history.rst @@ -45,3 +45,8 @@ Version 1.2.2 (26 Feb 2021) Version 1.2.3 (1 Jun 2021) --------------------------- * Minor update to customise handling of NaNs in objective evaluations - no changes to the DFO-LS algorithm. + +Version 1.3.0 (16 Oct 2021) +--------------------------- +* Handle finitely many arbitrary convex constraints in addition to simple bound constraints. +* Only new functionality is added, so there is no change to the solver for unconstrained/bound-constrained problems. diff --git a/docs/index.rst b/docs/index.rst index a0e467e..031d6c9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -11,16 +11,17 @@ DFO-LS: Derivative-Free Optimizer for Least-Squares Minimization **Author:** `Lindon Roberts `_ -DFO-LS is a flexible package for finding local solutions to nonlinear least-squares minimization problems (with optional bound constraints), without requiring any derivatives of the objective. DFO-LS stands for Derivative-Free Optimizer for Least-Squares. +DFO-LS is a flexible package for finding local solutions to nonlinear least-squares minimization problems (with optional constraints), without requiring any derivatives of the objective. DFO-LS stands for Derivative-Free Optimizer for Least-Squares. That is, DFO-LS solves .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b -The upper and lower bounds on the variables are non-relaxable (i.e. DFO-LS will never ask to evaluate a point outside the bounds). +The constraint set :math:`C` is the intersection of multiple convex sets provided as input by the user. All constraints are non-relaxable (i.e. DFO-LS will never ask to evaluate a point that is not feasible). Full details of the DFO-LS algorithm are given in our paper: C. Cartis, J. Fiala, B. Marteau and L. Roberts, `Improving the Flexibility and Robustness of Model-Based Derivative-Free Optimization Solvers `_, *ACM Transactions on Mathematical Software*, 45:3 (2019), pp. 32:1-32:41 [`preprint `_] . DFO-LS is a more flexible version of `DFO-GN `_. diff --git a/docs/info.rst b/docs/info.rst index 824a232..e4e0b29 100644 --- a/docs/info.rst +++ b/docs/info.rst @@ -3,14 +3,16 @@ Overview When to use DFO-LS ------------------ -DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional bound constraints) +DFO-LS is designed to solve the nonlinear least-squares minimization problem (with optional convex constraints). .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C\\ + &\quad a \leq x \leq b We call :math:`f(x)` the objective function and :math:`r_i(x)` the residual functions (or simply residuals). +:math:`C` is the intersection of multiple convex sets given as input by the user. DFO-LS is a *derivative-free* optimization algorithm, which means it does not require the user to provide the derivatives of :math:`f(x)` or :math:`r_i(x)`, nor does it attempt to estimate them internally (by using finite differencing, for instance). diff --git a/docs/userguide.rst b/docs/userguide.rst index 6804892..e8a7b54 100644 --- a/docs/userguide.rst +++ b/docs/userguide.rst @@ -9,9 +9,9 @@ DFO-LS is designed to solve the local optimization problem .. math:: \min_{x\in\mathbb{R}^n} &\quad f(x) := \sum_{i=1}^{m}r_{i}(x)^2 \\ - \text{s.t.} &\quad a \leq x \leq b + \text{s.t.} &\quad x \in C -where the bound constraints :math:`a \leq x \leq b` are optional. The upper and lower bounds on the variables are non-relaxable (i.e. DFO-LS will never ask to evaluate a point outside the bounds). +where the set :math:`C` is an optional non-empty, closed and convex constraint set. The constraints are non-relaxable (i.e. DFO-LS will never ask to evaluate a point that is not feasible). DFO-LS iteratively constructs an interpolation-based model for the objective, and determines a step using a trust-region framework. For an in-depth technical description of the algorithm see the paper [CFMR2018]_. @@ -48,6 +48,7 @@ The possible values of :code:`soln.flag` are defined by the following variables: * :code:`soln.EXIT_MAXFUN_WARNING` - maximum allowed objective evaluations reached. This is the most likely return value when using multiple restarts. * :code:`soln.EXIT_SLOW_WARNING` - maximum number of slow iterations reached. * :code:`soln.EXIT_FALSE_SUCCESS_WARNING` - DFO-LS reached the maximum number of restarts which decreased the objective, but to a worse value than was found in a previous run. +* :code:`soln.EXIT_TR_INCREASE_WARNING` - model increase when solving the trust region subproblem with multiple arbitrary constraints. * :code:`soln.EXIT_INPUT_ERROR` - error in the inputs. * :code:`soln.EXIT_TR_INCREASE_ERROR` - error occurred when solving the trust region subproblem. * :code:`soln.EXIT_LINALG_ERROR` - linear algebra error, e.g. the interpolation points produced a singular linear system. @@ -75,6 +76,7 @@ These arguments are: * :code:`args` - a tuple of extra arguments passed to the objective function. * :code:`bounds` - a tuple :code:`(lower, upper)` with the vectors :math:`a` and :math:`b` of lower and upper bounds on :math:`x` (default is :math:`a_i=-10^{20}` and :math:`b_i=10^{20}`). To set bounds for either :code:`lower` or :code:`upper`, but not both, pass a tuple :code:`(lower, None)` or :code:`(None, upper)`. +* :code:`projections` - a list :code:`[f1,f2,...,fn]` of functions that each take as input a point :code:`x` and return a new point :code:`y`. The new point :code:`y` should be given by the projection of :code:`x` onto a closed convex set. The intersection of all sets corresponding to a function must be non-empty. * :code:`npt` - the number of interpolation points to use (default is :code:`len(x0)+1`). If using restarts, this is the number of points to use in the first run of the solver, before any restarts (and may be optionally increased via settings in :code:`user_params`). * :code:`rhobeg` - the initial value of the trust region radius (default is :math:`0.1\max(\|x_0\|_{\infty}, 1)`, or 0.1 if :code:`scaling_within_bounds`). * :code:`rhoend` - minimum allowed value of trust region radius, which determines when a successful termination occurs (default is :math:`10^{-8}`). @@ -144,7 +146,7 @@ This and all following problems can be found in the `examples