Frage

sagen, ich habe eine Reihe von Schulenkoordinaten (n). Ich habe auch eine Reihe von Nachbarschaften, die Centroid-Koordinaten (n).

Ich weiß, wie viele Kinder in jeder Nachbarschaft sind, und sie werden als Haupt-, Mittel- oder High School kategorisiert. Also mit anderen Worten,

generasacodicetagpre.

Ich weiß, wie viele Flecken in jeder Schule verfügbar sind, das Format ist:

generasacodicetagpre.

Mein Ziel ist es, so viele Studenten wie möglich an einer Schule innerhalb eines bestimmten Radius abzustimmen. Es ist möglich (extrem wahrscheinlich), dass in meinen Berechnungen einige Schüler in der Schule sein werden.

was ich will: Identifizieren Sie, welche Nachbarschaft schulfreie Kinder und wie viele hat.

Mein aktueller Plan:

  • listen Sie alle Paarungen und entsprechende Entfernungen zwischen Schulen und Nachbarschaft in einem bestimmten Radius
  • auf
  • Bestell nach Abstand von der niedrigsten bis höchsten
  • Priorität basierend auf der Entfernung
  • Schlaufe über die Nachbarschaft in der Reihenfolge des Erscheinungsbildes (jede Nachbarschaft kann mehrmals mit einer bestimmten Schule in einem definierten Radius verbunden sein)
  • die entsprechende Schule mit Kindern aus der Nachbarschaft füllen
  • Entferne aufgenommene Flecken aus der Schulkapazität
  • Umzug zur nächsten Nachbarschaftsschule, ...

Als Beispiel:

  • sagen, dass Sie die folgende Reihenfolge erhalten:

    bestellen= [(Nachbarschaftsnachweis_2, school_7, distribut1), (Nachbarschaftsnachweiser, Schule_2, Entfernung2), (Nachbarschaftsfunktion_2, Schule_2, Entfernung3), (Nachbarschaftsnachweis_2, Schule_3, Entfernung4) ...]

Dann erhält schul_7 Kinder aus der Nachbarschaft_2. Nicht alle Kinder aus der Nachbarschaft_2 können in der Schule aufgenommen werden.

Dann erhält schul_2 Studenten aus der Nachbarschaft_5. Nehmen Sie nun an, dass school_2 für die mittlere Schulkapazität voll ist.

DANN DANN NEUEND_2 wird immer noch die Schüler versenden, und daher versucht, sie an school_2 zu schicken. Primar- und High School, kein Problem, sie sind jetzt alle versandt. Aber die Mittelschule ist voll.

Dann ziehen wir weiter zum nächsten Pairing, und school_3 bekommt die restlichen Schüler der Mittelschule aus der Nachbarschaft. Beachten Sie, dass, wenn die Entfernung4 höher war als der Grenzradius, diese Middle School-Studenten als Schulleiter eingestuft worden, da keine anderen Paarungen verfügbar sind.

Zusätzlich, wenn Nachbarschaft_4 der Grenzradius für jede Schule reicht, gelten alle ihre Kinder als schüler.

1) ist mein Algorithmus richtig?

2) Wie heißt dieses genaue Problem? Ich bin auf viele Punkte auf viele Punkte, kapazitierte Zuweisungsprobleme oder den "Validierung" -Teil des Standortproblems von Facility, aber nicht diese spezielle Variante aus irgendeinem Grund (wahrscheinlich schlechte Suchkäufe)

3) Wie kann ich das effizient machen, oder ist es so ziemlich vernünftig? (Effizienz ist nicht mein Hauptanliegen, aber einfache Korrekturen sind willkommen)

4) Habe ich neben der Fernsortierung andere Optionen? Technisch, in meinem Fall, in meinem Fall spielt die Entfernung nicht viel, um Priorität zu geben, es ist eher zufällig (oder sollte ich sagen, dass ich fair sagen soll) die Zuteilung basierend auf der Zeit der empfangenen Anwendung (unbekannte Daten). Meine Methode wird also wahrscheinlich eine 100% ige Zuteilung für eine Nachbarschaft zeigen, die sehr nahe an einer Schule in der Nähe eines Haufens von schulfreien Kindern in Farrer-Nachbarschaften ist, das jedoch im wirklichen Leben nicht erfüllt ist (nicht).

War es hilfreich?

Lösung

Dies kann als das Problem des Findens von einem Maximal passender in einem zweipartitischen Diagramm :Jedes Kind ist ein linker Scheitelpunkt, jeder Schlitz in einer Schule ist ein Rechtsscheiter, und es gibt eine Kante zwischen zwei Scheitelpunkten, wenn sie abgestimmt werden können.

In Ihrem Fall können Sie es effizienter mit maximal lösen.Ich werde die Details ausarbeiten lassen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit cs.stackexchange
scroll top