def mixed_task_set(tasks, factor, rate):
    allTasks = []
    for task in tasks:
        task['abnormal_exe'] = task['execution'] * factor
        task['prob'] = rate
        allTasks.append(task)
    return sort_task_set.sort(allTasks, 'period')
def pdfForm(tasks):
    allTasks = []
    for task in tasks:
        task['pdf'] = [(task['execution'], 1 - task['prob']),
                       (task['abnormal_exe'], task['prob'])]
        allTasks.append(task)
    return sort_task_set.sort(allTasks, 'period')
def mixed_task_set(tasks, factor):
    allTasks=[]
    for task in tasks:
        task.abnormal_exe = task.execution * factor
        allTasks.append(task)

    return sort_task_set.sort(allTasks, 'period')
def hardtaskWCET(tasks, hardTaskWCETFactor, rate):
    allTasks = []
    for i in range(len(tasks)):
        pos = random.randint(0, len(tasks) - 1)
        task = tasks[pos]
        task['abnormal_exe'] = task['execution'] * hardTaskWCETFactor
        task['type'] = 'hard'
        task['prob'] = rate
        allTasks.append(task)
        del tasks[pos]
    return sort_task_set.sort(allTasks, 'period')
def addPrioritiesToTasks(tasks):
    #print(tasks)

    taskPriorities = [x for x in range(len(tasks))]
    #print(taskPriorities)
    allTasks = []	
    for task in tasks:
        #adds a random priority to a task
        randomPrioIndex = random.random() * len(taskPriorities)
        task.setPriority(taskPriorities.pop(int(randomPrioIndex)) + 1)
        allTasks.append(task)
    return sort_task_set.sort(allTasks, 'priority')
def taskGeneration(tasks, hardTasks, softTasks, hardTaskPercentage,
                   hardTaskWCETFactor, softTaskWCETFactor):
    #print len(tasks)
    numberOfHardTasks = (hardTaskPercentage / 100 * len(tasks))
    #print numberOfHardTasks
    allTasks = []
    for i in range(int(numberOfHardTasks)):
        pos = random.randint(0, len(tasks) - 1)
        task = tasks[pos]
        task['abnormal_exe'] = task['execution'] * hardTaskWCETFactor
        task['type'] = 'hard'
        hardTasks.append(task)
        allTasks.append(task)
        del tasks[pos]
    for task in tasks:
        task['abnormal_exe'] = task['execution'] * softTaskWCETFactor
        task['type'] = 'soft'
        softTasks.append(task)
        allTasks.append(task)
    allTasks = hardTasks + softTasks
    hardTasks = sort_task_set.sort(hardTasks, 'period')
    softTasks = sort_task_set.sort(softTasks, 'period')
    return sort_task_set.sort(allTasks, 'period')
def add_processor_to_task( tasks, processorsNum ):
    processors = [0 for x in range(processorsNum)]

    for task in tasks:
        task.uti = task["execution"]/task["period"]

    tasks = sort_task_set.sort(tasks, "uti")
    tasks.reverse()

    for task in tasks:
        processor = lowestUtilizationProcessor(processors)

        uti = task.execution/task.period
        processors[processor] += uti
        task.processor = processor