コード例 #1
0
def test_MemoryWithRandomCoherenceTime__schedule_expiration():
    NUM_TRIALS = 200
    coherence_period_avg = 1
    coherence_period_stdev = 0.15
    tl = Timeline()
    mem = MemoryWithRandomCoherenceTime(
        "mem",
        tl,
        fidelity=1,
        frequency=0,
        efficiency=1,
        coherence_time=coherence_period_avg,
        coherence_time_stdev=coherence_period_stdev,
        wavelength=500)
    parent = DumbParent(mem)

    times_of_expiration_calculated = [0]
    np.random.seed(2)
    for i in range(NUM_TRIALS):
        times_of_expiration_calculated.append(
            times_of_expiration_calculated[-1] +
            int(mem.coherence_time_distribution() * 1e12))
    times_of_expiration_calculated.pop(0)

    np.random.seed(2)
    process = Process(mem, "update_state",
                      [[complex(math.sqrt(1 / 2)),
                        complex(math.sqrt(1 / 2))]])
    for i in range(NUM_TRIALS):
        event = Event(tl.now(), process)
        tl.schedule(event)
        tl.init()
        tl.run()
        assert times_of_expiration_calculated[i] == tl.now()

    period_sum = times_of_expiration_calculated[0]
    period_squared_sum = times_of_expiration_calculated[0]**2
    for i in range(1, len(times_of_expiration_calculated)):
        period = times_of_expiration_calculated[
            i] - times_of_expiration_calculated[i - 1]
        period_sum += period
        period_squared_sum += period * period

    avg_simulated = period_sum / NUM_TRIALS * 1e-12
    stdev_simulated = np.sqrt(
        (period_squared_sum - period_sum * period_sum * 1.0 / NUM_TRIALS) /
        NUM_TRIALS) * 1e-12

    #check that values in series are different
    assert stdev_simulated > 0.0
    #probability of error below is less then 0.3%
    assert abs(avg_simulated - coherence_period_avg
               ) < 3 * coherence_period_stdev / np.sqrt(NUM_TRIALS)
コード例 #2
0
def test_run():
    from numpy import random
    random.seed(0)
    tl = Timeline()
    dummy = Dummy("dummy", tl)
    times = random.randint(0, 20, 200)
    priorities = random.randint(0, 20, 200)

    for t, p in zip(times, priorities):
        process = Process(dummy, "op", [])
        e = Event(t, process, p)
        tl.schedule(e)

    tl.init()
    tl.run()

    assert dummy.counter == 200

    tl = Timeline(5)
    for t, p in zip(times, priorities):
        process = Process(dummy, "op", [])
        e = Event(t, process, p)
        tl.schedule(e)

    tl.init()
    tl.run()

    assert tl.now() == tl.time < 5 and len(tl.events) > 0
コード例 #3
0
from sequence.kernel.process import Process

class Store(object):
    def __init__(self, tl: Timeline):
        self.opening = False
        self.timeline = tl

    def open(self) -> None:
        self.opening = True
        process = Process(self, 'close', [])
        event = Event(self.timeline.now() + 12, process)
        self.timeline.schedule(event)

    def close(self) -> None:
        self.opening = False
        process = Process(self, 'open', [])
        event = Event(self.timeline.now() + 12, process)
        self.timeline.schedule(event)


tl = Timeline(60)
store = Store(tl)
print(tl.now())

process = Process(store, 'open', [])
event = Event(7, process)
tl.schedule(event)

tl.run()
print(store.opening)
コード例 #4
0
bsm_node.bsm.update_detectors_params('efficiency', 1)

qc1 = QuantumChannel('qc1', tl, attenuation=0, distance=1000)
qc2 = QuantumChannel('qc2', tl, attenuation=0, distance=1000)
qc1.set_ends(node1, bsm_node)
qc2.set_ends(node2, bsm_node)

nodes = [node1, node2, bsm_node]

for i in range(3):
    for j in range(3):
        cc= ClassicalChannel('cc_%s_%s'%(nodes[i].name, nodes[j].name), tl, 1000, 1e8)
        cc.set_ends(nodes[i], nodes[j])

for i in range(1000):
    tl.time = tl.now() + 1e11
    node1.create_protocol('bsm_node', 'node2')
    node2.create_protocol('bsm_node', 'node1')
    pair_protocol(node1.protocols[0], node2.protocols[0])

    node1.memory.reset()
    node2.memory.reset()

    node1.protocols[0].start()
    node2.protocols[0].start()

    tl.init()
    tl.run()

print(node1.resource_manager.ent_counter, ':', node1.resource_manager.raw_counter)