Skip to content

Aufteilung der Veranstaltungen auf die Stehordner #97

@ckleemann

Description

@ckleemann

Der folgende Code berechnet die Aufteilung in der Konsole. Es mangelt noch an einer GUI

from feedback.models import Veranstaltung, Semester
from django.db.models import Q, Sum

num_buckets = 9
return_factor = 0.6

s = Semester.objects.filter(semester=20160)
vl = Veranstaltung.objects.filter(semester=s,anzahl__gt=0)
# alles auser reine vorlesung
#vl = vl.filter(~Q(typ='v'))
# alle vorlesung
vl = vl.filter(Q(typ='v') | Q(typ='vu'))
vl = vl.order_by('name')

num_sheets = 0

#  ist Aggregate besser?
for v in vl:
 num_sheets += v.anzahl

expected_return = num_sheets * return_factor

average_num_per_bucket = expected_return / num_buckets

print('expected Sheets per bucket: %d' % (average_num_per_bucket))

in_c_bucket = 0

bucket = 1

print ('\n Bucket No: %d\n' % (bucket) )
for v in vl:
  if ((in_c_bucket + ((v.anzahl * return_factor) / 2)) > average_num_per_bucket):
    print ('Anzahl in Bucket: %d' %(in_c_bucket))
    bucket+=1
    in_c_bucket = 0
    print ('\n Bucket No: %d\n' % (bucket))
  in_c_bucket += v.anzahl * return_factor
  print ('%s erwartete Anzahl: %d' % (v, v.anzahl * return_factor))

print ('Anzahl in Bucket: %d' %(in_c_bucket))

Gitlab: 22

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions