| soleg.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg.mos
   ``````````````
   Writing out solution values to
   a spreadsheet or database via ODBC.
   - Using 'initializations to' with the odbc driver -
  
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2006, rev. Oct. 2017
*******************************************************!)
model "Solution values output"
 uses "mmxprs", "mmodbc"
 parameters
!  CNCT = "soleg.xls"             ! Use Excel spreadsheet `soleg.xls'
  CNCT = "soleg.mdb"            ! Use Access database `soleg.mdb'
                                 ! Use SQLite database `soleg' via ODBC
!  CNCT = 'DSN=sqlite;DATABASE=soleg.sqlite'
!  CNCT = 'soleg.sqlite'         ! Use SQLite database `soleg' directly
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
! Data output using an initializations block with the odbc driver
 initializations to "mmodbc.odbc:debug;"+CNCT
  SOL as "MyOut1"
 end-initializations
(! Alternative form:
 initializations to "mmodbc.odbc:debug;"+CNCT
  evaluation of array(i in R, j in S) x(i,j).sol as "MyOut1"
 end-initializations
!)
end-model
 | 
| 
 | 
| soleg2.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg2.mos
   ```````````````
   Writing out solution values to
   a spreadsheet or database via ODBC.
   - Using SQL commands -
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2006, rev. Aug. 2023
*******************************************************!)
model "Solution values output (2)"
 uses "mmxprs", "mmodbc"
 options keepassert
 parameters
!  CNCT = "soleg.xls"            ! Use Excel spreadsheet `soleg.xls'
  CNCT = "soleg.mdb"             ! Use Access database `soleg.mdb'
                                 ! Use SQLite database `soleg' via ODBC
!  CNCT = 'DSN=sqlite;DATABASE=soleg.sqlite'
!  CNCT = 'soleg.sqlite'         ! Use SQLite database `soleg' directly
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
 setparam("SQLdebug", true)
! Data output using SQL statements 
 SQLconnect(CNCT)
 assert(getparam("SQLsuccess"))
 SQLexecute("insert into MyOut2 (First, Second, Solution) values (?,?,?)", SOL)
(! Alternative form:
 SQLexecute("insert into MyOut2 (First, Second, Solution) values (?,?,?)", array(i in R, j in S) x(i,j).sol)
!)
! Alternatively after the first model run (for databases only):
! SQLupdate("select First, Second, Solution from MyOut2", SOL)
! or:
! SQLexecute("update MyOut2 set Solution=?3 where First=?1 and Second=?2", SOL)
 assert(getparam("SQLsuccess"))
 SQLdisconnect
end-model
 | 
| 
 | 
| soleg3.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg3.mos
   ```````````````
   Writing out solution values to
   an Excel spreadsheet.
   - Using 'initializations to' with the excel driver -
  
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2007, rev. Oct. 2017
*******************************************************!)
model "Solution values output (3)"
 uses "mmxprs", "mmsheet"
 parameters
  CNCT = "soleg.xls"             ! Use Excel spreadsheet `soleg.xls'
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
! Data output using an initializations block with the excel driver
 initializations to "mmsheet.excel:"+CNCT
  SOL as "grow;MyOut3"
 end-initializations
(! Alternative form:
 initializations to "mmmsheet.excel"+CNCT
  evaluation of array(i in R, j in S) x(i,j).sol as "grow;MyOut3"
 end-initializations
!)
end-model
 | 
| 
 | 
| soleg4.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg4.mos
   ```````````````
   Writing out solution values to
   an Oracle database.
   - Using 'initializations to' and SQL statements -
   
   (c) 2008 Fair Isaac Corporation
       author: S. Heipcke, 2007, rev. Aug. 2023
*******************************************************!)
model "Solution values output (4)"
 uses "mmxprs", "mmoci"
 options keepassert
 parameters
  DB="myname/mypassword@dbname"     ! Login to Oracle database (not provided)
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
! **** Using 'initializations to' ****
 initializations to "mmoci.oci:debug;"+DB
  SOL as "MyOut1"
 end-initializations
! **** Using SQL statements ****
 OCIlogon(DB)
 assert(getparam("OCIsuccess"))
 setparam("OCIdebug",true)
 OCIexecute("delete from MyOut2")
 OCIexecute("insert into MyOut2 (First, Second, Solution) values (:1,:2,:3)", SOL)
(! Alternative form:
 OCIexecute("insert into MyOut2 (First, Second, Solution) values (:1,:2,:3)", array(i in R, j in S) x(i,j).sol)
!)
! Alternatively after the first model run:
! OCIexecute("update MyOut2 set Solution=:3 where First=:1 and Second=:2", SOL)
 assert(getparam("OCIsuccess"))
 OCIlogoff
end-model
**************************************************
! Creation of output tables in an Oracle database:
 declarations
  tsucc: array ({false,true}) of string
 end-declarations
 tsucc(false):="failed"; tsucc(true):="succeeded"
 OCIexecute("create table MyOut1 (First integer, Second integer, Solution float)")
 writeln(" - Create MyOut1 (",tsucc(getparam("OCIsuccess")),")")
 OCIexecute("create table MyOut2 (First integer, Second integer, Solution float)")
 writeln(" - Create MyOut2 (",tsucc(getparam("OCIsuccess")),")")
 | 
| 
 | 
| soleg5.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg5.mos
   ```````````````
   Writing out solution values to a spreadsheet.
   - Using 'initializations to' with the xls driver -
  
   (c) 2012 Fair Isaac Corporation
       author: S. Heipcke, Dec. 2012, rev. Oct. 2017
*******************************************************!)
model "Solution values output(generic spreadsheet)"
 uses "mmxprs", "mmsheet"
 parameters
  CNCT= 'mmsheet.xls:soleg.xls'
!  CNCT= 'mmsheet.xlsx:soleg.xlsx'
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
! Data output using an initializations block with the excel driver
 initializations to CNCT
  SOL as "grow;MyOut3"
 end-initializations
(! Alternative form:
 initializations to CNCT
  evaluation of array(i in R, j in S) x(i,j).sol as "grow;MyOut3"
 end-initializations
!)
end-model
 | 
| 
 | 
| soleg6.mos | 
| (!******************************************************
   Mosel Example Problems
   ====================== 
   file soleg6.mos
   ```````````````
   Writing out solution values to a spreadsheet.
   - Using 'initializations to' with the csv driver -
  
   (c) 2012 Fair Isaac Corporation
       author: S. Heipcke, Dec. 2012, rev. Oct. 2017
*******************************************************!)
model "Solution values output (CSV)"
 uses "mmxprs", "mmsheet"
 parameters
  CNCT= 'mmsheet.csv:soleg.csv'
 end-parameters
 
 declarations
  R = 1..3
  S = 1..2
  SOL: array(R,S) of real        ! Array for solution values
  x: array(R,S) of mpvar         ! Decision variables
 end-declarations
! Define and solve the problem
 forall(i in R) sum(j in S) x(i,j) <= 4
 forall(j in S) sum(i in R) x(i,j) <= 6
 maximise( sum(i in R, j in S) (i*j)*x(i,j) )
! Get solution values from LP into the array SOL
 forall(i in R, j in S) SOL(i,j) := getsol(x(i,j)) 
! Data output using an initializations block with the xls driver
 initializations to CNCT
  SOL as "grow;[A3:C3]"
 end-initializations
(! Alternative form:
 initializations to CNCT
  evaluation of array(i in R, j in S) x(i,j).sol as "grow;[A3:C3]"
 end-initializations
!)
end-model
 | 
| 
 |