// e04mf Example Program Text // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; using System.IO; namespace NagDotNetExamples { public class E04MFE { static string datafile = "ExampleData/e04mfe.d"; // as a command line argument. It defaults to the named file specified below otherwise. // static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { DataReader sr = new DataReader(datafile); double obj = 0.0; int i, ifail, iter, j, n, nclin; Console.WriteLine("e04mf Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); nclin = int.Parse(sr.Next()); double[,] a = new double[nclin, n]; double[] ax = new double[nclin]; double[] bl = new double[n + nclin]; double[] bu = new double[n + nclin]; double[] clamda = new double[n + nclin]; double[] cvec = new double[n]; double[] x = new double[n]; int[] istate = new int[n + nclin]; // // Read cvec, a, bl, bu and x from data file // sr.Reset(); for (i = 1; i <= n; i++) { cvec[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } sr.Reset(); for (i = 1; i <= nclin; i++) { for (j = 1; j <= n; j++) { a[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } sr.Reset(); for (i = 1; i <= n + nclin; i++) { bl[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } sr.Reset(); for (i = 1; i <= n + nclin; i++) { bu[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } sr.Reset(); for (i = 1; i <= n; i++) { x[i - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } // // Initialise E04.e04mf and check for error exits // // E04.e04mfOptions options = new E04.e04mfOptions(); // // Solve the problem // options.Set("List"); options.Set("Print level = 10"); // E04.e04mf(n, nclin, a, bl, bu, cvec, istate, x, out iter, out obj, ax, clamda, options, out ifail); // Console.WriteLine(""); if (ifail == 6) { Console.WriteLine(" ** An input parameter is invalid"); } else if (ifail >= 0) { Console.WriteLine(" ** e04mf returned with ifail = {0, 3}", ifail); Console.WriteLine(""); Console.WriteLine(" Varbl Istate Value Lagr Mult"); Console.WriteLine(""); for (i = 1; i <= n; i++) { Console.WriteLine(" V {0,3} {1,3} {2,14:g6} {3,12:g4}", i, istate[i - 1], x[i - 1], clamda[i - 1]); } if (nclin > 0) { Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(" L Con Istate Value Lagr Mult"); Console.WriteLine(""); for (i = n + 1; i <= n + nclin; i++) { j = i - n; Console.WriteLine(" L {0,3} {1,3} {2,14:g6} {3,12:g4}", j, istate[i - 1], ax[j - 1], clamda[i - 1]); } } Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(" Final objective value = {0,15:g7}", obj); Console.WriteLine(""); Console.WriteLine(""); Console.WriteLine(" Exit from problem after {0,6} iterations.", iter); } else { Console.WriteLine(" ** e04mf returned with ifail = {0, 3}", ifail); } // } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine( "Exception Raised"); } } } }