FICO
FICO Xpress Optimization Examples Repository
FICO Optimization Community FICO Xpress Optimization Home
Back to examples browserPrevious example

Basic embedding tasks

Description
  • ugvb.xls: Compiling a model into a BIM file, then load and run it. Passing parameters to a Mosel program (requires burglar5.mos, burglar.dat, prime4.mos, ugvb.bas)
  • ugcb.xls: Redirecting Mosel output and error streams to a callback (requires burglar10.mos, burglar.dat, ugcb.bas)


Source Files
By clicking on a file name, a preview is opened at the bottom of this page.
burglar5.mos[download]
burglar10.mos[download]
prime4.mos[download]

Data Files





ugvb.bas

Attribute VB_Name = "ModuleUGVB"
'*******************************************************
' Mosel Visual Basic Interface
' Example program
' (c) 2016 Fair Isaac Corporation
'*******************************************************

Option Explicit
Option Base 1


Private Sub burglar_Click()
'*******************************************************
'  Mosel User Guide Example Problems
'  =================================
'  Compiling a model into a BIM file,
'  then load and run it.
'
'  (c) 2008 Fair Isaac Corporation
'      author: S.Heipcke, 2002
'*******************************************************
  Dim model
  Dim ret As Long
  Dim result As Long
  Dim outfile As String, moselfile As String
  
  ret = XPRMinit
  If ret Then
    MsgBox "Mosel initialization error (" & ret & ")"
    Exit Sub
  End If
    
  XPRMsetdefworkdir GetFullPath()
  moselfile = GetFullPath() & "\" & "burglar5"
  outfile = GetFullPath() & "\" & "vbout.txt"
'Compile burglar5.mos
  ret = XPRMcompmod(vbNullString, moselfile & ".mos", vbNullString, "Burglar problem")

  If ret <> 0 Then
    MsgBox "Compile error (" & ret & ")"
    GoTo done
  End If
  
'Load burglar5.bim
  model = XPRMloadmod(moselfile & ".bim", vbNullString)

  If model = 0 Then
    MsgBox "Error loading model"
    GoTo done
  End If
  
'Run the model
  ret = XPRMrunmod(model, result, "OUTFILE=""" & Replace(outfile, "\", "\\") & """")

  If ret <> 0 Then
    MsgBox "Execution error (" & ret & ")"
    GoTo done
  Else
    ShowFile outfile
  End If
  MsgBox vbNewLine & "model Burglar returned: " & result
  
done:
  XPRMfree
End Sub


Private Sub prime_Click()
'*******************************************************
'  Mosel User Guide Example Problems
'  =================================
'  Passing parameters to a Mosel program.
'
'  (c) 2008 Fair Isaac Corporation
'      author: S.Heipcke, 2002
'*******************************************************
  Dim model
  Dim ret As Long
  Dim result As Long
  Dim outfile As String, moselfile As String
    
  ret = XPRMinit
  If ret Then
    MsgBox "Mosel initialization error (" & ret & ")"
    Exit Sub
  End If
    
  XPRMsetdefworkdir GetFullPath()
  moselfile = GetFullPath() & "\" & "prime4"
  outfile = GetFullPath() & "\" & "vbout.txt"
'Compile prime4.mos
  ret = XPRMcompmod(vbNullString, moselfile & ".mos", vbNullString, "Prime numbers")

  If ret <> 0 Then
    MsgBox "Compile error (" & ret & ")"
    GoTo done
  End If
  
'Load prime4.bim
  model = XPRMloadmod(moselfile & ".bim", vbNullString)

  If model = 0 Then
    MsgBox "Error loading model"
    GoTo done
  End If
  
'Run with new parameter settings
  ret = XPRMrunmod(model, result, "LIMIT=500,OUTFILE=""" & Replace(outfile, "\", "\\") & """")

  If ret <> 0 Then
    MsgBox "Execution error (" & ret & ")"
    GoTo done
  Else
    ShowFile outfile
  End If
  MsgBox vbNewLine & "model Prime returned: " & result
  
done:
  XPRMfree
End Sub


Private Sub ShowFile(fn As String)
  Dim vs As String
  vs = CreateObject("Scripting.FileSystemObject").OpenTextFile(fn).ReadAll
  MsgBox vs
End Sub

Private Function GetFullPath() As String
  Dim path As String
  path = ThisWorkbook.path
  If Right(path, 1) = "\" Then path = Left(path, Len(path) - 1)
  GetFullPath = path
End Function


Back to examples browserPrevious example