# lag_solve

Solve the model via Lagrangian relaxation.

int lag_solve(lprec *lp, REAL start_bound, int num_iter, short verbose);

Return Value

 TIMEOUT (-2) A timeout occurred. A timeout was set via set_timeout USERABORT (-3) The abort routine returned TRUE. See put_abortfunc OPTIMAL (0) An optimal solution was obtained INFEASIBLE (2) The model is infeasible FEAS_FOUND (6) An feasible solution was obtained, but num_iter was reached NO_FEAS_FOUND (7) No feasible solution found

Parameters

lp

Pointer to previously created lp model. See return value of make_lp, read_lp, read_LP, read_mps, read_freemps, read_MPS, read_freeMPS, read_XLI

start_bound

Initial bound.

num_iter

Maximum number of iterations.

verbose

Not used. Still included for backwards compatibility. Use set_lag_trace to set the verbose level.

Remarks

The lag_solve function solves the model via Lagrangian relaxation. Gives the ability to find an integer solution without the branch-and-bound algorithm.
At least 1 Lagrangian constraint must be added via add_lag_con, str_add_lag_con before lag_solve can be used.

Example

``````#include <stdio.h>
#include <stdlib.h>
#include "lp_lib.h"

int main(void)
{
lprec *lp;
int ret;
REAL row[1+2]; /* must be 1 more then number of columns ! */

/* Create a new LP model */
lp = make_lp(0, 0);
if(lp == NULL) {
fprintf(stderr, "Unable to create new LP model\n");
return(1);
}

row[1] = 1.0;
row[2] = 1.0;
add_lag_con(lp, row, LE, 1.0);

ret = lag_solve(lp, 0, 30, FALSE);

delete_lp(lp);

return(0);
}
``````