(!******************************************************
   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
