Example: Reading an MPS file

This example reads the data for a linear programming problem from an MPS file.
using System;
using System.IO;
using Imsl.Math;

public class MPSReaderEx1
{
	public static void  Main(String[] args)
	{
		FileStream aFile = File.OpenRead("testprob.mps");
		StreamReader sr = new StreamReader(aFile);
		MPSReader mps = new MPSReader();
		mps.Read(sr);

		Console.Out.WriteLine(mps.Name);
		Console.Out.WriteLine(mps.NameRHS);
		Console.Out.WriteLine(mps.NameBounds);
		Console.Out.WriteLine(mps.NameRanges);

		int nRows = mps.NumberOfRows;
		System.Console.Out.WriteLine("NumberOfConstraints " + nRows);
		for (int i = 0; i < nRows; i++)
		{
			System.Console.Out.WriteLine("   " + mps.GetLowerRange(i) + 
                                " <= row[" + i + "] = " + mps.GetNameRow(i) + 
                                " <= " + mps.GetUpperRange(i));
		}
		
		int nColumns = mps.NumberOfColumns;
		System.Console.Out.WriteLine("NumberOfColumns " + nColumns);
		for (int i = 0; i < nColumns; i++)
		{
			System.Console.Out.WriteLine("   " + mps.GetLowerBound(i) + 
                                " <= var[" + i + "] = " + mps.GetNameColumn(i) + 
                                " <= " + mps.GetUpperBound(i));
		}
		
		System.Console.Out.WriteLine("NumberOfNonZeros " + mps.NumberOfNonZeros);
		for (int iRow = 0; iRow < nRows; iRow++)
		{
			System.Console.Out.WriteLine("       row " + mps.GetNameRow(iRow));
			System.Collections.IEnumerator iter = mps.GetRow(iRow).Iterator();
			while (iter.MoveNext())
			{
				MPSReader.Element elem = (MPSReader.Element) iter.Current;
				int iColumn = elem.Column;
				System.String nameColumn = mps.GetNameColumn(iColumn);
				System.Console.Out.WriteLine("          " +
               nameColumn + ": " + elem.Value);
			}
		}
	}
}

Output

TESTPROB
RHS1
BND1

NumberOfConstraints 3
   -Infinity <= row[0] = LIM1 <= 5
   10 <= row[1] = LIM2 <= Infinity
   7 <= row[2] = MYEQN <= 7
NumberOfColumns 3
   0 <= var[0] = XONE <= 4
   -1 <= var[1] = YTWO <= 1
   0 <= var[2] = ZTHREE <= Infinity
NumberOfNonZeros 6
       row LIM1
          XONE: 1
          YTWO: 1
       row LIM2
          XONE: 1
          ZTHREE: 1
       row MYEQN
          YTWO: -1
          ZTHREE: 1

Link to C# source.