Esempio n. 1
0
def get_matrix_cost(matrix: np.matrix) -> np.matrix:
    cost_matrix = matrix.copy()
    minimal_column = matrix.min(1)[:np.newaxis]
    minimal_column[minimal_column == np.inf] = 0
    # Subtract minimal value of a row from matrix
    cost_matrix -= minimal_column
    minimal_row = cost_matrix.min(0)
    minimal_row[minimal_row == np.inf] = 0
    # Subtract minimal value of a column from matrix
    cost_matrix -= minimal_row
    return cost_matrix
Esempio n. 2
0
 def __init__(self, vals: np.matrix):
     self.shift_factor = np.array(vals.min(1)).astype(float)
     self.scale_factor = np.array(vals.max(1) -
                                  self.shift_factor).astype(float)
     self.scale_factor = self.scale_factor + (self.scale_factor
                                              == 0).astype(float)
     self.shift_factor = self.shift_factor.reshape(
         self.shift_factor.shape[0], 1)
     self.scale_factor = self.scale_factor.reshape(
         self.scale_factor.shape[0], 1)
     self.scale_factor = 1.0
Esempio n. 3
0
def get_matrix_cost(matrix: np.matrix, debug=False) -> tuple:
    matrix_mod = matrix.copy()
    minimal_column = matrix.min(1)[:np.newaxis]
    minimal_column[minimal_column == np.inf] = 0
    cost = np.sum(minimal_column)
    # Subtract minimal value of a row from matrix
    matrix_mod -= minimal_column
    minimal_row = matrix_mod.min(0)
    minimal_row[minimal_row == np.inf] = 0
    cost += np.sum(minimal_row)
    # Subtract minimal value of a column from matrix
    matrix_mod -= minimal_row
    if debug:
        print(f"Minimal column: {minimal_column}")
        print(f"Minimal column cost: {np.sum(minimal_column)}")
        print(f"Minimal row: {minimal_row}")
        print(f"Minimal row cost: {np.sum(minimal_row)}")
    return cost, matrix_mod
    def ahp(item_no: np.matrix, m: np.matrix, w: np.matrix):
        """
        ABC analysis according to Analytical Hierarchy Process (AHP)

        Arguments:
            item_no {[type]} -- list of item numbers
            m {[type]} -- ranking criteria
        
        Returns:
            [type] -- a matrix of item ranked and classified according to AHP
        """
        fmin, fmax = m.min(0), m.max(0)
        norm = lambda i, v : (v-fmin[0,i])/(fmax[0,i]-fmin[0,i])
        ahp = [[item_no[k,0],sum(w[i]*norm(i, m[k,i]) for i in range(0,4))] for k in range(0,len(m))]
        ahp = sorted(ahp,key=lambda x: x[1], reverse=True)

        # annotate ABC
        ABC.annotate_ABC(ahp)

        return ahp
Esempio n. 5
0
def bounding_box(points: np.matrix):
    """Return a, b so that all points lay in bounding box spanned by a and b."""
    return points.min(axis=0), points.max(axis=0)