Documentation
¶
Index ¶
- Constants
- Variables
- func FloatEquals(f, other float64) bool
- func FloatNearZero(f float64) bool
- type Constraint
- func FloatEqualsExpression(f float64, e *Expression) *Constraint
- func FloatEqualsTerm(f float64, t Term) *Constraint
- func FloatEqualsVariable(f float64, v *Variable) *Constraint
- func FloatGreaterThanOrEqualToTerm(f float64, t *Term) *Constraint
- func FloatGreaterThanOrEqualToVariable(f float64, v *Variable) *Constraint
- func FloatLessThanOrEqualToExpression(f float64, e *Expression) *Constraint
- func FloatLessThanOrEqualToTerm(f float64, t *Term) *Constraint
- func FloatLessThanOrEqualToVariable(f float64, v *Variable) *Constraint
- func FloatModifyStrength(f float64, c *Constraint) *Constraint
- func NewConstraint(expr *Expression, op RelationalOperator, strength Strength) *Constraint
- func NewConstraintFrom(other *Constraint, s Strength) *Constraint
- func NewConstraintRequired(expr *Expression, op RelationalOperator) *Constraint
- type ConstraintParser
- type Expression
- func (e *Expression) Add(other *Expression) *Expression
- func (e *Expression) AddFloat(constant float64) *Expression
- func (e *Expression) AddTerm(t *Term) *Expression
- func (e *Expression) AddVariable(v *Variable) *Expression
- func (e *Expression) Divide(other *Expression) (*Expression, error)
- func (e *Expression) DivideFloat(denominator float64) *Expression
- func (e *Expression) Equals(other *Expression) *Constraint
- func (e *Expression) EqualsFloat(constant float64) *Constraint
- func (e *Expression) EqualsTerm(t *Term) *Constraint
- func (e *Expression) EqualsVariable(v *Variable) *Constraint
- func (e *Expression) GreaterThanOrEqualTo(other *Expression) *Constraint
- func (e *Expression) GreaterThanOrEqualToFloat(constant float64) *Constraint
- func (e *Expression) GreaterThanOrEqualToTerm(t *Term) *Constraint
- func (e *Expression) GreaterThanOrEqualToVariable(v *Variable) *Constraint
- func (e *Expression) IsConstant() bool
- func (e *Expression) LessThanOrEqualTo(other *Expression) *Constraint
- func (e *Expression) LessThanOrEqualToFloat(constant float64) *Constraint
- func (e *Expression) LessThanOrEqualToTerm(t *Term) *Constraint
- func (e *Expression) LessThanOrEqualToVariable(v *Variable) *Constraint
- func (e *Expression) Multiply(other *Expression) (*Expression, error)
- func (e *Expression) MultiplyFloat(coefficient float64) *Expression
- func (e *Expression) Negate() *Expression
- func (e *Expression) Reduce() *Expression
- func (e *Expression) String() string
- func (e *Expression) Subtract(other *Expression) *Expression
- func (e *Expression) SubtractFloat(constant float64) *Expression
- func (e *Expression) SubtractTerm(t *Term) *Expression
- func (e *Expression) SubtractVariable(v *Variable) *Expression
- func (e *Expression) Value() float64
- type RelationalOperator
- type Solver
- func (s *Solver) AddConstraint(c *Constraint) error
- func (s *Solver) AddEditVariable(v *Variable, strength Strength) error
- func (s *Solver) AddVariable(name string)
- func (s *Solver) HasConstraint(c Constraint) bool
- func (s *Solver) HasEditVariable(v *Variable) bool
- func (s *Solver) RemoveConstraint(c *Constraint) error
- func (s *Solver) RemoveEditVariable(v *Variable) error
- func (s *Solver) SuggestValue(v Variable, value float64) error
- func (s *Solver) UpdateVariables()
- type Strength
- type Term
- func (t *Term) Add(other *Term) *Expression
- func (t *Term) AddExpression(e *Expression) *Expression
- func (t *Term) AddFloat(constant float64) *Expression
- func (t *Term) AddVariable(v *Variable) *Expression
- func (t *Term) Divide(denominator float64) *Term
- func (t *Term) Equals(other *Term) *Constraint
- func (t *Term) EqualsExpression(e *Expression) *Constraint
- func (t *Term) EqualsFloat(constant float64) *Constraint
- func (t *Term) EqualsVariable(v *Variable) *Constraint
- func (t *Term) GreaterThanOrEqualTo(other *Term) *Constraint
- func (t *Term) GreaterThanOrEqualToExpression(e *Expression) *Constraint
- func (t *Term) GreaterThanOrEqualToFloat(constant float64) *Constraint
- func (t *Term) GreaterThanOrEqualToVariable(v *Variable) *Constraint
- func (t *Term) LessThanOrEqualTo(other *Term) *Constraint
- func (t *Term) LessThanOrEqualToExpression(e *Expression) *Constraint
- func (t *Term) LessThanOrEqualToFloat(constant float64) *Constraint
- func (t *Term) LessThanOrEqualToVariable(v *Variable) *Constraint
- func (t *Term) Multiply(coefficient float64) *Term
- func (t *Term) Negate() *Term
- func (t *Term) String() string
- func (t *Term) Subtract(other *Term) *Expression
- func (t *Term) SubtractExpression(e *Expression) *Expression
- func (t *Term) SubtractFloat(constant float64) *Expression
- func (t *Term) Value() float64
- type Terms
- type Variable
- func (v *Variable) Add(other *Variable) *Expression
- func (v *Variable) AddExpression(e *Expression) *Expression
- func (v *Variable) AddFloat(constant float64) *Expression
- func (v *Variable) AddTerm(t *Term) *Expression
- func (v *Variable) Divide(denominator float64) *Term
- func (v *Variable) Equals(other *Variable) *Constraint
- func (v *Variable) EqualsExpression(e *Expression) *Constraint
- func (v *Variable) EqualsFloat(constant float64) *Constraint
- func (v *Variable) EqualsTerm(t Term) *Constraint
- func (v *Variable) GreaterThanOrEqualTo(other *Variable) *Constraint
- func (v *Variable) GreaterThanOrEqualToExpression(e *Expression) *Constraint
- func (v *Variable) GreaterThanOrEqualToFloat(constant float64) *Constraint
- func (v *Variable) GreaterThanOrEqualToTerm(t Term) *Constraint
- func (v *Variable) LessThanOrEqualTo(other *Variable) *Constraint
- func (v *Variable) LessThanOrEqualToExpression(e *Expression) *Constraint
- func (v *Variable) LessThanOrEqualToFloat(constant float64) *Constraint
- func (v *Variable) LessThanOrEqualToTerm(t *Term) *Constraint
- func (v *Variable) Multiply(coefficient float64) *Term
- func (v *Variable) Negate() *Term
- func (v *Variable) String() string
- func (v *Variable) Subtract(other *Variable) *Expression
- func (v *Variable) SubtractExpression(e *Expression) *Expression
- func (v *Variable) SubtractFloat(constant float64) *Expression
- func (v *Variable) SubtractTerm(t Term) *Expression
- type VariableResolver
Constants ¶
View Source
const Epsilon = 1.0e-12
Variables ¶
View Source
var ( DuplicateConstraintErr = constraintError("unsatisfiable constraint") DuplicateEditVariableErr = errors.New("duplicate edit variable") InternalSolverErr = errors.New("internal solver error") NonLinearExpressionErr = errors.New("non-linear expression") RequiredFailureErr = errors.New("required failure") UnknownConstraintErr = constraintError("unknown constraint") UnknownEditVariableErr = errors.New("unknown edit variable") UnsatisfiableConstraintErr = constraintError("unsatisfiable constraint") )
View Source
var ( Required = CreateStrengthWithDefaultWeight(1000, 1000, 1000) Strong = CreateStrengthWithDefaultWeight(1, 0, 0) Medium = CreateStrengthWithDefaultWeight(0, 1, 0) Weak = CreateStrengthWithDefaultWeight(0, 0, 1) )
View Source
var OperationFromString = map[string]RelationalOperator{ "LEQ": OP_LE, "GEQ": OP_GE, "EQ": OP_EQ, }
View Source
var OperationNames = map[RelationalOperator]string{ OP_LE: "LEQ", OP_GE: "GEQ", OP_EQ: "EQ", }
Functions ¶
func FloatEquals ¶
func FloatNearZero ¶
Types ¶
type Constraint ¶
type Constraint struct { Strength Strength Op RelationalOperator // contains filtered or unexported fields }
func FloatEqualsExpression ¶
func FloatEqualsExpression(f float64, e *Expression) *Constraint
func FloatEqualsTerm ¶
func FloatEqualsTerm(f float64, t Term) *Constraint
func FloatEqualsVariable ¶
func FloatEqualsVariable(f float64, v *Variable) *Constraint
func FloatGreaterThanOrEqualToTerm ¶
func FloatGreaterThanOrEqualToTerm(f float64, t *Term) *Constraint
func FloatGreaterThanOrEqualToVariable ¶
func FloatGreaterThanOrEqualToVariable(f float64, v *Variable) *Constraint
func FloatLessThanOrEqualToExpression ¶
func FloatLessThanOrEqualToExpression(f float64, e *Expression) *Constraint
func FloatLessThanOrEqualToTerm ¶
func FloatLessThanOrEqualToTerm(f float64, t *Term) *Constraint
func FloatLessThanOrEqualToVariable ¶
func FloatLessThanOrEqualToVariable(f float64, v *Variable) *Constraint
func FloatModifyStrength ¶
func FloatModifyStrength(f float64, c *Constraint) *Constraint
func NewConstraint ¶
func NewConstraint(expr *Expression, op RelationalOperator, strength Strength) *Constraint
func NewConstraintFrom ¶
func NewConstraintFrom(other *Constraint, s Strength) *Constraint
func NewConstraintRequired ¶
func NewConstraintRequired(expr *Expression, op RelationalOperator) *Constraint
func (*Constraint) NewModifyStrength ¶
func (c *Constraint) NewModifyStrength(strength Strength) *Constraint
func (*Constraint) String ¶
func (c *Constraint) String() string
type ConstraintParser ¶
type ConstraintParser struct {
// contains filtered or unexported fields
}
func NewConstraintParser ¶
func NewConstraintParser() *ConstraintParser
func (*ConstraintParser) ParseConstraint ¶
func (cp *ConstraintParser) ParseConstraint(rawConstraint string, variableResolver VariableResolver) (*Constraint, error)
type Expression ¶
func NewExpression ¶
func NewExpression(constant float64, terms ...*Term) *Expression
func NewExpressionFrom ¶
func NewExpressionFrom(terms ...*Term) *Expression
func (*Expression) Add ¶
func (e *Expression) Add(other *Expression) *Expression
func (*Expression) AddFloat ¶
func (e *Expression) AddFloat(constant float64) *Expression
func (*Expression) AddTerm ¶
func (e *Expression) AddTerm(t *Term) *Expression
func (*Expression) AddVariable ¶
func (e *Expression) AddVariable(v *Variable) *Expression
func (*Expression) Divide ¶
func (e *Expression) Divide(other *Expression) (*Expression, error)
func (*Expression) DivideFloat ¶
func (e *Expression) DivideFloat(denominator float64) *Expression
func (*Expression) Equals ¶
func (e *Expression) Equals(other *Expression) *Constraint
Expression relations
func (*Expression) EqualsFloat ¶
func (e *Expression) EqualsFloat(constant float64) *Constraint
func (*Expression) EqualsTerm ¶
func (e *Expression) EqualsTerm(t *Term) *Constraint
func (*Expression) EqualsVariable ¶
func (e *Expression) EqualsVariable(v *Variable) *Constraint
func (*Expression) GreaterThanOrEqualTo ¶
func (e *Expression) GreaterThanOrEqualTo(other *Expression) *Constraint
func (*Expression) GreaterThanOrEqualToFloat ¶
func (e *Expression) GreaterThanOrEqualToFloat(constant float64) *Constraint
func (*Expression) GreaterThanOrEqualToTerm ¶
func (e *Expression) GreaterThanOrEqualToTerm(t *Term) *Constraint
func (*Expression) GreaterThanOrEqualToVariable ¶
func (e *Expression) GreaterThanOrEqualToVariable(v *Variable) *Constraint
func (*Expression) IsConstant ¶
func (e *Expression) IsConstant() bool
func (*Expression) LessThanOrEqualTo ¶
func (e *Expression) LessThanOrEqualTo(other *Expression) *Constraint
func (*Expression) LessThanOrEqualToFloat ¶
func (e *Expression) LessThanOrEqualToFloat(constant float64) *Constraint
func (*Expression) LessThanOrEqualToTerm ¶
func (e *Expression) LessThanOrEqualToTerm(t *Term) *Constraint
func (*Expression) LessThanOrEqualToVariable ¶
func (e *Expression) LessThanOrEqualToVariable(v *Variable) *Constraint
func (*Expression) Multiply ¶
func (e *Expression) Multiply(other *Expression) (*Expression, error)
func (*Expression) MultiplyFloat ¶
func (e *Expression) MultiplyFloat(coefficient float64) *Expression
Expression multiply, divide, and unary invert
func (*Expression) Negate ¶
func (e *Expression) Negate() *Expression
func (*Expression) Reduce ¶
func (e *Expression) Reduce() *Expression
func (*Expression) String ¶
func (e *Expression) String() string
func (*Expression) Subtract ¶
func (e *Expression) Subtract(other *Expression) *Expression
func (*Expression) SubtractFloat ¶
func (e *Expression) SubtractFloat(constant float64) *Expression
func (*Expression) SubtractTerm ¶
func (e *Expression) SubtractTerm(t *Term) *Expression
func (*Expression) SubtractVariable ¶
func (e *Expression) SubtractVariable(v *Variable) *Expression
func (*Expression) Value ¶
func (e *Expression) Value() float64
type RelationalOperator ¶
type RelationalOperator int
const ( OP_LE RelationalOperator = iota OP_GE OP_EQ )
type Solver ¶
type Solver struct {
// contains filtered or unexported fields
}
func (*Solver) AddConstraint ¶
func (s *Solver) AddConstraint(c *Constraint) error
AddConstraint adds a constraint to the solver.
func (*Solver) AddEditVariable ¶
func (*Solver) AddVariable ¶
func (*Solver) HasConstraint ¶
func (s *Solver) HasConstraint(c Constraint) bool
func (*Solver) HasEditVariable ¶
func (*Solver) RemoveConstraint ¶
func (s *Solver) RemoveConstraint(c *Constraint) error
func (*Solver) RemoveEditVariable ¶
func (*Solver) UpdateVariables ¶
func (s *Solver) UpdateVariables()
type Strength ¶
type Strength float64
func ClipStrength ¶
func CreateStrength ¶
type Term ¶
func NewTermFrom ¶
func (*Term) Add ¶
func (t *Term) Add(other *Term) *Expression
func (*Term) AddExpression ¶
func (t *Term) AddExpression(e *Expression) *Expression
func (*Term) AddFloat ¶
func (t *Term) AddFloat(constant float64) *Expression
func (*Term) AddVariable ¶
func (t *Term) AddVariable(v *Variable) *Expression
func (*Term) Equals ¶
func (t *Term) Equals(other *Term) *Constraint
func (*Term) EqualsExpression ¶
func (t *Term) EqualsExpression(e *Expression) *Constraint
func (*Term) EqualsFloat ¶
func (t *Term) EqualsFloat(constant float64) *Constraint
func (*Term) EqualsVariable ¶
func (t *Term) EqualsVariable(v *Variable) *Constraint
func (*Term) GreaterThanOrEqualTo ¶
func (t *Term) GreaterThanOrEqualTo(other *Term) *Constraint
func (*Term) GreaterThanOrEqualToExpression ¶
func (t *Term) GreaterThanOrEqualToExpression(e *Expression) *Constraint
func (*Term) GreaterThanOrEqualToFloat ¶
func (t *Term) GreaterThanOrEqualToFloat(constant float64) *Constraint
func (*Term) GreaterThanOrEqualToVariable ¶
func (t *Term) GreaterThanOrEqualToVariable(v *Variable) *Constraint
func (*Term) LessThanOrEqualTo ¶
func (t *Term) LessThanOrEqualTo(other *Term) *Constraint
func (*Term) LessThanOrEqualToExpression ¶
func (t *Term) LessThanOrEqualToExpression(e *Expression) *Constraint
func (*Term) LessThanOrEqualToFloat ¶
func (t *Term) LessThanOrEqualToFloat(constant float64) *Constraint
func (*Term) LessThanOrEqualToVariable ¶
func (t *Term) LessThanOrEqualToVariable(v *Variable) *Constraint
func (*Term) Subtract ¶
func (t *Term) Subtract(other *Term) *Expression
func (*Term) SubtractExpression ¶
func (t *Term) SubtractExpression(e *Expression) *Expression
func (*Term) SubtractFloat ¶
func (t *Term) SubtractFloat(constant float64) *Expression
type Variable ¶
func NewVariable ¶
func NewVariableWithValue ¶
func (*Variable) Add ¶
func (v *Variable) Add(other *Variable) *Expression
func (*Variable) AddExpression ¶
func (v *Variable) AddExpression(e *Expression) *Expression
func (*Variable) AddFloat ¶
func (v *Variable) AddFloat(constant float64) *Expression
func (*Variable) AddTerm ¶
func (v *Variable) AddTerm(t *Term) *Expression
func (*Variable) Equals ¶
func (v *Variable) Equals(other *Variable) *Constraint
func (*Variable) EqualsExpression ¶
func (v *Variable) EqualsExpression(e *Expression) *Constraint
Variable relations
func (*Variable) EqualsFloat ¶
func (v *Variable) EqualsFloat(constant float64) *Constraint
func (*Variable) EqualsTerm ¶
func (v *Variable) EqualsTerm(t Term) *Constraint
func (*Variable) GreaterThanOrEqualTo ¶
func (v *Variable) GreaterThanOrEqualTo(other *Variable) *Constraint
func (*Variable) GreaterThanOrEqualToExpression ¶
func (v *Variable) GreaterThanOrEqualToExpression(e *Expression) *Constraint
func (*Variable) GreaterThanOrEqualToFloat ¶
func (v *Variable) GreaterThanOrEqualToFloat(constant float64) *Constraint
func (*Variable) GreaterThanOrEqualToTerm ¶
func (v *Variable) GreaterThanOrEqualToTerm(t Term) *Constraint
func (*Variable) LessThanOrEqualTo ¶
func (v *Variable) LessThanOrEqualTo(other *Variable) *Constraint
func (*Variable) LessThanOrEqualToExpression ¶
func (v *Variable) LessThanOrEqualToExpression(e *Expression) *Constraint
func (*Variable) LessThanOrEqualToFloat ¶
func (v *Variable) LessThanOrEqualToFloat(constant float64) *Constraint
func (*Variable) LessThanOrEqualToTerm ¶
func (v *Variable) LessThanOrEqualToTerm(t *Term) *Constraint
func (*Variable) Subtract ¶
func (v *Variable) Subtract(other *Variable) *Expression
func (*Variable) SubtractExpression ¶
func (v *Variable) SubtractExpression(e *Expression) *Expression
func (*Variable) SubtractFloat ¶
func (v *Variable) SubtractFloat(constant float64) *Expression
func (*Variable) SubtractTerm ¶
func (v *Variable) SubtractTerm(t Term) *Expression
type VariableResolver ¶
Click to show internal directories.
Click to hide internal directories.