Rekursive Produktion |
| 25.10.2024, 13:53 | graugraugrau | Auf diesen Beitrag antworten » | ||||||||||
| Rekursive Produktion Es gibt eine Fabrik, die in je 20 sek 6 Güter herstellt. Die Produktionsmenge kann mit den produzierten Gütern erhöht werden. Das erste Leveln kostet 6 Güter. Jedes weitere Leveln kostet 1Gut mehr. Die Erhöhung der Produktion pro Level ist ein Gut. Man muß bedenken, daß beim Leveln möglicherweise noch nicht genug Güter produziert wurden. Die Frage: welches ist die kürzeste Zeit um 1200 Güter im Lager zu haben und wieviele Level werden gemacht. Meine Ideen: Ich habe bei der Aufgabe leider aufgegeben, wollte eine Gleichung erstellen, ist mir nicht gelungen |
||||||||||||
| 25.10.2024, 15:09 | Elvis | Auf diesen Beitrag antworten » | ||||||||||
Bei dieser Aufgabe aufgeben ist feige. Man muss nur systematisch für jeden Zeittakt alle Möglichkeiten aufschreiben. Wegen 1200/6=200 ist man spätestens nach 200 Zeitschritten fertig. Also liegt ein endliches Problem vor, das in endlicher Zeit lösbar ist. |
||||||||||||
| 25.10.2024, 15:18 | graugraugrau | Auf diesen Beitrag antworten » | ||||||||||
Das ist richtig. Das habe ich natürlich gemacht. Die Antworrt ist 43 Level, wenn ich mich nicht vertan habae. In 7 min sind die 1200 erreicht. Ich will aber eine Gleichung hierfür haben, und da bin ich bei dem möglichen leeren Lager kleben geblieben. |
||||||||||||
| 25.10.2024, 16:12 | IfindU | Auf diesen Beitrag antworten » | ||||||||||
Wenn ich es richtig verstehe, kannst du alle 20 Sekunden aufleveln, da die Kosten immer um 1 wachsen, aber auch die Produktion. Es ist immer besser direkt aufzuleveln oder für immer damit aufzuhören. Wenn wir mal aufleveln, brauchen wir Sekunden um aufzuleven, und wenn Sekunden um dann das Lager aufzufühlen. Definieren wir also , so ist die Zeit in Sekunden bei mal aufleveln danach das Lager aufgefüllt zu haben. Betrachten wir die kanonische reelle Fortsetztung, , so können wir die Ableitung bilden und sehen, dass ist. Das hat für genau einen Vorzeichenwechsel und ist am Anfang monoton fallend und danach monoton wachsend. D.h. man kann die Nullstelle der Ableitung betrachten. Wenn die Nullstelle eine natürliche Zahl ist, hat man das Mininum der Level gefunden. Wenn nicht, kann es aufgrund der Monotonie nur die benachbarten natürlichen Zahlen das Minimum erreichen. |
||||||||||||
| 26.10.2024, 08:08 | Elvis | Auf diesen Beitrag antworten » | ||||||||||
Meines Erachtens ist die Aufgabe unterbestimmt. 1. Vergeht Zeit durch Leveln ? 2. Wenn ja: Vergeht durch n mal Leveln ein mal Zeit oder n mal Zeit ? |
||||||||||||
| 26.10.2024, 09:21 | HAL 9000 | Auf diesen Beitrag antworten » | ||||||||||
Ein "brutaler" Weg, der die Erkenntnis von IfindU "Levelerhöhungen gleich alle am Anfang, später keine mehr" überhaupt nicht mit zu Rate zieht, wäre der folgende rekursive:
Bei Zielanzahl 12000 (übrigens mit Ergebnisschrittzahl 64) muss dazu die maximale Rekursionstiefe von Python massiv erhöht werden. Mir ist bewusst, dass dieses Vorgehen im vorliegenden Fall der reinste Overkill ist, aber es ist leicht anpassbar, sollten sich die Rahmenbedingungen derart ändern, dass die Erkenntnis von IfindU nicht mehr zutreffend ist. Das maximal erreichte Level habe ich oben nicht mitprotokolliert, kann man leicht nachrüsten - dieses Level ist übrigens bei 1200 Gütern nicht eindeutig bestimmt, d.h., es gibt mehrere mögliche Lösungen bei gleicher Schrittzahl 64. EDIT: Obiges alternativ als Variante mit explizitem Funktionswertcache (was ich mir von Finn_ abgeguckt habe):
|
||||||||||||
| Anzeige | ||||||||||||
|
|
||||||||||||
| 26.10.2024, 10:03 | graugraugrau | Auf diesen Beitrag antworten » | ||||||||||
Es vergeht durch das Leveln keine Zeit. Die erste Ableitung bringt 28,64 also 29 mal. Nur , da das ständige Leveln von den ersten 20 sek an immer den Vorrat aufbraucht sind wir auch bei Level 29 mit 0 im Lager ,oder? Level Produktion Levelkosten Lagerinhalt Zeit 0 6 6 0 0 1 6 6 0 20 2 7 7 0 40 |
||||||||||||
| 26.10.2024, 10:59 | graugraugrau | Auf diesen Beitrag antworten » | ||||||||||
Zum Programm: Wie finde ich mittels des Python3Programms von Dir , die minimalst benötigte Zeit? Und... Ich denke die Summe von 2 Gleichungen die 1200 ergeben könnte stimmen. Eine für das nichtleveln und mehrfach vergehende 20sek-Intervalle und die zweite mit leveln und das Aufsummieren der Güter. Daraus die Zeit als Minimum finden |
||||||||||||
| 26.10.2024, 11:04 | HAL 9000 | Auf diesen Beitrag antworten » | ||||||||||
Der Code basiert auf folgendem Rekursions-Gedanken: Entweder 1) führt man einen Schritt (Produktion von level Gütern) aus, oder 2) erhöht man das Level (was die vorhandene Güterzahl um die Anzahl level reduziert). Dieser Fall ist nur möglich, wenn man bereits genügend Güter produziert hat. Man nimmt nun die geringere Anzahl Schritte aus beiden Fällen. |
||||||||||||
| 26.10.2024, 11:06 | IfindU | Auf diesen Beitrag antworten » | ||||||||||
Genau. D.h. man levelt erstmal bis 28 oder 29 auf. Und dann muss man das ganze Lager füllen. Mit und Sekunden. Leider habe ich nicht beachtet, dass man ja alle 20 Sekunden nur neue Sachen bekommt. Weswegen man das auf das nächste Vielfache von 20 aufrunden muss, d.h. beide brauchen am Ende Sekunden. Edit: Bei deinen vorgeschlagenen 43 Level bräuchte man 1360 Sekunden, also etwa eine Minute mehr. |
||||||||||||
| 26.10.2024, 11:18 | HAL 9000 | Auf diesen Beitrag antworten » | ||||||||||
Sowohl mit 24-mal leveln sowie weiteren 40 Produktionszyklen a 30 Gütern, als auch mit 34-mal leveln sowie weiteren 30 Produktionszyklen a 40 Gütern landet man punktgenau bei 1200 Gütern nach den insgesamt 64 * 20 = 1280 Sekunden. Ebenso führen sämtliche Levelerhöhungen zwischen 25 und 33 zum Ziel, bei denen hat am Ende der 1280 Sekunden sogar noch etwas mehr als die benötigten 1200 Güter produziert. Das Maximum dieser Überzahl wird bei Level 29 erreicht: 35 Produktionszyklen a 35 Güter ergibt 1225 Güter, d.h. 25 mehr als nötig. |
||||||||||||
| 29.10.2024, 11:59 | graugraugrau | Auf diesen Beitrag antworten » | ||||||||||
Es gibt also einen Lösungsbereich. Um die Güter möglichst gering zu halten nimmt man dann am besten 24 mal leveln und 40 mal aufsummieren. Klasse. Danke |
||||||||||||
|
|
Verwandte Themen
| Die Beliebtesten » |
|
| Die Größten » |
| Die Neuesten » |
|
