// e04nf Example Program Text // Mark 20 Release. NAG Copyright 2001. // C# version, NAG Copyright 2008 using System; using NagLibrary; using System.Globalization; namespace NagDotNetExamples { public class E04NFE { static string datafile = "ExampleData/e04nfe.d"; static void Main(String[] args) { if (args.Length == 1) { datafile = args[0]; } StartExample(); } public static void StartExample() { try { E04.E04NF_QPHESS e04nfuE04NF = new E04.E04NF_QPHESS(E04.e04nfu); DataReader sr = new DataReader(datafile); double obj = 0.0; int i = 0, lda = 1, iter = 0, j = 0, n = 0, nclin = 0, nmax = 10, ldh = 1, ncmax = 10; Console.WriteLine("e04nf Example Program Results"); // Skip heading in data file sr.Reset(); sr.Reset(); n = int.Parse(sr.Next()); nclin = int.Parse(sr.Next()); lda = Math.Max(nclin, 1); ldh = n; double[,] a = new double[lda, nmax]; double[] ax = new double[10]; double[] bl = new double[20]; double[] bu = new double[20]; double[] clamda = new double[20]; double[] cvec = new double[10]; double[,] h = new double[ldh, nmax]; double[] ruser = new double[1]; double[] rwsav = new double[475]; double[] work = new double[10000]; double[] x = new double[10]; int[] istate = new int[20]; int[] iwork = new int[1000]; int[] iwsav = new int[610]; bool[] lwsav = new bool[120]; string[] cwsav = new string[1]; int ifail = 0; if ((n <= nmax) && (nclin <= ncmax)) { // // Read CVEC, A, BL, BU, X and H 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); } sr.Reset(); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { h[i - 1, j - 1] = double.Parse(sr.Next(), CultureInfo.InvariantCulture); } } // // Initialise E04NF and check for error exits // E04.e04nfOptions options = new E04.e04nfOptions(); // // Solve the problem // // E04.e04nf(n, nclin, a, bl, bu, cvec, h, e04nfuE04NF, istate, x, out iter, out obj, ax, clamda, options, out ifail); // // A valid licence was found: continue. // Check for error exits // Console.WriteLine(""); if (ifail == 6) { Console.WriteLine(" An input parameter is invalid"); } else if ((ifail) >= (0)) { Console.WriteLine(" e04nf returned with ifail = {0,4}", 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(" ** e04nf returned with ifail = {0,5}", ifail); } } // } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine("Exception Raised"); } } } }