Skip to main content

EllipticControlProblem

Trait EllipticControlProblem 

Source
pub trait EllipticControlProblem<const N: usize>: ControlProblem<N> {
    // Required methods
    fn dimension_kind(&self, dim: usize) -> DimensionKind;
    fn transport(
        &self,
        state: &[f64; N],
        control: &Self::Control,
        derivs: &StateDerivatives<N>,
    ) -> Transport<N>;

    // Provided method
    fn boundary_conditions(&self) -> BoundaryConditions<N> { ... }
}
Expand description

A stationary (infinite-horizon) stochastic optimal control problem.

The stationary HJB equation is

0 = sup_u { f(x,u) + L^u V - r V }

where f is the running reward, L^u V is the controlled generator, and r is the discount rate. After optimizing over u, the equation is assembled in the same -T V + r V = source form as EllipticProblem, with T V + source = sup_u { f + L^u V }.

This trait extends crate::models::control::ControlProblem with the discretization data needed by the stationary finite-difference solver. The transport method has the same semantics as crate::numeric::finite_difference::pde::PdeProblem::transport: plus and minus define T, and source is the residual that makes T V + source equal the optimized driver.

Required Methods§

Source

fn dimension_kind(&self, dim: usize) -> DimensionKind

Discretization kind for dim.

Source

fn transport( &self, state: &[f64; N], control: &Self::Control, derivs: &StateDerivatives<N>, ) -> Transport<N>

Transport coefficients and residual source for the given control and derivatives.

The returned source is used as the right-hand side of the stationary operator. It must satisfy T V + source = f + L^u V at the current derivative bundle, where T V is the discrete transport operator built from plus and minus.

Provided Methods§

Source

fn boundary_conditions(&self) -> BoundaryConditions<N>

Boundary conditions for each dimension.

Defaults to zero Neumann (natural boundary) on every side.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§