When solving a linear program using Linear Programming MT I get a very detail report printed on the screen or into an output file. However I just need to get the vector of solutions and the value of objective function at that solution point (and possibly other values). How do I get them so I can work with them as vectors? I need to run a Monte Carlo and will not be able to extract them manually each time from the output print out.

Sorry if I am missing something and thanks for any tips in advance.

## 2 Answers

0

accepted

Many of the Linear Programming (LPMT), use the GAUSS `call`

keyword like this

`call lpmtprt(lpmt(lp0,c0),c0);`

The `call`

keyword throws away the output values. The output values from LPMT are passed back as members of an `lpOut`

structure. So to avoid printing the output report and to get the return values, you need to declare an `lpOut`

structure and assign the output to it. So replace the previous line with this

```
//Declare 'out' to be an lpOut struct
struct lpOut out;
//Solve and send output values into the 'out' struct
out = lpmt(lp0,c0);
```

Now you can reference the objective function value and the solution vector as `out.optimumValue`

and `out.Solution`

. Note that if you want the printed output, you can keep the `lpmtprt`

function where it is in the first call. Some notes from the manual on a few relevant output structure members is below.

```
/** out.Solution (N+M)x1 vector containing either (1) an optimal solution
** to the original problem, or (2) the x values which minimize
** the sum of the infeasiblities or (3), the last solution
** found before it was determined that the problem is
** unbounded or that the algorithm was unable to continue. The
** last M elements contain the values of the slack variables.
**
** out.optimumValue scalar, the value of the objective upon termination of
** LPMT. This may be the optimal value, the minimum sum
** of the infeasiblities, or the largest value found before it
** was determined that the problem was unbounded or that the
** algorithm was unable to continue.
**
**
** out.returncode scalar, return code:
**
** 0 An optimal solution was found
** 1 The problem is unbounded
** 2 The problem is infeasible
** 5 Maximum number of iterations exceeded.
** Cycling may be occurring.
** 13 Algorithm unable to find a suitable
** variable to enter the basis. Either set
** eps1 or eps2 lower, or change
** rule[1] to another value.
**
** If the return code is negative, then the program terminated
** in Phase I.
**/
```

0

Thanks! This works.

## Your Answer

## 2 Answers

Many of the Linear Programming (LPMT), use the GAUSS `call`

keyword like this

`call lpmtprt(lpmt(lp0,c0),c0);`

The `call`

keyword throws away the output values. The output values from LPMT are passed back as members of an `lpOut`

structure. So to avoid printing the output report and to get the return values, you need to declare an `lpOut`

structure and assign the output to it. So replace the previous line with this

```
//Declare 'out' to be an lpOut struct
struct lpOut out;
//Solve and send output values into the 'out' struct
out = lpmt(lp0,c0);
```

Now you can reference the objective function value and the solution vector as `out.optimumValue`

and `out.Solution`

. Note that if you want the printed output, you can keep the `lpmtprt`

function where it is in the first call. Some notes from the manual on a few relevant output structure members is below.

```
/** out.Solution (N+M)x1 vector containing either (1) an optimal solution
** to the original problem, or (2) the x values which minimize
** the sum of the infeasiblities or (3), the last solution
** found before it was determined that the problem is
** unbounded or that the algorithm was unable to continue. The
** last M elements contain the values of the slack variables.
**
** out.optimumValue scalar, the value of the objective upon termination of
** LPMT. This may be the optimal value, the minimum sum
** of the infeasiblities, or the largest value found before it
** was determined that the problem was unbounded or that the
** algorithm was unable to continue.
**
**
** out.returncode scalar, return code:
**
** 0 An optimal solution was found
** 1 The problem is unbounded
** 2 The problem is infeasible
** 5 Maximum number of iterations exceeded.
** Cycling may be occurring.
** 13 Algorithm unable to find a suitable
** variable to enter the basis. Either set
** eps1 or eps2 lower, or change
** rule[1] to another value.
**
** If the return code is negative, then the program terminated
** in Phase I.
**/
```

Thanks! This works.