Example #1
0
def linear(flag):
    if flag == 1:
        expr = summation(model.p, model.x)
    elif flag == 6:
        expr = Sum(model.p[i] * model.x[i] for i in model.A)

    elif flag == 2:
        expr = sum(model.p[i] * model.x[i] for i in model.A)
    elif flag == 3:
        expr = 0
        for i in model.A:
            expr += model.p[i] * model.x[i]
    elif flag == 4:
        try:
            with timeout(10):
                expr = 0
                for i in model.A:
                    expr = expr + model.p[i] * model.x[i]
        except:
            expr = model.x[1]  # BOGUS
    elif flag == 5:
        try:
            with timeout(10):
                expr = 0
                for i in model.A:
                    expr = model.p[i] * model.x[i] + expr
        except:
            expr = model.x[1]  # BOGUS

    elif flag == 12:
        with EXPR.linear_expression as expr:
            expr = sum((model.p[i] * model.x[i] for i in model.A), expr)
    elif flag == 13:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * model.x[i]
    elif flag == 14:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = expr + model.p[i] * model.x[i]
    elif flag == 15:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = model.p[i] * model.x[i] + expr

    elif flag == 7:
        expr = 0
        for i in model.A:
            expr += model.p[i] * (1 + model.x[i])

    elif flag == 17:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * (1 + model.x[i])

    if coopr3 or pyomo4:
        generate_ampl_repn(expr)
    else:
        generate_standard_repn(EXPR.compress_expression(expr), quadratic=False)
Example #2
0
def preprocess_constraint(block, constraint, idMap=None, block_ampl_repn=None):

    from pyomo.repn.beta.matrix import MatrixConstraint
    if isinstance(constraint, MatrixConstraint):
        return

    # Get/Create the ComponentMap for the repn
    if not hasattr(block, '_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    for index, constraint_data in iteritems(constraint):

        if not constraint_data.active:
            continue

        if isinstance(constraint_data, LinearCanonicalRepn):
            continue

        if constraint_data.body is None:
            raise ValueError("No expression has been defined for the body "
                             "of constraint %s" % (constraint_data.name))

        try:
            ampl_repn = generate_ampl_repn(constraint_data.body, idMap=idMap)
        except Exception:
            err = sys.exc_info()[1]
            logging.getLogger('pyomo.core').error(
                "exception generating a ampl representation for "
                "constraint %s: %s" % (constraint_data.name, str(err)))
            raise

        block_ampl_repn[constraint_data] = ampl_repn
Example #3
0
def preprocess_block_objectives(block, idMap=None):

    # Get/Create the ComponentMap for the repn
    if not hasattr(block, '_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    for objective_data in block.component_data_objects(Objective,
                                                       active=True,
                                                       descend_into=False):

        if objective_data.expr is None:
            raise ValueError(
                "No expression has been defined for objective %s" %
                (objective_data.name))

        try:
            ampl_repn = generate_ampl_repn(objective_data.expr, idMap=idMap)
        except Exception:
            err = sys.exc_info()[1]
            logging.getLogger('pyomo.core').error\
                ( "exception generating a ampl representation for objective %s: %s" \
                      % (objective_data.name, str(err)) )
            raise

        block_ampl_repn[objective_data] = ampl_repn
Example #4
0
def preprocess_block_objectives(block, idMap=None):

    # Get/Create the ComponentMap for the repn
    if not hasattr(block,'_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    for objective_data in block.component_data_objects(Objective,
                                                       active=True,
                                                       descend_into=False):

        if objective_data.expr is None:
            raise ValueError("No expression has been defined for objective %s"
                             % (objective_data.cname(True)))

        try:
            ampl_repn = generate_ampl_repn(objective_data.expr,
                                           idMap=idMap)
        except Exception:
            err = sys.exc_info()[1]
            logging.getLogger('pyomo.core').error\
                ( "exception generating a ampl representation for objective %s: %s" \
                      % (objective_data.cname(True), str(err)) )
            raise

        block_ampl_repn[objective_data] = ampl_repn
Example #5
0
def preprocess_constraint_data(block,
                               constraint_data,
                               idMap=None,
                               block_ampl_repn=None):

    if isinstance(constraint_data, LinearCanonicalRepn):
        return

    # Get/Create the ComponentMap for the repn
    if not hasattr(block,'_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    if constraint_data.body is None:
        raise ValueError(
            "No expression has been defined for the body "
            "of constraint %s" % (constraint_data.cname(True)))

    try:
        ampl_repn = generate_ampl_repn(constraint_data.body,
                                       idMap=idMap)
    except Exception:
        err = sys.exc_info()[1]
        logging.getLogger('pyomo.core').error(
            "exception generating a ampl representation for "
            "constraint %s: %s"
            % (constraint_data.cname(True), str(err)))
        raise

    block_ampl_repn[constraint_data] = ampl_repn
def preprocess_constraint_data(block,
                               constraint_data,
                               idMap=None,
                               block_ampl_repn=None):

    if isinstance(constraint_data, LinearCanonicalRepn):
        return

    # Get/Create the ComponentMap for the repn
    if not hasattr(block, '_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    if constraint_data.body is None:
        raise ValueError("No expression has been defined for the body "
                         "of constraint %s" % (constraint_data.cname(True)))

    try:
        ampl_repn = generate_ampl_repn(constraint_data.body, idMap=idMap)
    except Exception:
        err = sys.exc_info()[1]
        logging.getLogger('pyomo.core').error(
            "exception generating a ampl representation for "
            "constraint %s: %s" % (constraint_data.cname(True), str(err)))
        raise

    block_ampl_repn[constraint_data] = ampl_repn
Example #7
0
def preprocess_constraint(block,
                          constraint,
                          idMap=None,
                          block_ampl_repn=None):

    from pyomo.repn.beta.matrix import MatrixConstraint
    if isinstance(constraint, MatrixConstraint):
        return

    # Get/Create the ComponentMap for the repn
    if not hasattr(block,'_ampl_repn'):
        block._ampl_repn = ComponentMap()
    block_ampl_repn = block._ampl_repn

    for index, constraint_data in iteritems(constraint):

        if not constraint_data.active:
            continue

        if isinstance(constraint_data, LinearCanonicalRepn):
            continue

        if constraint_data.body is None:
            raise ValueError(
                "No expression has been defined for the body "
                "of constraint %s" % (constraint_data.name))

        try:
            ampl_repn = generate_ampl_repn(constraint_data.body,
                                           idMap=idMap)
        except Exception:
            err = sys.exc_info()[1]
            logging.getLogger('pyomo.core').error(
                "exception generating a ampl representation for "
                "constraint %s: %s"
                % (constraint_data.name, str(err)))
            raise

        block_ampl_repn[constraint_data] = ampl_repn
Example #8
0
def evaluate_all(expr, seconds):
    try:
        seconds['size'] = sum(e.size() for e in expr)
    except:
        seconds['size'] = -1

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                EXPR.compress_expression(e, verbose=False)
            stop = time.time()
            seconds['compress'] = stop - start
            seconds['compressed_size'] = expr.size()
    except TimeoutError:
        print("TIMEOUT")
        seconds['compressed_size'] = -999.0
    except:
        seconds['compressed_size'] = 0

    # NOTE: All other tests after this are on the compressed expression!

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.clone()
            stop = time.time()
            seconds['clone'] = stop - start
    except RecursionError:
        seconds['clone'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['clone'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.polynomial_degree()
            stop = time.time()
            seconds['polynomial_degree'] = stop - start
    except RecursionError:
        seconds['polynomial_degree'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['polynomial_degree'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.is_constant()
            stop = time.time()
            seconds['is_constant'] = stop - start
    except RecursionError:
        seconds['is_constant'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_constant'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.is_fixed()
            stop = time.time()
            seconds['is_fixed'] = stop - start
    except RecursionError:
        seconds['is_fixed'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_fixed'] = -999.0

    if not coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        try:
            from pyomo.repn import generate_standard_repn
            with timeout(seconds=_timeout):
                start = time.time()
                for e in expr:
                    generate_standard_repn(e, quadratic=False)
                stop = time.time()
                seconds['generate_repn'] = stop - start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    if coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        try:
            from pyomo.repn import generate_ampl_repn
            with timeout(seconds=_timeout):
                start = time.time()
                for e in expr:
                    generate_ampl_repn(e)
                stop = time.time()
                seconds['generate_repn'] = stop - start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    return seconds
Example #9
0
def linear(flag):
    if flag == 0:
        expr=sum(model.x[i] for i in model.A)
    elif flag == 10:
        with EXPR.linear_expression as expr:
            expr=sum((model.x[i] for i in model.A), expr)
    elif flag == 20:
        expr=quicksum(model.x[i] for i in model.A)

    elif flag == 1:
        expr = sum_product(model.p, model.x)
    elif flag == 6:
        expr=quicksum((model.p[i]*model.x[i] for i in model.A), linear=False)
    elif flag == 16:
        expr=quicksum((model.p[i]*model.x[i] for i in model.A), linear=True)
    elif flag == 26:
        expr=quicksum(model.p[i]*model.x[i] for i in model.A)

    elif flag == 2:
        expr=sum(model.p[i]*model.x[i] for i in model.A)
    elif flag == 3:
        expr=0
        for i in model.A:
            expr += model.p[i] * model.x[i]
    elif flag == 4:
        try:
            with timeout(10):
                expr=0
                for i in model.A:
                    expr = expr + model.p[i] * model.x[i]
        except:
            expr = model.x[1]       # BOGUS
    elif flag == 5:
        try:
            with timeout(10):
                expr=0
                for i in model.A:
                    expr = model.p[i] * model.x[i] + expr
        except:
            expr = model.x[1]       # BOGUS

    elif flag == 12:
        with EXPR.linear_expression as expr:
            expr=sum((model.p[i]*model.x[i] for i in model.A), expr)
    elif flag == 22:
        with EXPR.nonlinear_expression as expr:
            expr=sum((model.p[i]*model.x[i] for i in model.A), expr)
    elif flag == 13:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * model.x[i]
    elif flag == 14:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = expr + model.p[i] * model.x[i]
    elif flag == 15:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = model.p[i] * model.x[i] + expr

    elif flag == 7:
        expr=0
        for i in model.A:
            expr += model.p[i] * (1 + model.x[i])
    elif flag == 17:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * (1 + model.x[i])
    elif flag == 27:
        expr = quicksum(model.p[i]*(1 + model.x[i]) for i in model.A)

    elif flag == 8:
        expr=0
        for i in model.A:
            expr += (model.x[i]+model.x[i])
    elif flag == 18:
        # This will assume a nonlinear sum
        expr = quicksum((model.x[i] + model.x[i]) for i in model.A)

    elif flag == 9:
        expr=0
        for i in model.A:
            expr += model.p[i]*(model.x[i]+model.x[i])

    elif flag == 19:
        # This will assume a nonlinear sum
        expr = quicksum(model.p[i]*(model.x[i] + model.x[i]) for i in model.A)

    elif flag == -9:
        expr = quicksum(sin(model.x[i]) for i in model.A)

    elif flag == 30:
        expr=0
        for i in model.A:
            expr += model.x[i]*model.y[i]

    elif flag == -30:
        expr= quicksum(model.x[i]*model.y[i] for i in model.A)

    if coopr3 or pyomo4:
        repn = generate_ampl_repn(expr)
    else:
        repn = generate_standard_repn(EXPR.compress_expression(expr), quadratic=False)
Example #10
0
def evaluate_all(expr, seconds):
    try:
        seconds['size'] = sum(e.size() for e in expr)
    except:
        seconds['size'] = -1

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.clone()
            stop = time.time()
            seconds['clone'] = stop-start
    except RecursionError:
        seconds['clone'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['clone'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.polynomial_degree()
            stop = time.time()
            seconds['polynomial_degree'] = stop-start
    except RecursionError:
        seconds['polynomial_degree'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['polynomial_degree'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.is_constant()
            stop = time.time()
            seconds['is_constant'] = stop-start
    except RecursionError:
        seconds['is_constant'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_constant'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            for e in expr:
                e.is_fixed()
            stop = time.time()
            seconds['is_fixed'] = stop-start
    except RecursionError:
        seconds['is_fixed'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_fixed'] = -999.0

    if not coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        if True:
            from pyomo.repn import generate_standard_repn
            with timeout(seconds=_timeout):
                start = time.time()
                for e in expr:
                    generate_standard_repn(e, quadratic=False)
                stop = time.time()
                seconds['generate_repn'] = stop-start
        try:
            from pyomo.repn import generate_standard_repn
            with timeout(seconds=_timeout):
                start = time.time()
                for e in expr:
                    generate_standard_repn(e, quadratic=False)
                stop = time.time()
                seconds['generate_repn'] = stop-start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    if coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        try:
            from pyomo.repn import generate_ampl_repn
            with timeout(seconds=_timeout):
                start = time.time()
                for e in expr:
                    generate_ampl_repn(e)
                stop = time.time()
                seconds['generate_repn'] = stop-start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    return seconds
Example #11
0
def evaluate(expr, seconds):
    try:
        seconds['size'] = expr.size()
    except:
        seconds['size'] = -1

    if False:
        #
        # Compression is no longer necessary
        #
        gc.collect()
        _clear_expression_pool()
        try:
            with timeout(seconds=_timeout):
                start = time.time()
                expr = EXPR.compress_expression(expr, verbose=False)
                stop = time.time()
                seconds['compress'] = stop-start
                seconds['compressed_size'] = expr.size()
        except TimeoutError:
            print("TIMEOUT")
            seconds['compressed_size'] = -999.0
        except:
            seconds['compressed_size'] = 0

        # NOTE: All other tests after this are on the compressed expression!

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            expr_ = expr.clone()
            stop = time.time()
            seconds['clone'] = stop-start
    except RecursionError:
        seconds['clone'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['clone'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            d_ = expr.polynomial_degree()
            stop = time.time()
            seconds['polynomial_degree'] = stop-start
    except RecursionError:
        seconds['polynomial_degree'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['polynomial_degree'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            s_ = expr.is_constant()
            stop = time.time()
            seconds['is_constant'] = stop-start
    except RecursionError:
        seconds['is_constant'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_constant'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            s_ = expr.is_fixed()
            stop = time.time()
            seconds['is_fixed'] = stop-start
    except RecursionError:
        seconds['is_fixed'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_fixed'] = -999.0

    if not coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        try:
            from pyomo.repn import generate_standard_repn
            with timeout(seconds=_timeout):
                start = time.time()
                r_ = generate_standard_repn(expr, quadratic=False)
                stop = time.time()
                seconds['generate_repn'] = stop-start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            s_ = expr.is_constant()
            stop = time.time()
            seconds['is_constant'] = stop-start
    except RecursionError:
        seconds['is_constant'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_constant'] = -999.0

    gc.collect()
    _clear_expression_pool()
    try:
        with timeout(seconds=_timeout):
            start = time.time()
            s_ = expr.is_fixed()
            stop = time.time()
            seconds['is_fixed'] = stop-start
    except RecursionError:
        seconds['is_fixed'] = -888.0
    except TimeoutError:
        print("TIMEOUT")
        seconds['is_fixed'] = -999.0

    if coopr3_or_pyomo4:
        gc.collect()
        _clear_expression_pool()
        try:
            from pyomo.repn import generate_ampl_repn
            with timeout(seconds=_timeout):
                start = time.time()
                r_ = generate_ampl_repn(expr)
                stop = time.time()
                seconds['generate_repn'] = stop-start
        except RecursionError:
            seconds['generate_repn'] = -888.0
        except ImportError:
            seconds['generate_repn'] = -999.0
        except TimeoutError:
            print("TIMEOUT")
            seconds['generate_repn'] = -999.0

    return seconds
Example #12
0
def linear(flag):
    if flag == 0:
        expr = sum(model.x[i] for i in model.A)
    elif flag == 10:
        with EXPR.linear_expression as expr:
            expr = sum((model.x[i] for i in model.A), expr)
    elif flag == 20:
        expr = quicksum(model.x[i] for i in model.A)

    elif flag == 1:
        expr = sum_product(model.p, model.x)
    elif flag == 6:
        expr = quicksum((model.p[i] * model.x[i] for i in model.A),
                        linear=False)
    elif flag == 16:
        expr = quicksum((model.p[i] * model.x[i] for i in model.A),
                        linear=True)
    elif flag == 26:
        expr = quicksum(model.p[i] * model.x[i] for i in model.A)

    elif flag == 2:
        expr = sum(model.p[i] * model.x[i] for i in model.A)
    elif flag == 3:
        expr = 0
        for i in model.A:
            expr += model.p[i] * model.x[i]
    elif flag == 4:
        try:
            with timeout(10):
                expr = 0
                for i in model.A:
                    expr = expr + model.p[i] * model.x[i]
        except:
            expr = model.x[1]  # BOGUS
    elif flag == 5:
        try:
            with timeout(10):
                expr = 0
                for i in model.A:
                    expr = model.p[i] * model.x[i] + expr
        except:
            expr = model.x[1]  # BOGUS

    elif flag == 12:
        with EXPR.linear_expression as expr:
            expr = sum((model.p[i] * model.x[i] for i in model.A), expr)
    elif flag == 22:
        with EXPR.nonlinear_expression as expr:
            expr = sum((model.p[i] * model.x[i] for i in model.A), expr)
    elif flag == 13:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * model.x[i]
    elif flag == 14:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = expr + model.p[i] * model.x[i]
    elif flag == 15:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr = model.p[i] * model.x[i] + expr

    elif flag == 7:
        expr = 0
        for i in model.A:
            expr += model.p[i] * (1 + model.x[i])
    elif flag == 17:
        with EXPR.linear_expression as expr:
            for i in model.A:
                expr += model.p[i] * (1 + model.x[i])
    elif flag == 27:
        expr = quicksum(model.p[i] * (1 + model.x[i]) for i in model.A)

    elif flag == 8:
        expr = 0
        for i in model.A:
            expr += (model.x[i] + model.x[i])
    elif flag == 18:
        # This will assume a nonlinear sum
        expr = quicksum((model.x[i] + model.x[i]) for i in model.A)

    elif flag == 9:
        expr = 0
        for i in model.A:
            expr += model.p[i] * (model.x[i] + model.x[i])

    elif flag == 19:
        # This will assume a nonlinear sum
        expr = quicksum(model.p[i] * (model.x[i] + model.x[i])
                        for i in model.A)

    elif flag == -9:
        expr = quicksum(sin(model.x[i]) for i in model.A)

    elif flag == 30:
        expr = 0
        for i in model.A:
            expr += model.x[i] * model.y[i]

    elif flag == -30:
        expr = quicksum(model.x[i] * model.y[i] for i in model.A)

    if coopr3 or pyomo4:
        repn = generate_ampl_repn(expr)
    else:
        repn = generate_standard_repn(EXPR.compress_expression(expr),
                                      quadratic=False)