Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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
Beispiel #7
0
    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
Beispiel #8
0
    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
Beispiel #9
0
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
Beispiel #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:
                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
Beispiel #11
0
    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
Beispiel #12
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
Beispiel #13
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