(!*********************************************************
Mosel Python Example Problems
=============================
file invert_matrix.mos
``````````````````````
Invert a Mosel matrix in Python using pandas and 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))
pyinitpandas
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)
! Optional: Delete old values from result matrix before calling function.
delcell(A_inverse)
writeln("Invert matrix with NumPy.")
pycall("invert_matrix", A_inverse, A)
writeln("Matrix A_inverse:")
show_matrix(A_inverse)
end-model
|