src/frank_wolfe.rs

changeset 4
5aa5c279e341
parent 0
eb3c7813b67a
--- a/src/frank_wolfe.rs	Thu Dec 01 23:07:35 2022 +0200
+++ b/src/frank_wolfe.rs	Sun Sep 25 21:45:56 2022 +0300
@@ -149,13 +149,13 @@
     inner : &InnerSettings<F>,
     iterator : I
 ) -> usize
-where F : Float + ToNalgebraRealField,
+where F : Float + ToNalgebraRealField<MixedType=F>,
       I : AlgIteratorFactory<F>,
       A : ForwardModel<Loc<F, N>, F>
 {
     // Form and solve finite-dimensional subproblem.
     let (Ã, g̃) = opA.findim_quadratic_model(&μ, b);
-    let mut x = μ.masses_dvector();
+    let mut x = μ.masses_mut();
 
     // `inner_τ1` is based on an estimate of the operator norm of $A$ from ℳ(Ω) to
     // ℝ^n. This estimate is a good one for the matrix norm from ℝ^m to ℝ^n when the
@@ -168,7 +168,7 @@
     let inner_τ = inner.τ0 / (findim_data.opAnorm_squared * F::cast_from(μ.len()));
     let iters = quadratic_nonneg(inner.method, &Ã, &g̃, α, &mut x, inner_τ, iterator);
     // Update masses of μ based on solution of finite-dimensional subproblem.
-    μ.set_masses_dvector(&x);
+    //μ.set_masses_dvector(&x);
 
     iters
 }
@@ -193,7 +193,7 @@
     iterator : I,
     mut plotter : SeqPlotter<F, N>,
 ) -> DiscreteMeasure<Loc<F, N>, F>
-where F : Float + ToNalgebraRealField,
+where F : Float + ToNalgebraRealField<MixedType=F>,
       I : AlgIteratorFactory<IterInfo<F, N>>,
       for<'b> &'b A::Observable : std::ops::Neg<Output=A::Observable>,
                                   //+ std::ops::Mul<F, Output=A::Observable>,  <-- FIXME: compiler overflow

mercurial