Scaling heuristic updates

Tue, 04 Aug 2026 09:15:00 -0500

author
Tuomo Valkonen <tuomov@iki.fi>
date
Tue, 04 Aug 2026 09:15:00 -0500
changeset 87
7b5404283df0
parent 86
1c74bb0439a8
child 88
51dbb2cc25d9

Scaling heuristic updates

Cargo.lock file | annotate | diff | comparison | revisions
Cargo.toml file | annotate | diff | comparison | revisions
src/prox_penalty/radon_squared.rs file | annotate | diff | comparison | revisions
src/prox_penalty/wave.rs file | annotate | diff | comparison | revisions
--- a/Cargo.lock	Mon Aug 03 19:28:07 2026 -0500
+++ b/Cargo.lock	Tue Aug 04 09:15:00 2026 -0500
@@ -33,7 +33,7 @@
 
 [[package]]
 name = "alg_tools"
-version = "0.5.3-dev"
+version = "0.5.4"
 dependencies = [
  "anyhow",
  "colored",
@@ -647,7 +647,7 @@
 
 [[package]]
 name = "measures"
-version = "0.2.1"
+version = "0.3.0"
 dependencies = [
  "alg_tools",
  "nalgebra",
--- a/Cargo.toml	Mon Aug 03 19:28:07 2026 -0500
+++ b/Cargo.toml	Tue Aug 04 09:15:00 2026 -0500
@@ -28,7 +28,7 @@
 features = ["nightly"]
 
 [dependencies.measures]
-version = "~0.2.0"
+version = "~0.3.0"
 path = "../measures"
 
 [dependencies]
--- a/src/prox_penalty/radon_squared.rs	Mon Aug 03 19:28:07 2026 -0500
+++ b/src/prox_penalty/radon_squared.rs	Tue Aug 04 09:15:00 2026 -0500
@@ -100,18 +100,23 @@
                 return μ.merge_spikes_fitness(config.merging, f, |&v| v).1;
             }
         }
-        μ.merge_spikes(config.merging, |μ_candidate| {
-            // Important: μ_candidate's new points are afterwards,
-            // and do not conflict with μ_base.
-            // TODO: could simplify to requiring μ_base instead of μ_radon.
-            // but may complicate with sliding base's exgtra points that need to be
-            // after μ_candidate's extra points.
-            // TODO: doesn't seem to work, maybe need to merge μ_base as well?
-            // Although that doesn't seem to make sense.
-            let μ_radon = μ_candidate.sub_matching(μ_base);
-            reg.verify_merge_candidate_radonsq(τv, μ_candidate, τ, ε, &config, &μ_radon)
-            //let n = μ_candidate.dist_matching(μ_base);
-            //reg.find_tolerance_violation_slack(τv, τ, ε, false, config, n).is_none()
+        μ.merge_spikes(config.merging, |μ_candidate, is_scaling| {
+            if is_scaling {
+                // Scaling heuristic is pointless without fitness-based merging
+                false
+            } else {
+                // Important: μ_candidate's new points are afterwards,
+                // and do not conflict with μ_base.
+                // TODO: could simplify to requiring μ_base instead of μ_radon.
+                // but may complicate with sliding base's exgtra points that need to be
+                // after μ_candidate's extra points.
+                // TODO: doesn't seem to work, maybe need to merge μ_base as well?
+                // Although that doesn't seem to make sense.
+                let μ_radon = μ_candidate.sub_matching(μ_base);
+                reg.verify_merge_candidate_radonsq(τv, μ_candidate, τ, ε, &config, &μ_radon)
+                //let n = μ_candidate.dist_matching(μ_base);
+                //reg.find_tolerance_violation_slack(τv, τ, ε, false, config, n).is_none()
+            }
         })
     }
 }
--- a/src/prox_penalty/wave.rs	Mon Aug 03 19:28:07 2026 -0500
+++ b/src/prox_penalty/wave.rs	Tue Aug 04 09:15:00 2026 -0500
@@ -206,9 +206,14 @@
                 return μ.merge_spikes_fitness(config.merging, f, |&v| v).1;
             }
         }
-        μ.merge_spikes(config.merging, |μ_candidate| {
-            let mut d = &*τv + self.preapply(μ_candidate.sub_matching(μ_base));
-            reg.verify_merge_candidate(&mut d, μ_candidate, τ, ε, config)
+        μ.merge_spikes(config.merging, |μ_candidate, is_scaling| {
+            if is_scaling {
+                // Scaling heuristic is pointless without fitness-based merging
+                false
+            } else {
+                let mut d = &*τv + self.preapply(μ_candidate.sub_matching(μ_base));
+                reg.verify_merge_candidate(&mut d, μ_candidate, τ, ε, config)
+            }
         })
     }
 }

mercurial