| 1 |
{\scriptsize |
| 2 |
\begin{verbatim} |
| 3 |
lsopt_top |
| 4 |
| |
| 5 |
|---- check arguments |
| 6 |
|---- CALL INSTORE |
| 7 |
| | |
| 8 |
| |---- determine whether OPWARMI available: |
| 9 |
| * if no: cold start: create OPWARMI |
| 10 |
| * if yes: warm start: read from OPWARMI |
| 11 |
| create or open OPWARMD |
| 12 |
| |
| 13 |
|---- check consistency between OPWARMI and model parameters |
| 14 |
| |
| 15 |
|---- >>> if COLD start: <<< |
| 16 |
| | first simulation with f.g. xx_0; output: first ff_0, gg_0 |
| 17 |
| | set first preconditioner value xdiff_0 to 1 |
| 18 |
| | store xx(0), gg(0), xdiff(0) to OPWARMD (first 3 entries) |
| 19 |
| | |
| 20 |
| >>> else: WARM start: <<< |
| 21 |
| read xx(i), gg(i) from OPWARMD (first 2 entries) |
| 22 |
| for first warm start after cold start, i=0 |
| 23 |
| |
| 24 |
| |
| 25 |
| |
| 26 |
|---- /// if ITMAX > 0: perform optimization (increment loop index i) |
| 27 |
| ( |
| 28 |
| )---- save current values of gg(i-1) -> gold(i-1), ff -> fold(i-1) |
| 29 |
| (---- CALL LSUPDXX |
| 30 |
| ) | |
| 31 |
| ( |---- >>> if jmax=0 <<< |
| 32 |
| ) | | first optimization after cold start: |
| 33 |
| ( | | preconditioner estimated via ff_0 - ff_(first guess) |
| 34 |
| ) | | dd(i-1) = -gg(i-1)*preco |
| 35 |
| ( | | |
| 36 |
| ) | >>> if jmax > 0 <<< |
| 37 |
| ( | dd(i-1) = -gg(i-1) |
| 38 |
| ) | CALL HESSUPD |
| 39 |
| ( | | |
| 40 |
| ) | |---- dd(i-1) modified via Hessian approx. |
| 41 |
| ( | |
| 42 |
| ) |---- >>> if <dd,gg> >= 0 <<< |
| 43 |
| ( | ifail = 4 |
| 44 |
| ) | |
| 45 |
| ( |---- compute step size: tact(i-1) |
| 46 |
| ) |---- compute update: xdiff(i) = xx(i-1) + tact(i-1)*dd(i-1) |
| 47 |
| ( |
| 48 |
| )---- >>> if ifail = 4 <<< |
| 49 |
| ( goto 1000 |
| 50 |
| ) |
| 51 |
| (---- CALL OPTLINE / LSLINE |
| 52 |
| ) | |
| 53 |
... ... ... |
| 54 |
\end{verbatim} |
| 55 |
} |