Alternatively, to solve the MILP with the OPTMILP procedure, create a corresponding SAS data set that uses the mathematical programming system (MPS) format as follows:
data mpsdata; input field1 $ field2 $ field3 $ field4 field5 $ field6; datalines; NAME . mpsdata . . . ROWS . . . . . MAX f . . . . G m . . . . L s1 . . . . L s2 . . . . COLUMNS . . . . . . .MRK0000 'MARKER' . 'INTORG' . . x[1,1] f 1 m 1 . x[1,1] s1 5 . . . x[2,1] f 2 s1 7 . x[3,1] f 1 s1 4 . x[1,2] m 1 s2 1 . x[2,2] f 1 s2 2 . x[3,2] f 1 s2 1 . .MRK0001 'MARKER' . 'INTEND' . RHS . . . . . . .RHS. m 1 . . . .RHS. s1 11 . . . .RHS. s2 2 . . BOUNDS . . . . . UP .BOUNDS. x[1,1] 1 . . UP .BOUNDS. x[2,1] 1 . . UP .BOUNDS. x[3,1] 1 . . UP .BOUNDS. x[1,2] 1 . . UP .BOUNDS. x[2,2] 1 . . UP .BOUNDS. x[3,2] 1 . . ENDATA . . . . . ;
Next, use the following SAS data set to define the subproblem blocks:
data blocks; input _row_ $ _block_; datalines; s1 0 s2 1 ;
Now, you can use the following OPTMILP statements to solve this MILP:
proc optmilp data = mpsdata presolver = none; decomp logfreq = 1 blocks = blocks; run;