Overview | Group | Tree | Graph | Index | Concepts |
An instance of IloNumToNumSegmentFunction
represents a
piecewise linear function that is defined everywhere on an interval
[xMin, xMax). Each interval [x1, x2) on which the function
is linear is called a segment.
Note that if n is the number of segments of the function, the
random access to a given segment (see the member functions IloNumToNumSegmentFunction::addValue
, IloNumToNumSegmentFunction::getArea
,
IloNumToNumSegmentFunction::getValue
, IloNumToNumSegmentFunction::setValue
) has a worst-case complexity in O(log(n)).
Furthermore, when two consecutive segments of the function are co-linear, these segments are merged so that the function is always represented with the minimal number of segments.
See Also:
IloNumToNumSegmentFunctionCursor
Constructor Summary | |
---|---|
public | IloNumToNumSegmentFunction(const IloEnv, IloNum, IloNum, IloNum, const char *) |
public | IloNumToNumSegmentFunction(const IloEnv, const IloNumArray, const IloNumArray, IloNum, IloNum, const char *) |
public | IloNumToNumSegmentFunction(const IloNumToNumStepFunction &) |
Method Summary | |
---|---|
public void | addValue(IloNum, IloNum, IloNum) |
public void | dilate(IloNum) |
public IloNum | getArea(IloNum, IloNum) |
public IloNum | getDefinitionIntervalMax() |
public IloNum | getDefinitionIntervalMin() |
public IloNum | getMax(IloNum, IloNum) |
public IloNum | getMin(IloNum, IloNum) |
public IloNum | getValue(IloNum) |
public void | operator *=(IloNum) |
public void | operator+=(const IloNumToNumSegmentFunction) |
public void | operator-=(const IloNumToNumSegmentFunction) |
public void | setMax(const IloNumToNumSegmentFunction) |
public void | setMax(IloNum, IloNum, IloNum, IloNum) |
public void | setMax(IloNum, IloNum, IloNum) |
public void | setMin(const IloNumToNumSegmentFunction) |
public void | setMin(IloNum, IloNum, IloNum, IloNum) |
public void | setMin(IloNum, IloNum, IloNum) |
public void | setPeriodic(const IloNumToNumSegmentFunction, IloNum, IloNum, IloNum) |
public void | setPeriodicValue(IloNum, IloNum, const IloNumToNumSegmentFunction, IloNum) |
public void | setPoints(const IloNumArray, const IloNumArray) |
public void | setSlope(IloNum, IloNum, IloNum, IloNum) |
public void | setValue(IloNum, IloNum, IloNum) |
public void | shift(IloNum, IloNum) |
Constructor Detail |
---|
This constructor creates a piecewise linear function that is constant. It
is defined everywhere on the interval [xmin,xmax)
with the
same value dval
.
This constructor creates a piecewise linear function defined everywhere
on the interval [xmin, xmax)
whose segments are defined by the
two argument arrays x
and v
. More precisely, the
size n
of array x
must be equal to the size of
array v
and, if the created function is defined on the interval
[xmin,xmax)
, its values will be:
v[0]
on interval [xmin, x[0])
,v[i] + (t-x[i])*(v[i+1]-v[i])/(x[i+1]-x[i])
for
t
in [x[i], x[i+1])
for all i
in
[0, n-2]
such that x[i-1] <> x[i]
, andv[n-1]
on interval [x[n-1],xmax)
.This copy constructor creates a new piecewise linear function. The new
piecewise linear function is a copy of the step function
numFunction
. They point to different implementation
objects.
Method Detail |
---|
This member function adds v
to the value of the invoking
piecewise linear function everywhere on the interval [x1,x2)
.
This member function multiplies by k
the scale of
x
for the invoking piecewise linear function. k
must be a non-negative numerical value. More precisely, if the invoking
function was defined over an interval [xMin,xMax)
, it will be
redefined over the interval [k*xMin,k*xMax)
and the value at
x
will be the former value at x/k
.
This member function returns the area of the invoking piecewise linear
function on the interval [x1,x2)
. An instance of
IloException
is thrown if the interval [x1,x2)
is
not included in the definition interval of the invoking function.
This member function returns the right-most point of the definition interval of the invoking piecewise linear function.
This member function returns the left-most point of the definition interval of the invoking piecewise linear function.
This member function returns the maximal value of the invoking piecewise
linear function on the interval [x1,x2)
. An instance of
IloException
is thrown if the interval [x1,x2)
is
not included in the definition interval of the invoking function.
This member function returns the minimal value of the invoking piecewise
linear function on the interval [x1,x2)
. An instance of
IloException
is thrown if the interval [x1,x2)
is
not included in the definition interval of the invoking function.
This member function returns the value of the function at point
x
.
This operator multiplies by a factor k
the value of the
invoking piecewise linear function everywhere on the definition
interval.
This operator adds the argument function fct
to the invoking
piecewise linear function.
This operator subtracts the argument function fct
from the
invoking piecewise linear function.
This member function sets the value of the invoking piecewise linear
function to be the maximum between the current value and the value of
fct
everywhere on the definition interval of the invoking
function. The interval of definition of fct
must be the same as
that of the invoking piecewise linear function.
This member function sets the value of the invoking piecewise linear function to be the maximum between the current value and the value of the linear function:
x --> v1 + (x-x1)*(v2-v1)/(x2-x1)
everywhere on the
interval [x1, x2)
.
This member function sets the value of the invoking piecewise linear
function to be the maximum between the current value and v
everywhere on the interval [x1,x2)
.
This member function sets the value of the invoking piecewise linear
function to be the minimum between the current value and the value of
fct
everywhere on the definition interval of the invoking
function. The definition interval of fct
must be the same as
the one of the invoking piecewise linear function.
This member function sets the value of the invoking piecewise linear function to be the minimum between the current value and the value of the linear function:
x --> v1 + (x-x1)*(v2-v1)/(x2-x1)
everywhere on the
interval [x1,x2)
.
This member function sets the value of the invoking piecewise linear
function to be the minimum between the current value and v
everywhere on the interval [x1,x2)
.
This member function initializes the invoking function as a piecewise
linear function that repeats the piecewise linear function f
,
n
times after x0
. More precisely, if
f
is defined on [xfpMin,xfpMax)
and if the
invoking function is defined on [xMin,xMax)
, the value of the
invoking function will be:
dval
on [xMin, x0)
, f((x-x0) % (xfpMax-xfpMin))
for x
in
[x0, Min(x0+n*(xfpMax-xfpMin), xMax))
, and dval
on [Min(x0+n*(xfpMax-xfpMin), xMax), xMax)
This member function changes the value of the invoking function
on the interval [x1,x2)
. On this interval, the
invoking function is set to equal a repetition of the pattern
function f
with an initial offset of
offset
. The invoking function is not modified outside
the interval [x1,x2)
. More precisely, if
[min,max)
denotes the definition interval of
f
, for all t
in [x1,x2)
, the
invoking function at t
is set to equal
f(min + (offset+t-x1)%(max-min)))
where %
denotes the modulo operator. By default, the offset is equal to 0.
This member function initializes the invoking function as a piecewise
linear function whose segments are defined by the two parameters arrays
x
and v
.
More precisely, the size n
of array x
must be
equal to the size of array v
, and if the created function is
defined on the interval [xmin,xmax)
, its values will be:
v[0]
on interval [xmin, x[0])
,v[i] + (t-x[i])*(v[i+1]-v[i])/(x[i+1]-x[i])
for
t
in [x[i], x[i+1])
for all i
in
[0, n-2]
such that x[i-1] ≠ x[i]
, andv[n-1]
on interval [x[n-1],xmax)
.This member function sets the value of the invoking piecewise linear
function equal to f
, associating for each x
in
[x1,x2) -> f(x) = v + slope * (x-x1)
.
This member function sets the value of the invoking piecewise linear
function to be constant and equal to v
on the interval
[x1,x2)
.
This member function shifts the invoking function from dx
to
the right if dx > 0
or -dx
to the left if
dx < 0
. It has no effect if dx = 0
. More
precisely, if the invoking function is defined on [xMin,xMax)
and dx > 0
, the new value of the invoking function is:
dval
on the interval [xMin,xMin+dx)
, x
in [xMin+dx,xMax)
, the former value
at x-dx
. If dx < 0
, the new value of the invoking function is:
x
in [xMin,xMax+dx)
, the former value
at x-dx
, dval
on the interval [xMax+dx,xMax)
.