Documentation ¶
Index ¶
- Constants
- func CheckParameterValue(p *Parameter, v *numstr.NumberOrString) error
- type API
- type Assignment
- type Bounds
- type Constraint
- type ConstraintType
- type Experiment
- type ExperimentItem
- type ExperimentLabels
- type ExperimentList
- type ExperimentListQuery
- type ExperimentName
- type Metric
- type Optimization
- type OrderConstraint
- type Parameter
- type ParameterType
- type Server
- type SumConstraint
- type SumConstraintParameter
- type TrialAssignments
- type TrialItem
- type TrialLabels
- type TrialList
- type TrialListQuery
- type TrialStatus
- type TrialValues
- type Value
Constants ¶
const ( ErrExperimentNameInvalid api.ErrorType = "experiment-name-invalid" ErrExperimentNameConflict api.ErrorType = "experiment-name-conflict" ErrExperimentInvalid api.ErrorType = "experiment-invalid" ErrExperimentNotFound api.ErrorType = "experiment-not-found" ErrExperimentStopped api.ErrorType = "experiment-stopped" ErrTrialInvalid api.ErrorType = "trial-invalid" ErrTrialNotFound api.ErrorType = "trial-not-found" ErrTrialAlreadyReported api.ErrorType = "trial-already-reported" )
Variables ¶
This section is empty.
Functions ¶
func CheckParameterValue ¶
func CheckParameterValue(p *Parameter, v *numstr.NumberOrString) error
CheckParameterValue validates that the supplied value can be used for a parameter.
Types ¶
type API ¶
type API interface { Options(context.Context) (Server, error) GetAllExperiments(context.Context, ExperimentListQuery) (ExperimentList, error) GetAllExperimentsByPage(context.Context, string) (ExperimentList, error) GetExperimentByName(context.Context, ExperimentName) (Experiment, error) GetExperiment(context.Context, string) (Experiment, error) CreateExperimentByName(context.Context, ExperimentName, Experiment) (Experiment, error) CreateExperiment(context.Context, string, Experiment) (Experiment, error) DeleteExperiment(context.Context, string) error LabelExperiment(context.Context, string, ExperimentLabels) error GetAllTrials(context.Context, string, TrialListQuery) (TrialList, error) CreateTrial(context.Context, string, TrialAssignments) (TrialAssignments, error) NextTrial(context.Context, string) (TrialAssignments, error) ReportTrial(context.Context, string, TrialValues) error AbandonRunningTrial(context.Context, string) error LabelTrial(context.Context, string, TrialLabels) error }
API provides bindings for the supported endpoints
type Assignment ¶
type Assignment struct { // The name of the parameter in the experiment the assignment corresponds to. ParameterName string `json:"parameterName"` // The assigned value of the parameter. Value numstr.NumberOrString `json:"value"` }
type Constraint ¶
type Constraint struct { // Optional name for constraint. Name string `json:"name,omitempty"` ConstraintType ConstraintType `json:"constraintType"` *SumConstraint `json:",omitempty"` *OrderConstraint `json:",omitempty"` }
type ConstraintType ¶
type ConstraintType string
const ( ConstraintSum ConstraintType = "sum" ConstraintOrder ConstraintType = "order" )
type Experiment ¶
type Experiment struct { // The experiment metadata. api.Metadata `json:"-"` // The display name of the experiment. Do not use for generating URLs! DisplayName string `json:"displayName,omitempty"` // The number of observations made for this experiment. Observations int64 `json:"observations,omitempty"` // The target number of observations for this experiment. Budget int64 `json:"budget,omitempty"` // Controls how the optimizer will generate trials. Optimization []Optimization `json:"optimization,omitempty"` // The metrics been optimized in the experiment. Metrics []Metric `json:"metrics"` // Constraints for the experiment. Constraints []Constraint `json:"constraints,omitempty"` // The search space of the experiment. Parameters []Parameter `json:"parameters"` // Labels for this experiment. Labels map[string]string `json:"labels,omitempty"` }
Experiment combines the search space, outcomes and optimization configuration
func (*Experiment) Name ¶
func (e *Experiment) Name() string
Name allows an experiment to be used as an ExperimentName
type ExperimentItem ¶
type ExperimentItem struct{ Experiment }
func (*ExperimentItem) UnmarshalJSON ¶ added in v0.0.11
func (l *ExperimentItem) UnmarshalJSON(b []byte) error
type ExperimentLabels ¶
type ExperimentList ¶
type ExperimentList struct { // The experiment list metadata. api.Metadata `json:"-"` // The list of experiments. Experiments []ExperimentItem `json:"experiments,omitempty"` }
type ExperimentListQuery ¶
type ExperimentListQuery struct{ api.IndexQuery }
type ExperimentName ¶
type ExperimentName interface {
Name() string
}
ExperimentName exists to clearly separate cases where an actual name can be used
func NewExperimentName ¶
func NewExperimentName(n string) ExperimentName
NewExperimentName returns an experiment name for a given string
func SplitTrialName ¶
func SplitTrialName(name string) (ExperimentName, int64)
SplitTrialName provides a consistent experience when trying to split a "trial name" into an experiment name and a trial number. When the provided name does not contain a number, the resulting number will be less then zero.
type Optimization ¶
type OrderConstraint ¶
type Parameter ¶
type Parameter struct { // The name of the parameter. Name string `json:"name"` // The type of the parameter. Type ParameterType `json:"type"` // The domain of the parameter. Bounds *Bounds `json:"bounds,omitempty"` // The discrete values for a categorical parameter. Values []string `json:"values,omitempty"` }
Parameter is a variable that is going to be tuned in an experiment
func (*Parameter) LowerBound ¶
func (p *Parameter) LowerBound() (*numstr.NumberOrString, error)
LowerBound attempts to return the lower bound for this parameter.
func (*Parameter) ParseValue ¶
func (p *Parameter) ParseValue(s string) (*numstr.NumberOrString, error)
ParseValue attempts to parse the supplied value into a NumberOrString based on the type of this parameter.
func (*Parameter) UpperBound ¶
func (p *Parameter) UpperBound() (*numstr.NumberOrString, error)
UpperBound attempts to return the upper bound for this parameter.
type ParameterType ¶
type ParameterType string
const ( ParameterTypeInteger ParameterType = "int" ParameterTypeDouble ParameterType = "double" ParameterTypeCategorical ParameterType = "categorical" )
type SumConstraint ¶
type SumConstraint struct { // Flag indicating if bound is upper or lower bound. IsUpperBound bool `json:"isUpperBound,omitempty"` // Bound for inequality constraint. Bound float64 `json:"bound"` // Parameters and weights for constraint. Parameters []SumConstraintParameter `json:"parameters"` }
type SumConstraintParameter ¶
type TrialAssignments ¶
type TrialAssignments struct { // The trial metadata. api.Metadata `json:"-"` // The list of parameter names and their assigned values. Assignments []Assignment `json:"assignments"` // Labels for this trial. Labels map[string]string `json:"labels,omitempty"` }
type TrialItem ¶
type TrialItem struct { TrialAssignments TrialValues // The current trial status. Status TrialStatus `json:"status"` // Ordinal number indicating when during an experiment the trail was generated. Number int64 `json:"number"` // Experiment is a reference back to the experiment this trial item is associated with. This field is never // populated by the API, but may be useful for consumers to maintain a connection between resources. Experiment *Experiment `json:"-"` }
func (*TrialItem) UnmarshalJSON ¶ added in v0.0.11
type TrialLabels ¶
type TrialList ¶
type TrialList struct { // The trial list metadata. api.Metadata `json:"-"` // The list of trials. Trials []TrialItem `json:"trials"` // Experiment is a reference back to the experiment this trial item is associated with. This field is never // populated by the API, but may be useful for consumers to maintain a connection between resources. Experiment *Experiment `json:"-"` }
type TrialListQuery ¶
type TrialListQuery struct{ api.IndexQuery }
func (*TrialListQuery) AddStatus ¶ added in v0.0.11
func (q *TrialListQuery) AddStatus(status TrialStatus)
func (*TrialListQuery) SetStatus ¶ added in v0.0.11
func (q *TrialListQuery) SetStatus(status ...TrialStatus)
type TrialStatus ¶
type TrialStatus string
const ( TrialStaged TrialStatus = "staged" TrialActive TrialStatus = "active" TrialCompleted TrialStatus = "completed" TrialFailed TrialStatus = "failed" TrialAbandoned TrialStatus = "abandoned" )
type TrialValues ¶
type TrialValues struct { // The observed values. Values []Value `json:"values,omitempty"` // Indicator that the trial failed, Values is ignored when true. Failed bool `json:"failed,omitempty"` // FailureReason is a the machine-readable reason code for the failure, if Failed is true. FailureReason string `json:"failureReason,omitempty"` // FailureMessage is a human-readable explanation of the failure, if Failed is true. FailureMessage string `json:"failureMessage,omitempty"` // StartTime is the time at which the trial was started. StartTime *time.Time `json:"startTime,omitempty"` // CompletionTime is the time at which the trial was completed. CompletionTime *time.Time `json:"completionTime,omitempty"` }