autopilot/interface+externalscoreattach: define ScoreSettable
ScoreSettable is an interface that let caller set external scores for the heuristic. The ExternalScoreAttachment and WeightedCombAttachment heuristics implement this interface.
This commit is contained in:
parent
83edcb7153
commit
b23e53ea33
@ -25,7 +25,7 @@ type WeightedCombAttachment struct {
|
|||||||
|
|
||||||
// NewWeightedCombAttachment creates a new instance of a WeightedCombAttachment.
|
// NewWeightedCombAttachment creates a new instance of a WeightedCombAttachment.
|
||||||
func NewWeightedCombAttachment(h ...*WeightedHeuristic) (
|
func NewWeightedCombAttachment(h ...*WeightedHeuristic) (
|
||||||
AttachmentHeuristic, error) {
|
*WeightedCombAttachment, error) {
|
||||||
|
|
||||||
// The sum of weights given to the sub-heuristics must sum to exactly
|
// The sum of weights given to the sub-heuristics must sum to exactly
|
||||||
// 1.0.
|
// 1.0.
|
||||||
@ -44,8 +44,9 @@ func NewWeightedCombAttachment(h ...*WeightedHeuristic) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
// A compile time assertion to ensure WeightedCombAttachment meets the
|
// A compile time assertion to ensure WeightedCombAttachment meets the
|
||||||
// AttachmentHeuristic interface.
|
// AttachmentHeuristic and ScoreSettable interfaces.
|
||||||
var _ AttachmentHeuristic = (*WeightedCombAttachment)(nil)
|
var _ AttachmentHeuristic = (*WeightedCombAttachment)(nil)
|
||||||
|
var _ ScoreSettable = (*WeightedCombAttachment)(nil)
|
||||||
|
|
||||||
// Name returns the name of this heuristic.
|
// Name returns the name of this heuristic.
|
||||||
//
|
//
|
||||||
@ -135,6 +136,8 @@ func (c *WeightedCombAttachment) NodeScores(g ChannelGraph, chans []Channel,
|
|||||||
//
|
//
|
||||||
// Since this heuristic doesn't keep any internal scores, it will recursively
|
// Since this heuristic doesn't keep any internal scores, it will recursively
|
||||||
// apply the scores to its sub-heuristics.
|
// apply the scores to its sub-heuristics.
|
||||||
|
//
|
||||||
|
// NOTE: This is a part of the ScoreSettable interface.
|
||||||
func (c *WeightedCombAttachment) SetNodeScores(targetHeuristic string,
|
func (c *WeightedCombAttachment) SetNodeScores(targetHeuristic string,
|
||||||
newScores map[NodeID]float64) (bool, error) {
|
newScores map[NodeID]float64) (bool, error) {
|
||||||
|
|
||||||
|
@ -23,8 +23,9 @@ func NewExternalScoreAttachment() *ExternalScoreAttachment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// A compile time assertion to ensure ExternalScoreAttachment meets the
|
// A compile time assertion to ensure ExternalScoreAttachment meets the
|
||||||
// AttachmentHeuristic interface.
|
// AttachmentHeuristic and ScoreSettable interfaces.
|
||||||
var _ AttachmentHeuristic = (*ExternalScoreAttachment)(nil)
|
var _ AttachmentHeuristic = (*ExternalScoreAttachment)(nil)
|
||||||
|
var _ ScoreSettable = (*ExternalScoreAttachment)(nil)
|
||||||
|
|
||||||
// Name returns the name of this heuristic.
|
// Name returns the name of this heuristic.
|
||||||
//
|
//
|
||||||
@ -38,6 +39,8 @@ func (s *ExternalScoreAttachment) Name() string {
|
|||||||
// of the targeted heuristic, to allow recursively target specific
|
// of the targeted heuristic, to allow recursively target specific
|
||||||
// sub-heuristics. The returned boolean indicates whether the targeted
|
// sub-heuristics. The returned boolean indicates whether the targeted
|
||||||
// heuristic was found.
|
// heuristic was found.
|
||||||
|
//
|
||||||
|
// NOTE: This is a part of the ScoreSettable interface.
|
||||||
func (s *ExternalScoreAttachment) SetNodeScores(targetHeuristic string,
|
func (s *ExternalScoreAttachment) SetNodeScores(targetHeuristic string,
|
||||||
newScores map[NodeID]float64) (bool, error) {
|
newScores map[NodeID]float64) (bool, error) {
|
||||||
|
|
||||||
|
@ -142,6 +142,21 @@ type AttachmentHeuristic interface {
|
|||||||
map[NodeID]*NodeScore, error)
|
map[NodeID]*NodeScore, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ScoreSettable is an interface that indicates that the scores returned by the
|
||||||
|
// heuristic can be mutated by an external caller. The ExternalScoreAttachment
|
||||||
|
// currently implements this interface, and so should any heuristic that is
|
||||||
|
// using the ExternalScoreAttachment as a sub-heuristic, or keeps their own
|
||||||
|
// internal list of mutable scores, to allow access to setting the internal
|
||||||
|
// scores.
|
||||||
|
type ScoreSettable interface {
|
||||||
|
// SetNodeScores is used to set the internal map from NodeIDs to
|
||||||
|
// scores. The passed scores must be in the range [0, 1.0]. The fist
|
||||||
|
// parameter is the name of the targeted heuristic, to allow
|
||||||
|
// recursively target specific sub-heuristics. The returned boolean
|
||||||
|
// indicates whether the targeted heuristic was found.
|
||||||
|
SetNodeScores(string, map[NodeID]float64) (bool, error)
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// availableHeuristics holds all heuristics possible to combine for use
|
// availableHeuristics holds all heuristics possible to combine for use
|
||||||
// with the autopilot agent.
|
// with the autopilot agent.
|
||||||
|
Loading…
Reference in New Issue
Block a user