src/measures/base.rs

Sun, 11 Dec 2022 23:25:53 +0200

author
Tuomo Valkonen <tuomov@iki.fi>
date
Sun, 11 Dec 2022 23:25:53 +0200
changeset 24
d29d1fcf5423
parent 0
eb3c7813b67a
permissions
-rw-r--r--

Support arbitrary regularisation terms; implement non-positivity-constrained regularisation.

* Fixes the conditional gradient methods that were incorrectly solving
positivity constrained subproblems although the infinite-dimensional
versions do not include such constraints.

* Introduces the `ExperimentV2` struct that has `regularisation` in place
of `α`. The `Experiment` struct is now deprecated.

* The L^2-squared experiments were switch to be unconstrained, as the
Franke-Wolfe implementations do not support constraints. (This would
be easy to add for the “fully corrective” variant, but is not
immediate for the “relaxed” variant.)

//! Basic definitions for measures

use serde::Serialize;
use alg_tools::types::Num;
use alg_tools::norms::{Norm, NormExponent};

/// This is used with [`Norm::norm`] to indicate that a Radon norm is to be computed.
#[derive(Copy,Clone,Serialize,Debug)]
pub struct Radon;
impl NormExponent for Radon {}

/// A trait for (Radon) measures.
///
/// Currently has no methods, just the requirement that the Radon norm be implemented.
pub trait Measure<F : Num> : Norm<F, Radon> {
    type Domain;
}

mercurial