summaryrefslogtreecommitdiff
path: root/ilpscheduling/generate.py
diff options
context:
space:
mode:
Diffstat (limited to 'ilpscheduling/generate.py')
-rw-r--r--ilpscheduling/generate.py34
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)
+