FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browser

Working with models, data and dynamic libraries in Mosel

Description
ExSet.vb: Using sets in Mosel (requires burglari.mos)
  • retrieve a set by its model name
  • get the set size
  • get first and last set element
  • get the name or index of a set element
ExAs.vb: Using arrays with index sets (requires trans.mos)
  • get indexing sets of an array
  • get array type
  • enumerate array entries in usual and transposed order
  • enumerate true array entries
ExProb.vb: Accessing problems and solution information with Mosel (requires blend2.mos)
  • export problem to a file (MPS or LP format)
  • get problem status
  • get objective function value
  • get primal/dual solution values, and constraint activity
ExLib.vb: Working with models and accessing dynamic libraries in Mosel
  • load and unload BIM models
  • run a model in Mosel
  • display information about loaded models
  • display information about additional libraries required by the loaded models
DispMod.vb: Display the contents of a model; the information is read from a bim file
  • display run-time parameters, requirements, symbols, package/module dependencies, annotations
DispDso.vb: Display the contents of a module
  • display constants, types, control paramters, subroutines, I/O drivers
ExDrvs*.cb.: Use I/O drivers to handle Mosel output with a callback function, compile a model from memory to memory, load a bim file from memory, initialise arrays in the Model program from .NET objects and retrieve information from the model through memory.
  • ExDrvsCallback.vb: using 'dotnet:' I/O driver for data exchange via callbacks
  • ExDrvsRaw.vb: using 'dotnetraw:' I/O driver for data exchange in memory
  • ExDrvsStream.vb: using 'dotnetstream:' I/O driver working with streams for data exchange in memory
These .vb files can be run from the VB.NET project Mosel-VB.NET.vbproj (required auxiliary files: frmMain.vb, frmMain.resx, OptimizerLog.vb).

mmexdatavb.zip[download all files]

Source Files

Data Files





OptimizerLog.vb

Imports System.IO
Imports System.Windows.Forms.TextBox

' Simple class that logs output in a TextBox field on a form

Public Class OptimizerLog
    Inherits System.IO.StringWriter

    Private Field As System.Windows.Forms.TextBox

    Sub New(ByRef tb As System.Windows.Forms.TextBox)
        MyBase.New()
        Field = tb
        Field.Text = ""
        System.Windows.Forms.Application.DoEvents()
    End Sub

    Public Overloads Overrides Sub Flush()
        MyBase.Flush()
        Field.Text = Me.ToString

        ' We want to automatically scroll the textbox to show the last line.
        ' No easy way to scroll the textbox or set the caret position - so we have to
        ' select the last character, which will set the caret position, then scroll to
        ' that.
        Field.SelectionStart = Field.Text.Length
        Field.SelectionLength = 0
        Field.ScrollToCaret()

        System.Windows.Forms.Application.DoEvents()
    End Sub


    Public Overloads Overrides Sub WriteLine(ByVal val As String)
        If (Field.Text.Length = Me.ToString.Length) Then
            MyBase.WriteLine(val)
            Field.AppendText(val)
        Else
            MyBase.WriteLine(val)
            Field.Text = Me.ToString
        End If

        ' We want to automatically scroll the textbox to show the last line.
        ' No easy way to scroll the textbox or set the caret position - so we have to
        ' select the last character, which will set the caret position, then scroll to
        ' that.
        Field.SelectionStart = Field.Text.Length
        Field.SelectionLength = 0
        Field.ScrollToCaret()

        System.Windows.Forms.Application.DoEvents()
    End Sub


    Public Overloads Overrides Sub WriteLine(ByVal fmt As String, ByVal ParamArray arg() As Object)
        Me.WriteLine(String.Format(fmt, arg))
    End Sub

End Class

Back to examples browser