def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) for i in model.A: if i != N: model.x[i].fixed = True gc.collect() _clear_expression_pool() start = time.time() # if True: expr = 0 for i in model.A: expr = model.x[i] * (1 + expr) # stop = time.time() seconds['construction'] = stop - start seconds = evaluate(expr, seconds) return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # if True: expr = 0 for i in model.A: expr = model.x[i] * (1 + expr) # stop = time.time() seconds['construction'] = stop - start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 except: pass return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) model.y = Var(model.A, initialize=2) for i in model.A: if i != N: model.x[i].fixed = True model.y[i].fixed = True gc.collect() _clear_expression_pool() start = time.time() # if flag == 1: expr = summation(model.p, model.x, model.y) elif flag == 2: expr = sum(model.p[i] * model.x[i] * model.y[i] for i in model.A) else: expr = 0 for i in model.A: expr += model.p[i] * model.x[i] * model.y[i] # stop = time.time() seconds['construction'] = stop - start seconds = evaluate(expr, seconds) return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) gc.collect() _clear_expression_pool() if True: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # expr = [] if flag == 2: for i in model.A: expr.append( model.x[1] + model.x[i] ) # stop = time.time() seconds['construction'] = stop-start seconds['nclones'] = ctr.count - nclones seconds = evaluate_all(expr, seconds) try: pass except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) model.y = Var(model.A, initialize=2) for i in model.A: if i != N: model.x[i].fixed = True model.y[i].fixed = True gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # if flag == 1: expr = summation(model.p, model.x, model.y) elif flag == 2: expr = sum(model.p[i] * model.x[i] * model.y[i] for i in model.A) elif flag == 3: expr = 0 for i in model.A: expr += model.p[i] * model.x[i] * model.y[i] elif flag == 4: expr = Sum(model.p[i] * model.x[i] * model.y[i] for i in model.A) elif flag == 12: with EXPR.quadratic_expression as expr: expr = sum((model.p[i] * model.x[i] * model.y[i] for i in model.A), expr) elif flag == 13: with EXPR.quadratic_expression as expr: for i in model.A: expr += model.p[i] * model.x[i] * model.y[i] # stop = time.time() seconds['construction'] = stop - start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 except: pass return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) model.y = Var(model.A, initialize=2) for i in model.A: if i != N: model.x[i].fixed = True model.y[i].fixed = True gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # if flag == 1: expr = sum_product(model.p, model.x, model.y) elif flag == 2: expr=sum(model.p[i]*model.x[i]*model.y[i] for i in model.A) elif flag == 3: expr=0 for i in model.A: expr += model.p[i] * model.x[i] * model.y[i] elif flag == 4: expr=Sum(model.p[i]*model.x[i]*model.y[i] for i in model.A) elif flag == 12: with EXPR.quadratic_expression as expr: expr=sum((model.p[i]*model.x[i]*model.y[i] for i in model.A), expr) elif flag == 13: with EXPR.quadratic_expression as expr: for i in model.A: expr += model.p[i] * model.x[i] * model.y[i] # stop = time.time() seconds['construction'] = stop-start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.q = Param(model.A, initialize=2, mutable=True) gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # if flag == 1: expr = sum_product(model.p, model.q, index=model.A) elif flag == 2: expr=sum(model.p[i]*model.q[i] for i in model.A) elif flag == 3: expr=0 for i in model.A: expr += model.p[i] * model.q[i] elif flag == 4: expr=Sum(model.p[i]*model.q[i] for i in model.A) elif flag == 12: with EXPR.linear_expression as expr: expr=sum((model.p[i]*model.q[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.q[i] # stop = time.time() seconds['construction'] = stop-start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 return seconds
def f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(initialize=2) gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): start = time.time() # if flag == 1: expr=model.x+model.x for i in model.A: expr = model.p[i]*expr elif flag == 2: expr=model.x+model.x for i in model.A: expr *= model.p[i] elif flag == 3: expr=(model.x+model.x) * prod(model.p[i] for i in model.A) # stop = time.time() seconds['construction'] = stop-start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 return seconds
def evaluate(expr, seconds): gc.collect() _clear_expression_pool() start = time.time() # expr_ = expr.clone() # stop = time.time() seconds['clone'] = stop - start gc.collect() _clear_expression_pool() start = time.time() # d_ = expr.polynomial_degree() # stop = time.time() seconds['polynomial_degree'] = stop - start if False: gc.collect() _clear_expression_pool() start = time.time() # s_ = expr.to_string() # stop = time.time() seconds['to_string'] = stop - start gc.collect() _clear_expression_pool() start = time.time() # s_ = expr.is_constant() # stop = time.time() seconds['is_constant'] = stop - start gc.collect() _clear_expression_pool() start = time.time() # s_ = expr.is_fixed() # stop = time.time() seconds['is_fixed'] = stop - start try: gc.collect() _clear_expression_pool() start = time.time() # r_ = generate_canonical_repn(expr) # stop = time.time() seconds['generate_canonical'] = stop - start except: seconds['generate_canonical'] = -1 return seconds
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 f(): seconds = {} model = ConcreteModel() model.A = RangeSet(N) model.p = Param(model.A, default=2) model.x = Var(model.A, initialize=2) gc.collect() _clear_expression_pool() try: with EXPR.clone_counter as ctr: nclones = ctr.count with timeout(seconds=_timeout): # if flag == 1: start = time.time() expr = sum_product(model.p, model.x) stop = time.time() elif flag == 2: start = time.time() expr=sum(model.p[i]*model.x[i] for i in model.A) stop = time.time() elif flag == 3: start = time.time() expr=0 for i in model.A: expr += model.p[i] * model.x[i] stop = time.time() elif flag == 4: start = time.time() expr=0 for i in model.A: expr = expr + model.p[i] * model.x[i] stop = time.time() elif flag == 5: start = time.time() expr=0 for i in model.A: expr = model.p[i] * model.x[i] + expr stop = time.time() elif flag == 6: start = time.time() expr=Sum(model.p[i]*model.x[i] for i in model.A) stop = time.time() elif flag == 7: start = time.time() expr=0 for i in model.A: expr += model.p[i] * (1 + model.x[i]) stop = time.time() elif flag == 8: start = time.time() expr=0 for i in model.A: expr += (model.x[i]+model.x[i]) stop = time.time() elif flag == 9: start = time.time() expr=0 for i in model.A: expr += model.p[i]*(model.x[i]+model.x[i]) stop = time.time() elif flag == 12: start = time.time() with EXPR.linear_expression as expr: expr=sum((model.p[i]*model.x[i] for i in model.A), expr) stop = time.time() elif flag == 13: start = time.time() with EXPR.linear_expression as expr: for i in model.A: expr += model.p[i] * model.x[i] stop = time.time() elif flag == 14: start = time.time() with EXPR.linear_expression as expr: for i in model.A: expr = expr + model.p[i] * model.x[i] stop = time.time() elif flag == 15: start = time.time() with EXPR.linear_expression as expr: for i in model.A: expr = model.p[i] * model.x[i] + expr stop = time.time() elif flag == 17: start = time.time() with EXPR.linear_expression as expr: for i in model.A: expr += model.p[i] * (1 + model.x[i]) stop = time.time() # seconds['construction'] = stop-start seconds['nclones'] = ctr.count - nclones seconds = evaluate(expr, seconds) except RecursionError: seconds['construction'] = -888.0 except TimeoutError: print("TIMEOUT") seconds['construction'] = -999.0 return seconds
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