(!******************************************************
Mosel Python Example Problems
=============================
file invert_matrix.mos
``````````````````````
Invert a Mosel matrix in Python using NumPy.
(c) 2018 Fair Isaac Corporation
author: J.Müller
*******************************************************!)
model 'invert_matrix'
options noimplicit
uses 'python3'
uses 'mmjobs'
! Input data
declarations
I, J: range
A, A_inverse: array(I, J) of real
end-declarations
procedure show_matrix(B: array(I: range, J: range) of real)
forall (i in I) do
forall (j in J) do
write(B(i, j), ' ')
end-do
writeln
end-do
end-procedure
writeln('Run Python script that defines invert_matrix function.')
writeln('Python DSO version: ', getdsoprop('python3', PROP_VERSION))
pyrun('invert_matrix.py')
I := 0..2
J := 0..2
A :: [1,0,3,
0,1,2,
0,0,1]
writeln('Mosel matrix A:')
show_matrix(A)
writeln('Transfer A, I, and J to Python.')
initializations to PY_IO_GLOBAL_VAR
A
I
J
end-initializations
writeln('Invert matrix with NumPy.')
pyexec('A_inverse = invert_matrix(A, I, J)')
writeln('Get A_inverse from Python.')
initializations from PY_IO_GLOBAL_VAR
A_inverse
end-initializations
writeln('Matrix A_inverse:')
show_matrix(A_inverse)
end-model
|