put_bb_nodefunc
Allows to set a user function that specifies which non-integer variable to select next to make integer in the B&B solve.
void put_bb_nodefunc(lprec *lp, lphandleint_intfunc newnode, void *bbnodehandle);
Return Value
put_bb_nodefunc has no return value.
Parameters
lp
Pointer to previously created lp model. See return value of
make_lp, copy_lp, read_lp,
read_LP, read_mps, read_freemps, read_MPS, read_freeMPS, read_XLI
newnode
The node selection routine.
typedef int (__WINAPI lphandleint_intfunc)(lprec *lp, void *bb_nodehandle, int vartype);
The routine must return the node (column number) to make integer.
vartype is at this moment always equal to BB_INT (1).
When 0 is returned then it indicates that all variables are integer.
When a negative value is returned, lp_solve will determine the next variable to
make integer as if the routine is not set.
Note the __WINAPI attribute. This is important under Windows. It ensures __stdcall calling
convention which is required.
bb_nodehandle
A parameter that will be provided to the node selection routine.
Remarks
Allows to set a user function that specifies which non-integer variable to select next to make integer in the B&B solve.
Via this routine the user can implement his own rule to select the next non-integer variable to make integer.
This overrules the setting of set_bb_rule.
Example
#include <stdio.h>
#include <stdlib.h>
#include "lp_lib.h"
int __WINAPI nodefunction(lprec *lp, void *bb_nodehandle, int vartype)
{
int node = -1;
/* determine node to make integer */
return(node);
}
int main(void)
{
lprec *lp;
/* Create a new LP model */
lp = make_lp(0, 1);
if(lp == NULL) {
fprintf(stderr, "Unable to create new LP model\n");
return(1);
}
put_bb_nodefunc(lp, nodefunction, NULL);
solve(lp);
delete_lp(lp);
return(0);
}
lp_solve API reference
See Also make_lp, copy_lp,
read_lp, read_LP, read_mps,
read_freemps, read_MPS, read_freeMPS, read_XLI, set_bb_rule
|