def competitionRunner(X, Y, schedules, m, n, tFactor, measureStep): 
    # CONSTANTS
    SCHEDULES = schedules
    N = n
    M = m
    T = tFactor * N
    MEASURE_STEP = measureStep
    RUN_COUNT = 4
    THREAD_COUNT = 4

    # SEEDS
    samplerSeeds = [rng.randint(0,2**32-1) for i in range(RUN_COUNT)]
    runnerSeeds = [rng.randint(0,2**32-1) for i in range(RUN_COUNT)]

    # INPUT VARIABLES 
    patterns = X
    classes = Y

    # SAMPLERS & RUNNERS
    samplers = [mcaa.sampler(N, samplerSeeds[i]) for i in range(RUN_COUNT)]
    runners = [mcaa.CompetitionRunner(T, MEASURE_STEP, SCHEDULES[i], samplers[i], patterns, classes, runnerSeeds[i]) \
               for i in range(RUN_COUNT)]
    multiRunner = mcaa.multiCompetitionRunner(THREAD_COUNT, [runner.getPointer() for runner in runners]) 

    # RUN
    multiRunner.runAll()

    # OUTPUTS 
    allEMeasures = multiRunner.getEMeasures() / M
    allWeights = [sampler.getSamples() for sampler in samplers]

    return allEMeasures, allWeights
Exemplo n.º 2
0
def linearRunner(offset, slope, alpha, n, tFactor, measureStep, runCount,
                 threadCount):
    # CONSTANTS
    OFFSET = offset
    SLOPE = slope
    ALPHA = alpha
    N = n
    M = int(ALPHA * N)
    T = tFactor * N
    MEASURE_STEP = measureStep
    RUN_COUNT = runCount
    THREAD_COUNT = threadCount

    # SEEDS
    weightsSeed = rng.randint(0, 2**32 - 1)
    patternsSeed = rng.randint(0, 2**32 - 1)
    samplerSeeds = [rng.randint(0, 2**32 - 1) for i in range(RUN_COUNT)]
    runnerSeeds = [rng.randint(0, 2**32 - 1) for i in range(RUN_COUNT)]

    # INPUT VARIABLES
    weights = mcaa.buildRandomWeights(N, weightsSeed)
    patterns = mcaa.buildRandomPatterns(N, M, patternsSeed)
    classes = mcaa.buildClasses(weights, patterns)

    # SAMPLERS & RUNNERS
    samplers = [mcaa.sampler(N, samplerSeeds[i]) for i in range(RUN_COUNT)]
    schedules = [
        mcaa.continuousLinearSchedule(T, OFFSET, SLOPE)
        for i in range(RUN_COUNT)
    ]
    runners = [
        mcaa.MCMCRunner(T, MEASURE_STEP, schedules[i], samplers[i], weights,
                        patterns, classes, runnerSeeds[i])
        for i in range(RUN_COUNT)
    ]
    multiRunner = mcaa.multiMCMCRunner(
        THREAD_COUNT, [runner.getPointer() for runner in runners])

    # RUN
    multiRunner.runAll()

    # OUTPUTS
    allEMeasures = multiRunner.getEMeasures() / M
    allOverlapMeasures = multiRunner.getOverlapMeasures()

    return allEMeasures, allOverlapMeasures