/********************************************************/
/* Mosel Library Examples */
/* ====================== */
/* */
/* file mmexas.cs */
/* `````````````` */
/* Example for the use of the Mosel libraries */
/* (using arrays with index sets: different ways */
/* of enumerating arrays) */
/* */
/* (c) 2008 Fair Isaac Corporation */
/* author: J.Farmer & S. Heipcke */
/********************************************************/
using System;
using System.IO;
using Mosel;
namespace mmexas {
public class mmexasClass {
///
/// Main entry point for the application
/// [STAThread] static void Main(string[] args) { XPRM mosel; XPRMModel mod; XPRMArray varr; XPRMSet[] sets; XPRMValue[] vindex; int dim; // Initialise Mosel mosel = XPRM.Init(); // Set Mosel work directory to folder containing our example source code mosel.WorkDir = Directory.GetParent(System.Reflection.Assembly.GetExecutingAssembly().Location).FullName; // Compile and load a model from a file mod = mosel.CompileAndLoad("Models/trans.mos"); // Run the model; mod.Run(); // Get the model object named 'x' // It must be an array varr = (XPRMArray) mod.FindIdentifier("x"); // Get the number of dimensions of the array dim = varr.Dim; // Get the indexing sets sets = varr.IndexSets; // We could use varr.ToString() to print out a summary of the // array contents, but instead we'll demonstrate how to iterate // over the array contents directly Console.WriteLine("\n1. Logic entries:"); // Get the first entry of varr foreach(int[] indices in varr.Indices) { Console.Write("x("); // Get the values for this index vindex = varr.DereferenceIndex(indices); // Now, output them. Note that we could call the utility method // varr.IndexToString(indices) instead of this and the previous // line for (int i=0;i