示例#1
0
def rule_terminator_series():
    # Series(X(F,R), Terminator(R)) => Terminator(F)
    F0 = Rcomp()
    from mocdp.dp.dp_flatten import Mux
    dp1 = Mux(F0, ())
    dp2 = Terminator(F0)
    # make sure we can obtain it
    s0 = Series(dp1, dp2)
    s1 = make_series(dp1, dp2)
    check_same_spaces(s0, s1)
    assert isinstance(s1, Terminator), s1
示例#2
0
def battery_complete():

    assert R_Time != R_Energy
    assert R_Time != R_Power
    assert R_Energy != R_Power
    assert PosetProduct((R_Time, R_Time)) != PosetProduct((R_Time, R_Energy))

    N = Single('navigate')

    F = PosetProduct((PosetProduct((R_Weight_g, N)), R_Weight_g))

    dpB = Mux(F, [[(0, 0), 1], (0, 1)])

    assert dpB.get_fun_space() == F

    dpA = Parallel(Sum(R_Weight_g), Identity(N))

    series([dpB, dpA])

    dp1 = Parallel(Mobility(), TimeEnergyTradeoff())

    series([dpA, dp1])

    dp2 = Mux(F=dp1.get_res_space(), coords=[[0, (1, 0)], (1, 1)])

    series([dp1, dp2])

    dp4 = Parallel(Sum(R_Power), Identity(R_Time))

    series([dp2, dp4])

    dp4b = Mux(dp4.get_res_space(), [1, [1, 0]])

    series([dp4, dp4b])

    e_from_tp = Product(R_Time, R_Power, R_Energy)

    from .dp_bat import BatteryDP
    battery = BatteryDP(energy_density=100.0)

    dp7 = Parallel(Identity(R_Time), make_series(e_from_tp, battery))

    series([dp4b, dp7])

    dps = series([dpB, dpA, dp1, dp2, dp4, dp4b, dp7])
    #     dp = DPLoop(dps)

    return dps
示例#3
0
def battery_complete():

    assert R_Time != R_Energy
    assert R_Time != R_Power
    assert R_Energy != R_Power
    assert PosetProduct((R_Time, R_Time)) != PosetProduct((R_Time, R_Energy))

    N = Single('navigate')
    
    F = PosetProduct((PosetProduct((R_Weight_g, N)), R_Weight_g))

    dpB = Mux(F, [[(0, 0), 1], (0, 1)])

    assert dpB.get_fun_space() == F

    dpA = Parallel(Sum(R_Weight_g), Identity(N))

    series([dpB, dpA])

    dp1 = Parallel(Mobility(), TimeEnergyTradeoff())

    series([dpA, dp1])

    dp2 = Mux(F=dp1.get_res_space(), coords=[[0, (1, 0)], (1, 1)])

    series([dp1, dp2])

    dp4 = Parallel(Sum(R_Power), Identity(R_Time))

    series([dp2, dp4])

    dp4b = Mux(dp4.get_res_space(), [1, [1, 0]])

    series([dp4, dp4b])

    e_from_tp = Product(R_Time, R_Power, R_Energy)

    from .dp_bat import BatteryDP
    battery = BatteryDP(energy_density=100.0)

    dp7 = Parallel(Identity(R_Time), make_series(e_from_tp, battery))

    series([dp4b, dp7])

    dps = series([dpB, dpA, dp1, dp2, dp4, dp4b, dp7])
#     dp = DPLoop(dps)

    return dps
示例#4
0
def series(l):
    if len(l) == 1:
        return l[0]
    else:
        return make_series(l[0], series(l[1:]))
示例#5
0
def series(l):
    if len(l) == 1:
        return l[0]
    else:
        return make_series(l[0], series(l[1:]))