1 |
heimbach |
1.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 |
|
|
} |