xpress.pwl
 xpress.pwl | 
   
  Purpose
 
 Returns a piecewise linear function over a variable.
  Synopsis
 
  xpress.pwl(dict) 
 
  Argument
 
 | 
     
     dict 
       | 
   
     
     Python dictionary containing, as keys, two-elements tuples, and, as values, linear expressions in a variable. If the piecewise linear function has only constant values (i.e. it is a piecewise constant function), the independent variable can be specified with the key-value pair
     None: x.
       | 
  
  Example
 
 
 The following example shows various usages of
 xpress.pwl to model nonlinear functions as piecewise-linear functions :
 
 
x = xp.var()  # Nonnegative variable
y = xp.var(lb=-xp.infinity)  # dependent variable, unrestricted
t = xp.var()
w = xp.var()
p = xp.problem(x, y)
# Sets a piecewise linear objective: a ramp function
p.setObjective (xp.pwl({(-xp.infinity, -1):  -2,
                        (-1, 1):            2*x,
                        (1, xp.infinity)]:    2}))
p.addConstraint (t == xp.pwl({(1,2): 4*x, (2,4): 2, (4,5): -1}))
# Piecewise CONSTANT function: add a key-value pair None: x to specify
# independent variable
p.addConstraint (t == xp.pwl({(1,2): 4, (2,4): 2, (4,5): -1, None: x}))
p.addConstraint (xp.pwl({(-1,0): x, (0,1): 2*x, (1,10): 2}) <=
                 xp.pwl({(0,10): 2*z, (10,20): z+2, (20,xp.infinity): 4}))
  Further information
 
 
 1. A piecewise linear function must use only one variable in all of the dictionary's values;
 
 
 2. All values in the dictionary must be either constants or linear functions;
 
 
 3. The intervals, specified as two-element tuples in the dictionary's keys, must be pairwise disjoint, i.e., they must not overlap.
 
 
 4. Discontinuities in the function are allowed, i.e., one can declare a function as follows:
 xp.pwl({(1, 2): 2*x + 4, (2,3): x - 1}), which is obviously discontinuous at 2. The value of the function if the optimal solution has
 x=2 will be then either 8 or 1.
 
 
  Related topics
 
 
