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)
|