Lines Matching refs:ls
37 static PetscErrorCode TaoLineSearchDestroy_OWArmijo(TaoLineSearch ls) in TaoLineSearchDestroy_OWArmijo() argument
39 TaoLineSearch_OWARMIJO *armP = (TaoLineSearch_OWARMIJO *)ls->data; in TaoLineSearchDestroy_OWArmijo()
45 PetscCall(PetscFree(ls->data)); in TaoLineSearchDestroy_OWArmijo()
49 static PetscErrorCode TaoLineSearchSetFromOptions_OWArmijo(TaoLineSearch ls, PetscOptionItems Petsc… in TaoLineSearchSetFromOptions_OWArmijo() argument
51 TaoLineSearch_OWARMIJO *armP = (TaoLineSearch_OWARMIJO *)ls->data; in TaoLineSearchSetFromOptions_OWArmijo()
67 static PetscErrorCode TaoLineSearchView_OWArmijo(TaoLineSearch ls, PetscViewer pv) in TaoLineSearchView_OWArmijo() argument
69 TaoLineSearch_OWARMIJO *armP = (TaoLineSearch_OWARMIJO *)ls->data; in TaoLineSearchView_OWArmijo()
112 static PetscErrorCode TaoLineSearchApply_OWArmijo(TaoLineSearch ls, Vec x, PetscReal *f, Vec g, Vec… in TaoLineSearchApply_OWArmijo() argument
114 TaoLineSearch_OWARMIJO *armP = (TaoLineSearch_OWARMIJO *)ls->data; in TaoLineSearchApply_OWArmijo()
125 PetscCall(PetscObjectGetComm((PetscObject)ls, &comm)); in TaoLineSearchApply_OWArmijo()
127 ls->nfeval = 0; in TaoLineSearchApply_OWArmijo()
128 ls->reason = TAOLINESEARCH_CONTINUE_ITERATING; in TaoLineSearchApply_OWArmijo()
141 PetscCall(TaoLineSearchMonitor(ls, 0, *f, 0.0)); in TaoLineSearchApply_OWArmijo()
145 PetscCall(PetscInfo(ls, "OWArmijo line search error: alpha (%g) < 1\n", (double)armP->alpha)); in TaoLineSearchApply_OWArmijo()
146 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
148 PetscCall(PetscInfo(ls, "OWArmijo line search error: beta (%g) invalid\n", (double)armP->beta)); in TaoLineSearchApply_OWArmijo()
149 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
151 …PetscCall(PetscInfo(ls, "OWArmijo line search error: beta_inf (%g) invalid\n", (double)armP->beta_… in TaoLineSearchApply_OWArmijo()
152 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
154 … PetscCall(PetscInfo(ls, "OWArmijo line search error: sigma (%g) invalid\n", (double)armP->sigma)); in TaoLineSearchApply_OWArmijo()
155 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
157 …PetscCall(PetscInfo(ls, "OWArmijo line search error: memory_size (%" PetscInt_FMT ") < 1\n", armP-… in TaoLineSearchApply_OWArmijo()
158 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
160 PetscCall(PetscInfo(ls, "OWArmijo line search error: reference_policy invalid\n")); in TaoLineSearchApply_OWArmijo()
161 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
163 PetscCall(PetscInfo(ls, "OWArmijo line search error: replacement_policy invalid\n")); in TaoLineSearchApply_OWArmijo()
164 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
166 PetscCall(PetscInfo(ls, "OWArmijo line search error: initial function inf or nan\n")); in TaoLineSearchApply_OWArmijo()
167 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
170 if (ls->reason != TAOLINESEARCH_CONTINUE_ITERATING) PetscFunctionReturn(PETSC_SUCCESS); in TaoLineSearchApply_OWArmijo()
209 ls->step = ls->initstep; in TaoLineSearchApply_OWArmijo()
210 while (ls->step >= owlqn_minstep && ls->nfeval < ls->max_funcs) { in TaoLineSearchApply_OWArmijo()
213 PetscCall(VecWAXPY(armP->work, ls->step, s, x)); in TaoLineSearchApply_OWArmijo()
221 … PetscCall(PetscInfo(ls, "Initial Line Search step * g is infinity or NaN (%g)\n", (double)gdx)); in TaoLineSearchApply_OWArmijo()
222 ls->reason = TAOLINESEARCH_FAILED_INFORNAN; in TaoLineSearchApply_OWArmijo()
226 …PetscCall(PetscInfo(ls, "Initial Line Search step is not descent direction (g's=%g)\n", (double)gd… in TaoLineSearchApply_OWArmijo()
227 ls->reason = TAOLINESEARCH_FAILED_ASCENT; in TaoLineSearchApply_OWArmijo()
233 PetscCall(TaoLineSearchComputeObjectiveAndGradient(ls, armP->work, f, g)); in TaoLineSearchApply_OWArmijo()
237 PetscCall(TaoLineSearchMonitor(ls, its, *f, ls->step)); in TaoLineSearchApply_OWArmijo()
239 if (ls->step == ls->initstep) ls->f_fullstep = *f; in TaoLineSearchApply_OWArmijo()
242 ls->step *= armP->beta_inf; in TaoLineSearchApply_OWArmijo()
245 if (armP->nondescending && *f <= ref - ls->step * fact * ref) break; in TaoLineSearchApply_OWArmijo()
247 ls->step *= armP->beta; in TaoLineSearchApply_OWArmijo()
254 PetscCall(PetscInfo(ls, "Function is inf or nan.\n")); in TaoLineSearchApply_OWArmijo()
255 ls->reason = TAOLINESEARCH_FAILED_BADPARAMETER; in TaoLineSearchApply_OWArmijo()
256 } else if (ls->step < owlqn_minstep) { in TaoLineSearchApply_OWArmijo()
257 PetscCall(PetscInfo(ls, "Step length is below tolerance.\n")); in TaoLineSearchApply_OWArmijo()
258 ls->reason = TAOLINESEARCH_HALTED_RTOL; in TaoLineSearchApply_OWArmijo()
259 } else if (ls->nfeval >= ls->max_funcs) { in TaoLineSearchApply_OWArmijo()
260 …scCall(PetscInfo(ls, "Number of line search function evals (%" PetscInt_FMT ") > maximum allowed (… in TaoLineSearchApply_OWArmijo()
261 ls->reason = TAOLINESEARCH_HALTED_MAXFCN; in TaoLineSearchApply_OWArmijo()
263 if (ls->reason) PetscFunctionReturn(PETSC_SUCCESS); in TaoLineSearchApply_OWArmijo()
266 ls->reason = TAOLINESEARCH_SUCCESS; in TaoLineSearchApply_OWArmijo()
278 if (!g_computed) PetscCall(TaoLineSearchComputeGradient(ls, x, g)); in TaoLineSearchApply_OWArmijo()
279 …PetscCall(PetscInfo(ls, "%" PetscInt_FMT " function evals in line search, step = %10.4f\n", ls->nf… in TaoLineSearchApply_OWArmijo()
291 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_OWArmijo(TaoLineSearch ls) in TaoLineSearchCreate_OWArmijo() argument
296 PetscValidHeaderSpecific(ls, TAOLINESEARCH_CLASSID, 1); in TaoLineSearchCreate_OWArmijo()
308 ls->data = (void *)armP; in TaoLineSearchCreate_OWArmijo()
309 ls->initstep = 0.1; in TaoLineSearchCreate_OWArmijo()
310 ls->ops->monitor = NULL; in TaoLineSearchCreate_OWArmijo()
311 ls->ops->setup = NULL; in TaoLineSearchCreate_OWArmijo()
312 ls->ops->reset = NULL; in TaoLineSearchCreate_OWArmijo()
313 ls->ops->apply = TaoLineSearchApply_OWArmijo; in TaoLineSearchCreate_OWArmijo()
314 ls->ops->view = TaoLineSearchView_OWArmijo; in TaoLineSearchCreate_OWArmijo()
315 ls->ops->destroy = TaoLineSearchDestroy_OWArmijo; in TaoLineSearchCreate_OWArmijo()
316 ls->ops->setfromoptions = TaoLineSearchSetFromOptions_OWArmijo; in TaoLineSearchCreate_OWArmijo()