summaryrefslogtreecommitdiff
path: root/ilpscheduling/generate.py
blob: b9d1cefbfc326217efbf935226a4781b2ef0ee81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# vim: set fileencoding=utf-8 :

import random, yaml, sys
from model import WorkerSlotModel

def main (args):
    numSlots = args.slots
    numWorker = args.worker
    minDatesPerStudent = 1
    maxDatesPerStudent = 3

    worker = {}
    slots = {}

    for i in range (numSlots):
        slots[i] = {'max': args.slotLimit, 'min': 0}

    prio = list (range (1, numSlots+1))
    for i in range (numWorker):
        keys = slots.keys ()
        random.shuffle (keys)
        s = random.randint (minDatesPerStudent, maxDatesPerStudent)
        worker[i] = {'prio': dict (zip (keys[:s], prio[:s])), 'slots': {'min': 1, 'max': 1}}

    data = WorkerSlotModel (slots, worker, {'minSlots': 0, 'maxSlots': len (slots)})
    data.dump (sys.stdout)

def addParser (subparsers):
    parser = subparsers.add_parser ('generate', help='Generate random testcase')
    parser.add_argument('--slots', '-s', type=int, default=5)
    parser.add_argument('--worker', '-w', type=int, default=60)
    parser.add_argument('--slot-limit', '-l', dest='slotLimit', type=int, default=12, help='Max number of worker per slot')
    parser.set_defaults (func=main)