Initializing help system before first use

Creating simple problems

Below are a few examples on how to create simple LP, MIP, MIQP, and similar problems. Note that they make use of API functions that resemble the C API functions for creating problems, and are used similarly here.

Generating a small Linear Programming problem

In this example, we create a problem and load a matrix of coefficients, a rhs, and an objective coefficient vector with the loadproblem function. We also assign names to both rows and columns (both are optional). These data correspond to the following problem with three variables and four constraints:

minimize: 3 x1 + 4 x2 + 5 x3
subject to: x1 + x3 -2.4
2x1 + 3x3 -3
2x2 + 3x3 = 4
x2 + x3 5
-1 ≤ x1 ≤ 3
-1 ≤ x1 ≤ 5
-1 ≤ x1 ≤ 8

p = xp.problem()

p.loadproblem("",                 # probname
              ['G','G','E', 'L'], # qrtypes
              [-2.4, -3, 4, 5],   # rhs
               None,               # range
              [3,4,5],            # obj
              [0,2,4,8],          # mstart
               None,               # mnel
              [0,1,2,3,0,1,2,3],  # mrwind
              [1,2,2,1,1,3,3,1],  # dmatval
              [-1,-1,-1],         # lb
              [3,5,8],            # ub
               colnames = ['X1','X2','X3'],                   # column names
               rownames = ['row1','row2','row3','constr_04']) # row    names

p.write("loadlp", "lp")
p.solve()

We then create another variable and add it to the problem, then modify the objective function. Note that the objective function is replaced by, not amended with, the new expression. After solving the problem, it saves it into a file called update.lp.

x = xp.var()
p.addVariable(x)
p.setObjective(x**2 + 2*x + 444)
p.solve()
p.write("updated", "lp")

A Mixed Integer Linear Programming problem

This example uses loadproblem to create a Mixed Integer Quadratically Constrained Quadratic Programming problem with two Special Ordered Sets. Note that data that is not needed is simply set as None.

The Examples directory provides similar examples for different types of problems.

p = xp.problem()

p.loadproblem("",                 # probname
              ['G','G','L', 'L'], # qrtypes
              [-2.4, -3, 4, 5],   # rhs
               None,               # range
              [3,4,5],            # obj
              [0,2,4,8],          # mstart
               None,               # mnel
              [0,1,2,3,0,1,2,3],  # mrwind
              [1,1,1,1,1,1,1,1],  # dmatval
              [-1,-1,-1],         # lb
              [3,5,8],            # ub
              [0,0,0,1,1,2],      # mqobj1
              [0,1,2,1,2,2],      # mqobj1
              [2,1,1,2,1,2],      # dqe
              [2,3],              # qcrows
              [2,3],              # qcnquads
              [1,2,0,0,2],        # qcmqcol1
              [1,2,0,2,2],        # qcmqcol2
              [3,4,1,1,1],        # qcdqval
              ['I','S'],          # qgtype
              [0,1],              # mgcols
              [0,2],              # dlim
              ['1','1'],          # qstype
              [0,2,4],            # msstart
              [0,1,0,2],          # mscols
              [1.1,1.2,1.3,1.4])  # dref

p.solve()

© 2001-2019 Fair Isaac Corporation. All rights reserved. This documentation is the property of Fair Isaac Corporation (“FICO”). Receipt or possession of this documentation does not convey rights to disclose, reproduce, make derivative works, use, or allow others to use it except solely for internal evaluation purposes to determine whether to purchase a license to the software described in this documentation, or as otherwise set forth in a written software license agreement between you and FICO (or a FICO affiliate). Use of this documentation and the software described in it must conform strictly to the foregoing permitted uses, and no other use is permitted.