# Compare matrix coefficients of two problems.
#
# Given two problems with the same number of variables, read their
# coefficient matrices into Scipy to compare each row for
# discrepancies in the coefficients.
#
# (C) 1983-2025 Fair Isaac Corporation

import xpress as xp
import scipy.sparse

p1 = xp.problem()
p2 = xp.problem()

# Read problems from file. Works also with problems created with the
# modeling features of the Python interface.

p1.readProb('Data/prob1.lp')
p2.readProb('Data/prob2.lp')

# Obtain matrix representation of the coefficient matrix for both
# problems.

beg1, ind1, coef1 = p1.getRows(0, p1.attributes.rows - 1)
beg2, ind2, coef2 = p2.getRows(0, p2.attributes.rows - 1)

# Create a Compressed Sparse Row (CSR) format matrix using the data
# from getrows() plus the numerical indices.

A1 = scipy.sparse.csr_matrix((coef1, ind1, beg1))
A2 = scipy.sparse.csr_matrix((coef2, ind2, beg2))

# Convert the CSR matrix to a NumPy array of arrays, so that each row
# is a (non-compressed) array to be compared in the loop below.

M1 = A1.toarray()
M2 = A2.toarray()

for i in range(min(p1.attributes.rows, p2.attributes.rows)):
    print(M1[i] != M2[i])
