| Copyright | (c) Andrew Lelechenko 2014-2015 |
|---|---|
| License | GPL-3 |
| Maintainer | andrew.lelechenko@gmail.com |
| Stability | experimental |
| Portability | POSIX |
| Safe Haskell | None |
| Language | Haskell2010 |
Math.ExpPairs
Description
Package implements an algorithm to minimize the maximum of a list of rational objective functions over the set of exponent pairs. See full description in A. V. Lelechenko, Linear programming over exponent pairs. Acta Univ. Sapientiae, Inform. 5, No. 2, 271-287 (2013). http://www.acta.sapientia.ro/acta-info/C5-2/info52-7.pdf
A set of useful applications can be found in Math.ExpPairs.Ivic, Math.ExpPairs.Kratzel and Math.ExpPairs.MenzerNowak.
Synopsis
- optimize :: [RationalForm Rational] -> [Constraint Rational] -> OptimizeResult
- data OptimizeResult
- optimalValue :: OptimizeResult -> RationalInf
- optimalPair :: OptimizeResult -> InitPair
- optimalPath :: OptimizeResult -> Path
- simulateOptimize :: Rational -> OptimizeResult
- simulateOptimize' :: RationalInf -> OptimizeResult
- data LinearForm t
- data RationalForm t = (LinearForm t) :/: (LinearForm t)
- data IneqType
- data Constraint t
- type InitPair = InitPair' Rational
- data Path
- data RatioInf t
- type RationalInf = RatioInf Integer
- pattern K :: forall a. (Eq a, Num a) => a -> LinearForm a
- pattern L :: forall a. (Eq a, Num a) => a -> LinearForm a
- pattern M :: forall a. (Eq a, Num a) => a -> LinearForm a
- (>.) :: Num t => LinearForm t -> LinearForm t -> Constraint t
- (>=.) :: Num t => LinearForm t -> LinearForm t -> Constraint t
- (<.) :: Num t => LinearForm t -> LinearForm t -> Constraint t
- (<=.) :: Num t => LinearForm t -> LinearForm t -> Constraint t
- scaleLF :: (Num t, Eq t) => t -> LinearForm t -> LinearForm t
Documentation
optimize :: [RationalForm Rational] -> [Constraint Rational] -> OptimizeResult #
This function takes a list of rational forms and a list of constraints and returns an exponent pair, which satisfies all constraints and minimizes the maximum of all rational forms.
data OptimizeResult #
Container for the result of optimization.
Instances
| Eq OptimizeResult # | |
Defined in Math.ExpPairs Methods (==) :: OptimizeResult -> OptimizeResult -> Bool # (/=) :: OptimizeResult -> OptimizeResult -> Bool # | |
| Ord OptimizeResult # | |
Defined in Math.ExpPairs Methods compare :: OptimizeResult -> OptimizeResult -> Ordering # (<) :: OptimizeResult -> OptimizeResult -> Bool # (<=) :: OptimizeResult -> OptimizeResult -> Bool # (>) :: OptimizeResult -> OptimizeResult -> Bool # (>=) :: OptimizeResult -> OptimizeResult -> Bool # max :: OptimizeResult -> OptimizeResult -> OptimizeResult # min :: OptimizeResult -> OptimizeResult -> OptimizeResult # | |
| Show OptimizeResult # | |
Defined in Math.ExpPairs Methods showsPrec :: Int -> OptimizeResult -> ShowS # show :: OptimizeResult -> String # showList :: [OptimizeResult] -> ShowS # | |
| Pretty OptimizeResult # | |
Defined in Math.ExpPairs | |
optimalValue :: OptimizeResult -> RationalInf #
The minimal value of objective function.
optimalPair :: OptimizeResult -> InitPair #
The initial exponent pair, on which minimal value was achieved.
optimalPath :: OptimizeResult -> Path #
The sequence of processes, after which minimal value was achieved.
simulateOptimize :: Rational -> OptimizeResult #
Wrap Rational into OptimizeResult.
simulateOptimize' :: RationalInf -> OptimizeResult #
Wrap RationalInf into OptimizeResult.
data LinearForm t #
Define an affine linear form of three variables: a*k + b*l + c*m.
First argument of LinearForm stands for a, second for b
and third for c. Linear forms form a monoid by addition.
Instances
data RationalForm t #
Define a rational form of two variables, equal to the ratio of two LinearForm.
Constructors
| (LinearForm t) :/: (LinearForm t) infix 5 |
Instances
Constants to specify the strictness of Constraint.
Instances
| Bounded IneqType # | |
| Enum IneqType # | |
Defined in Math.ExpPairs.LinearForm | |
| Eq IneqType # | |
| Ord IneqType # | |
Defined in Math.ExpPairs.LinearForm | |
| Show IneqType # | |
| Generic IneqType # | |
| Pretty IneqType # | |
Defined in Math.ExpPairs.LinearForm | |
| type Rep IneqType # | |
data Constraint t #
A linear constraint of two variables.
Instances
Holds a list of Process and a matrix of projective
transformation, which they define.
Instances
| Eq Path # | |
| Ord Path # | |
| Read Path # | |
| Show Path # | |
| Generic Path # | |
| Semigroup Path # | |
| Monoid Path # | |
| Pretty Path # | |
Defined in Math.ExpPairs.Process | |
| type Rep Path # | |
Defined in Math.ExpPairs.Process type Rep Path = D1 (MetaData "Path" "Math.ExpPairs.Process" "exp-pairs-0.1.6.0-A57bvNSkfW36XePlDuMIT4" False) (C1 (MetaCons "Path" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 ProcessMatrix) :*: S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness SourceStrict DecidedStrict) (Rec0 [Process]))) | |
Extends a rational type with positive and negative infinities.
Instances
| Eq t => Eq (RatioInf t) # | |
| Integral t => Fractional (RatioInf t) # | |
| Integral t => Num (RatioInf t) # | |
Defined in Math.ExpPairs.RatioInf | |
| Integral t => Ord (RatioInf t) # | |
Defined in Math.ExpPairs.RatioInf | |
| Integral t => Real (RatioInf t) # | |
Defined in Math.ExpPairs.RatioInf Methods toRational :: RatioInf t -> Rational # | |
| Show t => Show (RatioInf t) # | |
| (Integral t, Pretty t) => Pretty (RatioInf t) # | |
Defined in Math.ExpPairs.RatioInf | |
type RationalInf = RatioInf Integer #
Arbitrary-precision rational numbers with positive and negative infinities.
pattern K :: forall a. (Eq a, Num a) => a -> LinearForm a #
For a given c returns linear form c * k
pattern L :: forall a. (Eq a, Num a) => a -> LinearForm a #
For a given c returns linear form c * l
pattern M :: forall a. (Eq a, Num a) => a -> LinearForm a #
For a given c returns linear form c * m
(>.) :: Num t => LinearForm t -> LinearForm t -> Constraint t infix 5 #
Build a constraint, which states that the value of the first linear form is greater than the value of the second one.
(>=.) :: Num t => LinearForm t -> LinearForm t -> Constraint t infix 5 #
Build a constraint, which states that the value of the first linear form is greater or equal to the value of the second one.
(<.) :: Num t => LinearForm t -> LinearForm t -> Constraint t infix 5 #
Build a constraint, which states that the value of the first linear form is less than the value of the second one.
(<=.) :: Num t => LinearForm t -> LinearForm t -> Constraint t infix 5 #
Build a constraint, which states that the value of the first linear form is less or equal to the value of the second one.
scaleLF :: (Num t, Eq t) => t -> LinearForm t -> LinearForm t #
Multiply a linear form by a given coefficient.