1 |
1 |
2 # Non-Riemannian optimisation |
2 # Non-Riemannian optimisation |
3 |
3 |
4 This package contains [Rust] codes for the manuscript “_Forward-backward methods in bilaterally bounded Alexandov spaces_” ([arXiv:????]) by Heikki von Koch and Tuomo Valkonen |
4 This package contains [Rust] codes for the manuscript “_Forward-backward |
5 ⟨tuomov@iki.fi⟩. It concerns the solution of problems of the type |
5 methods in bilaterally bounded Alexandov spaces_” ([arXiv:????]) |
|
6 by Heikki von Koch and Tuomo Valkonen ⟨tuomov@iki.fi⟩. |
|
7 It concerns the solution of problems of the type |
6 $$ |
8 $$ |
7 \min_{x ∈ M} F(x) + G(x) |
9 \min_{x ∈ M} F(x) + G(x) |
8 $$ |
10 $$ |
9 where $F$ is a smooth function and $G$ a possibly nonsmooth convex function |
11 where $F$ is a smooth function and $G$ a possibly nonsmooth convex function |
10 on a manifold $M$, which we do not assume to be Riemannian. |
12 on a manifold $M$, which we do not assume to be Riemannian. It may, |
11 It may, for example, be an embedded manifold in $ℝ^3$, which sharp corners. |
13 for example, be an embedded manifold in $ℝ^3$, which sharp corners. |
12 We have implemented the cube, as well as squared and non-squared distance functions. |
14 We have implemented the cube and the cylinder, as well as squared and |
|
15 non-squared distance functions. |
13 |
16 |
14 ## Installation and usage |
17 ## Installation and usage |
15 |
18 |
16 ### Installing dependencies |
19 ### Installing dependencies |
17 |
20 |
18 Most dependencies are managed by the Cargo build system of [Rust]. You will |
21 Most dependencies are managed by the Cargo build system of [Rust]. You will |
19 only need to manually install the “stable” Rust system itself. |
22 only need to manually install the “stable” Rust system itself. |
20 At the time of writing this README, [alg_tools] also needs to be downloaded |
23 At the time of writing this README, [alg_tools] also needs to be downloaded |
21 separately. |
24 separately. |
22 |
25 |
23 1. Install the [Rust] infrastructure (including Cargo) with [rustup]. |
26 1. Install the [Rust] infrastructure (including Cargo) with [rustup]. |
24 2. Download [alg_tools] and unpack it under the same directory as this |
27 2. Download [alg_tools] and unpack it under the same directory as this |
25 package. |
28 package. |
26 |
29 |
27 [rustup]: https://rustup.rs |
30 [rustup]: https://rustup.rs |
28 [alg_tools]: https://tuomov.iki.fi/software/alg_tools/ |
31 [alg_tools]: https://tuomov.iki.fi/software/alg_tools/ |
29 [Rust]: https://www.rust-lang.org/ |
32 [Rust]: https://www.rust-lang.org/ |
30 [GNU Scientific Library]: https://www.gnu.org/software/gsl/ |
|
31 [Homebrew]: https://brew.sh |
|
32 [arXiv:????]: https://arxiv.org/abs/???? |
33 [arXiv:????]: https://arxiv.org/abs/???? |
33 |
34 |
34 ### Building and running the experiments |
35 ### Building and running the experiments |
35 |
36 |
36 To compile and install the program, use: |
37 To compile and install the program, use: |
46 Alternatively, you may build (without installing) and run the experiments with |
47 Alternatively, you may build (without installing) and run the experiments with |
47 ```console |
48 ```console |
48 cargo run --release |
49 cargo run --release |
49 ``` |
50 ``` |
50 |
51 |
|
52 ### Generating the graphical illustrations |
|
53 |
|
54 We include LaTeX/PGFPLOTS files for graphically illustrating the numerical results. |
|
55 To generate `cube.pdf` and `cylinder.pdf` that visualise the computations, after running |
|
56 `non-riemannian-opt` as indicated above, you can use: |
|
57 ```console |
|
58 cd visualisations |
|
59 pdflatex cube |
|
60 pdflatex cylinder |
|
61 ``` |
|
62 |
51 ## Internals |
63 ## Internals |
52 |
64 |
53 If you are interested in the program internals, the integrated source code |
65 If you are interested in the program internals, the integrated source code |
54 documentation may be built and opened with |
66 documentation may be built and opened with |
55 ```console |
67 ```console |