src/experiments.rs

changeset 72
e9a460a0e638
parent 61
4f468d35fa29
--- a/src/experiments.rs	Fri May 15 14:40:02 2026 -0500
+++ b/src/experiments.rs	Sun Jul 19 07:34:39 2026 +0200
@@ -156,18 +156,6 @@
 
 //#[replace_float_literals(F::cast_from(literal))]
 impl DefaultExperiment {
-    // fn default_list() -> Vec<Self> {
-    //     use DefaultExperiment::*;
-    //     [
-    //         Experiment1D,
-    //         Experiment1DFast,
-    //         Experiment2D,
-    //         Experiment2DFast,
-    //         Experiment1D_L1,
-    //     ]
-    //     .into()
-    // }
-
     /// Convert the experiment shorthand into a runnable experiment configuration.
     fn get_experiment(
         &self,
@@ -193,58 +181,41 @@
         make_float_constant!(Hat1 = 0.16);
         make_float_constant!(HatBias = 0.05);
 
-        // We use a different step length for PDPS in 2D experiments
-        // let pdps_2d = (DefaultAlgorithm::PDPS,
-        //     AlgorithmOverrides {
-        //         tau0 : Some(3.0),
-        //         sigma0 : Some(0.99 / 3.0),
-        //         .. Default::default()
-        //     }
-        // );
-        // let radon_pdps_2d = (DefaultAlgorithm::RadonPDPS,
-        //     AlgorithmOverrides {
-        //         tau0 : Some(3.0),
-        //         sigma0 : Some(0.99 / 3.0),
-        //         .. Default::default()
-        //     }
-        // );
-        let sliding_fb_cut_gaussian = (DefaultAlgorithm::SlidingFB, AlgorithmOverrides {
-            theta0: Some(0.3),
-            ..Default::default()
-        });
-        // let higher_cpos = |alg| (alg,
-        //     AlgorithmOverrides {
-        //         transport_tolerance_pos : Some(1000.0),
-        //         .. Default::default()
-        //     }
-        // );
-        let higher_cpos_merging = |alg| {
+        let basic = |alg| {
             (alg, AlgorithmOverrides {
-                transport_tolerance_pos: Some(1000.0),
-                merge: Some(true),
-                fitness_merging: Some(true),
+                gradv_lipest_mult: Some(0.04),
+                transport_tolerance: Some(100.0),
+                ..Default::default()
+            })
+        };
+        let radon = |alg| {
+            (alg, AlgorithmOverrides {
+                gradv_lipest_mult: Some(0.04),
+                transport_tolerance: Some(1000.0),
                 ..Default::default()
             })
         };
-        let higher_cpos_merging_steptune = |alg| {
+        let radon_2dtv = |alg| {
             (alg, AlgorithmOverrides {
-                transport_tolerance_pos: Some(1000.0),
-                theta0: Some(0.3),
-                merge: Some(true),
-                fitness_merging: Some(true),
+                gradv_lipest_mult: Some(0.04),
+                transport_tolerance: Some(10000.0),
+                sigma0: Some(0.15),
                 ..Default::default()
             })
         };
-        let much_higher_cpos_merging_steptune = |alg| {
-            (alg, AlgorithmOverrides {
-                transport_tolerance_pos: Some(10000.0),
-                sigma0: Some(0.15),
-                theta0: Some(0.3),
-                merge: Some(true),
-                fitness_merging: Some(true),
-                ..Default::default()
-            })
-        };
+        macro_rules! overrides {
+            ($a:ident, $b:ident) => {
+                HashMap::from([
+                    $a(DefaultAlgorithm::SlidingFB),
+                    $a(DefaultAlgorithm::SlidingPDPS),
+                    $a(DefaultAlgorithm::ForwardPDPS),
+                    $b(DefaultAlgorithm::RadonFB),
+                    $b(DefaultAlgorithm::RadonSlidingFB),
+                    $b(DefaultAlgorithm::RadonSlidingPDPS),
+                ])
+            };
+        }
+
         //  We add a hash of the experiment name to the configured
         // noise seed to not use the same noise for different experiments.
         let mut h = DefaultHasher::new();
@@ -273,11 +244,7 @@
                         kernel_plot_width,
                         noise_seed,
                         default_merge_radius,
-                        algorithm_overrides: HashMap::from([
-                            sliding_fb_cut_gaussian,
-                            higher_cpos_merging(DefaultAlgorithm::RadonFB),
-                            higher_cpos_merging(DefaultAlgorithm::RadonSlidingFB),
-                        ]),
+                        algorithm_overrides: overrides!(basic, radon),
                     },
                 })
             }
@@ -298,10 +265,7 @@
                         kernel_plot_width,
                         noise_seed,
                         default_merge_radius,
-                        algorithm_overrides: HashMap::from([
-                            higher_cpos_merging(DefaultAlgorithm::RadonFB),
-                            higher_cpos_merging(DefaultAlgorithm::RadonSlidingFB),
-                        ]),
+                        algorithm_overrides: overrides!(basic, radon),
                     },
                 })
             }
@@ -323,11 +287,7 @@
                         kernel_plot_width,
                         noise_seed,
                         default_merge_radius,
-                        algorithm_overrides: HashMap::from([
-                            sliding_fb_cut_gaussian,
-                            higher_cpos_merging(DefaultAlgorithm::RadonFB),
-                            higher_cpos_merging(DefaultAlgorithm::RadonSlidingFB),
-                        ]),
+                        algorithm_overrides: overrides!(basic, radon),
                     },
                 })
             }
@@ -348,10 +308,7 @@
                         kernel_plot_width,
                         noise_seed,
                         default_merge_radius,
-                        algorithm_overrides: HashMap::from([
-                            higher_cpos_merging(DefaultAlgorithm::RadonFB),
-                            higher_cpos_merging(DefaultAlgorithm::RadonSlidingFB),
-                        ]),
+                        algorithm_overrides: overrides!(basic, radon),
                     },
                 })
             }
@@ -482,10 +439,7 @@
                             kernel_plot_width,
                             noise_seed,
                             default_merge_radius,
-                            algorithm_overrides: HashMap::from([
-                                higher_cpos_merging_steptune(DefaultAlgorithm::RadonForwardPDPS),
-                                higher_cpos_merging_steptune(DefaultAlgorithm::RadonSlidingPDPS),
-                            ]),
+                            algorithm_overrides: overrides!(basic, radon),
                         },
                     },
                 })
@@ -522,14 +476,7 @@
                             kernel_plot_width,
                             noise_seed,
                             default_merge_radius,
-                            algorithm_overrides: HashMap::from([
-                                much_higher_cpos_merging_steptune(
-                                    DefaultAlgorithm::RadonForwardPDPS,
-                                ),
-                                much_higher_cpos_merging_steptune(
-                                    DefaultAlgorithm::RadonSlidingPDPS,
-                                ),
-                            ]),
+                            algorithm_overrides: overrides!(basic, radon_2dtv),
                         },
                     },
                 })

mercurial