Random Liste für verschiedene Gruppen erstellen/Präferenzenliste

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Anaconda2016
User
Beiträge: 11
Registriert: Dienstag 5. April 2016, 13:07

Random Liste für verschiedene Gruppen erstellen/Präferenzenliste

Beitragvon Anaconda2016 » Montag 13. Juni 2016, 17:22

Hallo zusammen, ich benutze derzeit Anaconda2, um unter anderem den Deferred Acceptance Algorithm mit uniform tie-breaking laufen zu lassen. Bisher habe ich ein Programm gefunden, wo die Studenten für die Schulen in zwei Gruppen aufgeteilt werden. Das Prinzip von dem Algorithmus ist ja, dass die Studenten nach einer Prioritätsliste den Schule zugeordnet werden, wobei die Studenten selber Präferenzen über die Schule haben. Bisher ist es im Programm zu progammiert, dass die Studenten und Schulen zweidimensional zufällig auf einer Map dargestellt werden, und die Schulen teilen die Studenten dann für sich jeweils in zwei Gruppen ein:\\
  1. def district_priorities(n, a, grid_fun = gen_grid):
  2.     A = []
  3.  
  4.     capacity = n/a + 1
  5.     if n % a == 0:
  6.         capacity = n/a
  7.  
  8.     Q = [capacity] * a
  9.  
  10.     school_grid, student_grid = grid_fun(n, a)
  11.     s2d_map = student_to_district_map(school_grid, student_grid)
  12.  
  13.     for school in range(a):
  14.         rank = {}
  15.         for student in range(n):
  16.             if s2d_map[student] == school : %hier wird geprüft, ob der Student in der "walk zone" ist und eine höhere priorität genießt, 0 heißt hier höher, da es später noch umgedreht wird
  17.                 rank[student] = 0
  18.             else :
  19.                 rank[student] = 1
  20.         A.append(rank)
  21.  
  22.     if VERBOSE:
  23.         print 'School Priorities'
  24.         printS(A)
  25.         print 'Capacities:', Q
  26.        
  27.  
  28.     return A, Q, [s2d_map, school_grid, student_grid]


Das heißt wenn man z.B. zwei Stunden und zwei Schule hätte mit folgenden Koordinaten: Studenten x1,x2=(0,1 ; 1,0) und schulen s1,s2=(0,1 ; 1,0) mit jeweils einem Platz, hätte man als Prioritätenliste für die schulen: s1: x1=0 , x2=1 s2: x1=1, x2=1

Allerdings möchte ich das ganze jetzt nicht mehr von irgendeiner walkzone abhängig machen, sondern irgendwie eine gleiche Prioritätenliste für alle Schule erstellen, wo allerdings durch den zufall bestimmt wird, wer höhere prioriät hat und dies nicht von der distanz abhängig ist, und nach Möglichkeit das ganze nicht in zwei Gruppen aufteilen, sondern in 6-10 gruppen, also rank[student]=0, rank[student]=1, rank[student])2,...
Das Ergebnis wären dann also Prioritätenlisten über Gruppen von Studenten, wobei diese noch nichtmals die selbe Gruppengrößen haben sollten. Hat jemand eine Idee, wie ich das in diesem Programm einbinden kann? ich wäre sehr hilfreich, habe mit Mühe und Not das Programm einigermaßen verstanden, kann es aber auf Grund mangelnder Kenntnisse nicht selber umschreiben
Zuletzt geändert von BlackJack am Montag 13. Juni 2016, 17:39, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Anaconda2016
User
Beiträge: 11
Registriert: Dienstag 5. April 2016, 13:07

Re: Random Liste für verschiedene Gruppen erstellen/Präferenzenliste

Beitragvon Anaconda2016 » Samstag 18. Juni 2016, 14:04

Hallo nochmal, funktioniert folgendes Programm, oder habe ich einen denkfehler? als eingabe sind n und a integers von 100 bis 5, n= anzahl der studenten und a= anzahl der schulen
  1. A = []
  2.  
  3.     capacity = n/a + 1
  4.     if n % a == 0:
  5.         capacity = n/a
  6.  
  7.     Q = [capacity] * a
  8.  
  9.  
  10.     school_grid, student_grid = grid_fun(n, a)
  11.      s2d_map = student_to_district_map(school_grid, student_grid)
  12.  
  13.    
  14.      
  15.        r1= {}
  16.        r2={}
  17.        r3={}
  18.        r4={}
  19.        r1=n/4
  20.        r2=n/2
  21.        r3=3*n/4
  22.        r4=n
  23.        for school in range(a):
  24.             rank = {}
  25.                 for student in range(n):
  26.                     if student <= r1:
  27.                             rank[student] = 0
  28.                         if student <=r2:
  29.                             rank[student] = 0.25
  30.                      if student <=r3:
  31.                             rank[student] =0.75    
  32.                      else :
  33.                              rank[student] = 1
  34.    
  35.        
  36.                 A.append(rank)
  37.      if VERBOSE:
  38.         print 'School Priorities'
  39.         printS(A)
  40.         print 'Capacities:', Q
  41.        
  42.  
  43.     return A, Q, [s2d_map, school_grid, student_grid]


also hier würden die Studenten in 4 rankringgruppen aufgeteilt werden und das ganze wird in der Matrix A gespeichert, richtig?
Zuletzt geändert von BlackJack am Samstag 18. Juni 2016, 20:54, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Anaconda2016
User
Beiträge: 11
Registriert: Dienstag 5. April 2016, 13:07

Re: Random Liste für verschiedene Gruppen erstellen/Präferenzenliste

Beitragvon Anaconda2016 » Freitag 8. Juli 2016, 14:56

hat sich erledigt, beiträge können gelöscht werden

Zurück zu „Wissenschaftliches Rechnen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder