Initializing help system before first use

XPRSaddcols, XPRSaddcols64

Purpose
Adds columns to the optimizer matrix.
Topic area
Synopsis
int XPRS_CC XPRSaddcols(XPRSprob prob, int ncols, int ncoefs, const double objcoef[], const int start[], const int rowind[], const double rowcoef[], const double lb[], const double ub[]);

int XPRS_CC XPRSaddcols64(XPRSprob prob, int ncols, XPRSint64 ncoefs, const double objcoef[], const XPRSint64 start[], const int rowind[], const double rowcoef[], const double lb[], const double ub[]);
Arguments
prob 
The current problem.
ncols 
Number of new columns.
ncoefs 
Number of new nonzeros in the added columns.
objcoef 
Double array of length ncols containing the objective function coefficients of the new columns. As of version 43.00 this can be NULL to indicate that all newly created variables have an objective coefficient of 0 (zero).
start 
Integer array of length ncols containing the offsets in the rowind and rowcoef arrays of the start of the elements for each column. This can be NULL if the ncols or the ncoefs argument is 0 (zero).
rowind 
Integer array of length ncoefs containing the row indices for the elements in each column.
rowcoef 
Double array of length ncoefs containing the element values.
lb 
Double array of length ncols containing the lower bounds on the added columns. This can be NULL in which case all variables will have a lower bound of 0.
ub 
Double array of length ncols containing the upper bounds on the added columns. This can be NULL in which hcase all variables will have an infinite upper bound.
Related controls
Integer
Number of extra columns to be allowed for.
Number of extra matrix elements to be allowed for.
Number of extra MIP entities to be allowed for.

Double
Tolerance on matrix elements.

Example
In this example, we consider the two problems:

(a) maximize: 2x + y    (b) maximize: 2x + y + 3z
subject to: x + 4y 24    subject to: x + 4y + 2z 24
y 5    y + z 5
3x + y 20    3x + y 20
x + y 9    x + y + 3z 9
   z 12


Using XPRSaddcols, the following transforms (a) into (b) and then names the new variable using XPRSaddnames:
obj[0] = 3;
start[] = {0};
rowind[] = {0, 1, 3};
matval[] = {2.0, 1.0, 3.0};
lb[0] = XPRS_MINUSINFINITY; ub[0] = 12.0;
...
XPRSaddcols(prob,1,3,obj,start,rowind,matval,lb,ub);
XPRSaddnames(prob,XPRS_NAMES_COLUMN,"z",2,2);
Further information
1. The double constants XPRS_PLUSINFINITY and XPRS_MINUSINFINITY defined in the library header file can be used to represent plus and minus infinity respectively in the bound arrays.
2. If the columns are added to a MIP problem then they will be continuous variables. Use XPRSchgcoltype to impose integrality conditions on such new columns.
3. This function cannot be called while the current problem is being solved or when it is in an interrupted state. Use XPRSpostsolve to restore the problem to a non-solving state.
Related topics

© 2001-2025 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.