Ejemplo n.º 1
0
import sys

if len(sys.argv) < 2:
    sys.stderr.write('Data file name must be supplied\n')
    sys.exit(1)

fname = sys.argv[1]
#M = HarwellBoeingMatrix(fname, patternOnly=True, readRhs=False)
M = RutherfordBoeingData(fname, patternOnly=True, readRhs=False)

if M.nrow != M.ncol or not M.issym:
    sys.stderr.write('Input matrix must be square and symmetric\n')
    sys.exit(1)

# Compute reverse Cuthill-McKee ordering
perm, rinfo = rcmk(M.nrow, M.ind, M.ip)

# Or: Compute Sloan's ordering
#perm, rinfo = sloan(M.nrow, M.ind, M.ip)

# Plot original matrix
(_, irow, jcol) = M.find()
left = pylab.subplot(121)
FastSpy(M.nrow,
        M.ncol,
        irow,
        jcol,
        sym=M.issym,
        ax=left.get_axes(),
        title='Original')
Ejemplo n.º 2
0
import sys

if len(sys.argv) < 2:
    sys.stderr.write('Data file name must be supplied\n')
    sys.exit(1)

fname = sys.argv[1]
#M = HarwellBoeingMatrix(fname, patternOnly=True, readRhs=False)
M = RutherfordBoeingData(fname, patternOnly=True, readRhs=False)

if M.nrow != M.ncol or not M.issym:
    sys.stderr.write('Input matrix must be square and symmetric\n')
    sys.exit(1)

# Compute reverse Cuthill-McKee ordering
perm, rinfo = rcmk(M.nrow, M.ind, M.ip)

# Or: Compute Sloan's ordering
#perm, rinfo = sloan(M.nrow, M.ind, M.ip)


# Plot original matrix
(_, irow, jcol) = M.find()
left = pylab.subplot(121)
FastSpy(M.nrow, M.ncol, irow, jcol, sym=M.issym,
        ax=left.get_axes(), title='Original')

# Apply permutation and plot reordered matrix
right = pylab.subplot(122)
FastSpy(M.nrow, M.ncol, perm[irow], perm[jcol], sym=M.issym,
        ax=right.get_axes(), title='Reordered')
Ejemplo n.º 3
0
    raise RuntimeError, msg

from pyorder.tools import coord2csc
from pyorder.pymc60 import sloan, rcmk
from pyorder.tools.spy import FastSpy
import numpy as np
import matplotlib.pyplot as plt

nlp = AmplModel('truss18bars.nl')
x = np.random.random(nlp.n)
y = np.random.random(nlp.m)
H = nlp.hess(x,y)
(val,irow,jcol) = H.find()
(rowind, colptr, values) = coord2csc(nlp.n, irow, jcol, val)  # Convert to CSC

perm1, rinfo1 = rcmk(nlp.n, rowind, colptr)   # Reverse Cuthill-McKee
perm2, rinfo2 = sloan(nlp.n, rowind, colptr)  # Sloan's method

left = plt.subplot(131)
FastSpy(nlp.n, nlp.n, irow, jcol, sym=True,
        ax=left.get_axes(), title='Original')

# Apply permutation 1 and plot reordered matrix
middle = plt.subplot(132)
FastSpy(nlp.n, nlp.n, perm1[irow], perm1[jcol], sym=True,
        ax=middle.get_axes(), title='Rev. Cuthill-McKee (semibandwidth=%d)' % rinfo1[2])

# Apply permutation 2 and plot reordered matrix
right = plt.subplot(133)
FastSpy(nlp.n, nlp.n, perm2[irow], perm2[jcol], sym=True,
        ax=right.get_axes(), title='Sloan (semibandwidth=%d)' % rinfo2[2])