@@ -27,67 +27,68 @@ Generate a scaled manifold objective based on `objective` with `scale` being `1`
2727in the first, `scale=-1` in the second case. The multiplication from the left with a scalar
2828is also overloaded.
2929"""
30- struct ScaledManifoldObjective{E,O2,O1<: AbstractManifoldObjective{E} ,F} < :
31- AbstractDecoratedManifoldObjective{E,O2}
30+ struct ScaledManifoldObjective{
31+ E<: AbstractEvaluationType ,O2,O1<: AbstractManifoldObjective{E} ,F
32+ } <: AbstractDecoratedManifoldObjective{E,O2}
3233 objective:: O1
3334 scale:: F
3435end
3536function ScaledManifoldObjective (
3637 objective:: O , scale:: F = 1
37- ) where {E<: AbstractEvaluationType ,O<: AbstractManifoldObjective{E} ,F}
38+ ) where {E<: AbstractEvaluationType ,O<: AbstractManifoldObjective{E} ,F<: Real }
3839 return ScaledManifoldObjective {E,O,O,F} (objective, scale)
3940end
4041function ScaledManifoldObjective (
4142 objective:: O1 , scale:: F = 1
4243) where {
43- F,
44+ F<: Real ,
4445 E<: AbstractEvaluationType ,
4546 O2<: AbstractManifoldObjective ,
4647 O1<: AbstractDecoratedManifoldObjective{E,O2} ,
4748}
4849 return ScaledManifoldObjective {E,O2,O1,F} (objective, scale)
4950end
50- Base.:- (objective:: AbstractManifoldObjective ) = ScaledManifoldObjective (objective, - 1.0 )
51- function Base.:* (scale:: F , objective:: AbstractManifoldObjective ) where {F}
51+ Base.:- (objective:: AbstractManifoldObjective ) = ScaledManifoldObjective (objective, - 1 )
52+ function Base.:* (scale:: Real , objective:: AbstractManifoldObjective )
5253 return ScaledManifoldObjective (objective, scale)
5354end
5455
5556@doc """
5657 get_cost(M::AbstractManifold, scaled_objective::ScaledManifoldObjective, p)
5758
58- Evaluated the scaled objective. ``s*f(p)``
59+ Evaluate the scaled objective. ``s*f(p)``
5960"""
6061function get_cost (M:: AbstractManifold , scaled_objective:: ScaledManifoldObjective , p)
6162 return scaled_objective. scale * get_cost (M, scaled_objective. objective, p)
6263end
6364
64- function get_cost_function (scaled_objective:: ScaledManifoldObjective , recursive= false )
65+ function get_cost_function (scaled_objective:: ScaledManifoldObjective , recursive:: Bool = false )
6566 recursive && (return get_cost_function (scaled_objective. objective, recursive))
6667 return (M, p) -> scaled_objective. scale * get_cost (M, scaled_objective, p)
6768end
6869@doc """
6970 get_gradient(M::AbstractManifold, scaled_objective::ScaledManifoldObjective, p)
7071 get_gradient!(M::AbstractManifold, X, scaled_objective::ScaledManifoldObjective, p)
7172
72- Evaluated the scaled gradient. ``s*$(_tex (:grad )) f(p)``
73+ Evaluate the scaled gradient. ``s*$(_tex (:grad )) f(p)``
7374"""
7475function get_gradient (M:: AbstractManifold , scaled_objective:: ScaledManifoldObjective , p)
7576 return scaled_objective. scale * get_gradient (M, scaled_objective. objective, p)
7677end
7778function get_gradient! (M:: AbstractManifold , X, scaled_objective:: ScaledManifoldObjective , p)
7879 get_gradient! (M, X, scaled_objective. objective, p)
79- X .= scaled_objective. scale * X
80+ X .= scaled_objective. scale . * X
8081 return X
8182end
8283
8384function get_gradient_function (
84- scaled_objective:: ScaledManifoldObjective{AllocatingEvaluation} , recursive= false
85+ scaled_objective:: ScaledManifoldObjective{AllocatingEvaluation} , recursive:: Bool = false
8586)
8687 recursive && (return get_gradient_function (scaled_objective. objective, recursive))
8788 return (M, p) -> get_gradient (M, scaled_objective, p)
8889end
8990function get_gradient_function (
90- scaled_objective:: ScaledManifoldObjective{InplaceEvaluation} , recursive= false
91+ scaled_objective:: ScaledManifoldObjective{InplaceEvaluation} , recursive:: Bool = false
9192)
9293 recursive && (return get_gradient_function (scaled_objective. objective, recursive))
9394 return (M, X, p) -> get_gradient! (M, X, scaled_objective, p)
99100 get_hessian(M::AbstractManifold, scaled_objective::ScaledManifoldObjective, p, X)
100101 get_hessian!(M::AbstractManifold, Y, scaled_objective::ScaledManifoldObjective, p, X)
101102
102- Evaluated the scaled Hessian ``s*$(_tex (:Hess )) f(p)``
103+ Evaluate the scaled Hessian ``s*$(_tex (:Hess )) f(p)``
103104"""
104105function get_hessian (M:: AbstractManifold , scaled_objective:: ScaledManifoldObjective , p, X)
105106 return scaled_objective. scale * get_hessian (M, scaled_objective. objective, p, X)
@@ -108,7 +109,7 @@ function get_hessian!(
108109 M:: AbstractManifold , Y, scaled_objective:: ScaledManifoldObjective , p, X
109110)
110111 get_hessian! (M, Y, scaled_objective. objective, p, X)
111- Y .= scaled_objective. scale * Y
112+ Y .= scaled_objective. scale . * Y
112113 return Y
113114end
114115
0 commit comments