diff options
Diffstat (limited to 'ilpscheduling/generate.py')
-rw-r--r-- | ilpscheduling/generate.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/ilpscheduling/generate.py b/ilpscheduling/generate.py new file mode 100644 index 0000000..b9d1cef --- /dev/null +++ b/ilpscheduling/generate.py @@ -0,0 +1,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) + |