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)
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
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
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
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
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
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
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)
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
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
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)