'Returns the numeric value of the expression.
Returns:
A numpy matrix or a scalar.'

@property
def value(self):

    old_vals = {var.id: var.value for var in self.variables()}
    fix_vars = []
    for var in self.variables():
        if (var.value is None):
            return None
        else:
            fix_vars += [(var == var.value)]
    prob = Problem(self.args[0].objective.copy(self), fix_vars)
    result = prob.solve()
    for var in self.variables():
        var.value = old_vals[var.id]
    return result
