Größtmöglichstes Produkt < Sonstiges < Hochschule < Mathe < Vorhilfe
|
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.(noch nicht)
Hallo.
Ich habe hier ein Videospiel, bei dem sich der Gesamtschaden in etwa so zusammenfassen lässt:
Gesamtschaden = Basisschaden * Kritischer Schaden(bei 100prozentiger kritischer Trefferchance) * Schadensbonus
Der Basisschaden setzt sich zusammen aus Schadensboni von Edelsteinen und sonstiger Rüstung, und der kritische Schaden ebenfalls. In Zahlen sieht das ganze so aus:
Gesamtschaden = (104888 + 20494) * (18,143 + 1,245 + 1) * (1,046 + 1)
Dabei stehen 104888 und 18,143 in Abhängigkeit zueinander, da diese Werte jeweils von Edelsteinen kommen. Nun ist es möglich diese Edelsteine so anzupassen, dass man zum Beispiel Schaden in kritischen Schaden Wandeln kann, und umgekehrt. Der Gewinn hält sich minimal, aber ich hätte gerne eine Formel zum optimieren. 70 Schaden scheint 1% kritischen Schaden zu entsprechen. Den kritischen Schaden und den Schadensbonus habe ich hier ohne % angegeben.
Mit % würde das ganze so aussehen:
Gesamtschaden = (104888 + 20494) * (1814,3% + 124,5% + 100%) * (104,6% + 100%)
Die Werte sollen nicht veränderbar sein. Nur 104888 und 1814,3% sind veränderbar, und zwar im Verhältnis 70:1%.
Allerdings muss die Summe aus 104888/70 und 1814,3%/1% immer gleich bleiben also 1498,4 + 1814,3 = 3312,7
Die 3312,7 entsprächen dann einer Art Gesamtwert der aus den Edelsteinen kommt.
Normalerweise könnte man für ein größtmöglichstes Produkt einen Mittelwert bestimmen, z.B. wenn man einen Gesamtwert von 10 hätte:
2*8=16;
3*7=21;
4*6=24;
5*5=25;
6*4=24;
Also (A+B)/2=5
Aber in diesem Fall gibt es ja noch Summanden, Prozente und den Faktor 70, der nur 2 der Summanden betrifft. Außerdem mag 1% zwar 70 Schadenspunkten entsprechen, aber ich kann einen % nicht über Schadenspunkte ausdrücken, denn er steht ja nur in direktem Zusammenhang mit dem Basisschaden. Der einfachste Lösungsweg wäre natürlich, wenn ich über ein Programm oder über den Rechner z.B. durch Probieren den einen Wert um (70 oder 700 oder 7000 etc.) erhöhe bzw. verringere und den anderen um (1% oder 10% oder 100% etc.) reduziere bzw. erhöhe. Bloß hat das leider mit Mathematik nichts zu tun.
Kann ich über einen mathematischen Weg optimale Werte für ein möglichst großes Produkt finden, und wenn ja, wie ?
|
|
|
|
Hallo,
ein nützliches Stichwort in diesem Fall dürfte "lineare Optimisierung" sein!
|
|
|
|
|
Ok, ich hab das jetzt irgendwie doch über eine quadratische Gleichung hingekriegt. Ich wollte das mit der linearen Optimierung ausprobieren, aber ich habe ja keine Nebenbedingungen außer
z(x,y) = (70x + 20494) * (y + 1.245 + 1) * (1.046 + 1) -> Max!
x + y = 3312.7
y = 3312.7 - x
also habe ich für y x eingesetzt
z(x,y) = (70x + 20494) * (3312.7 - x + 1.245 + 1) * (1.046 + 1) -> Max!
und das ganze direkt über Geogebra lösen lassen anstatt Fehler beim ausmultiplizieren zu riskieren.
Es kamen aber komische Werte raus, dann fiel mir der Teil mit den Prozenten auf, den habe ich noch angepasst:
z(x,y) = (70x + 20494) * ((3312.7 - x)/100 + 1.245 + 1) * (1.046 + 1) -> Max!
Diesmal bekomme ich bessere Werte. Ich bin wohl lediglich ins stutzen gekommen, weil der maximal erreichbare Wert so gering erschien. Im Spiel, um das es geht, haben viele nämlich noch sehr viel höhere Werte, und ich kann mir kaum noch weitere Methoden vorstellen, um meinen eigenen Schaden weiter anzuheben.
Ich habe das ganze auch nochmal über die Ableitung gemacht, damit ich auch den mathematischen Weg habe:
T = (143,22x + 41930,724) * (35,372 - 0,01x)
T = [mm] -1,4322x^2 [/mm] + 5065,97784x - 419,30724x + 1483173,569328
T = [mm] -1,4322x^2 [/mm] + 4646,6706x + 1483173,569328
T' = -2,8644x + 4646,6706
0 = -2,8644x + 4646,6706
x = 4646,6706/(2,8644) = 1622,214285714286
Offensichtlicherweise ist das ganze unschön, da ich je nach Programm(Windows Rechner, GeoGebra) zwischen Komma und Punkt wechseln muss. Jedenfalls hat sich das Thema damit fürs erste erledigt, und ich bin froh, dass ich erlerntes Wissen so anwenden kann, dass es auch einen Sinn ergibt. Ich hoffe ich kann den Punkt irgendwie grün färben, damit man sehen kann, dass sich das Thema erledigt hat.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:09 Mi 17.04.2019 | Autor: | Fulla |
Hallo askquestion,
ich sorge mal dafür, dass deine Frage auch wirklich als beantwortet gilt und stelle den Status entsprechend ein.
Aber ich möchte auch etwas dazu beitragen.
Wenn wirklich nur die zwei Werte variabel sind und so voneinander abhängen, wie du beschreibst, kannst du einen der beiden z.B. als [mm]x[/mm] bezeichnen und den anderen dadurch ausdrücken.
Das hast du ja offensichtlich schon versucht - in meinen Augen aber nicht ganz richtig. Ich denke, das liegt daran, dass du Angaben in Prozent mit "normalen" Zahlen mischst.
Ich habe mir folgendes überlegt:
Offenbar gilt:
[mm]\frac{104888}{70} + \underbrace{1814.3}_{:=x}=3321.7.[/mm]
Ich setze [mm]x:=1814.3[/mm].
Dann folgt nach Umformung:
[mm]104888=70\cdot (3321.7-x)[/mm].
Das führt dann zu der zu maximierenden Funktion
[mm]f(x)=(70(3321.7-x)+20494)\left(\frac{x}{100}+2.245\right)\cdot 2.046[/mm]
Ableiten und gleich Null setzen liefert [mm]x=1690.471429[/mm], wodurch die Variable in der ersten Klammer deiner ursprünglichen Gleichung [mm]=113556[/mm] sein muss.
Um welches Spiel handelt es sich denn genau? Vielleicht kann man über die offizielle Website oder Foren mehr über die Schadensberechnung herausfinden...
Lieben Gruß,
Fulla
|
|
|
|
|
Also das Spiel heißt Trove. Über die Seite wird man wohl kaum was herausfinden können. Andere Spieler haben sicherlich hier oder da einiges an Schriftgut hinterlassen, aber es würde wahrscheinlich nicht ausreichen mein mathematisches Verständnis zu verbessern, selbst wenn es auf deutsch formuliert wäre.
Aber zurück zum Thema - Die von uns jeweils verwendeten Werte sind ja vertauschbar, also x und (3321.7 - x):
f(x) = (70 (3321.7 - x) + 20494) (x / 100 + 2.245) 2.046
f(x) = (70x + 20494) ((3321.7 - x)/ 100 + 2.245) 2.046
Wir berechnen nur jeweils entweder kritischen Wert oder Schadenswert. In meinem Fall ist es dann wohl der kritische Wert, wie ich vermute.
Mein GeoGebra zeigt für f(x) = (70 (3321.7 - x) + 20494) (x / 100 + 2.245) 2.046 allerdings ein Maximum bei x = 1695.
3312,7-1622 = 1690,7
Das heißt bei meinem GeoGebra wird wohl ein Rundungsfehler vorliegen oder sonstiges. Die Ableitung werd ich nachher nochmal für mich selber nachrechnen zur Sicherheit. Ach ne, ich seh den Fehler. Der Gesamtwert war 3312,7, also müsste es heißen:
f(x) = (70 (3312.7 - x) + 20494) (x / 100 + 2.245) 2.046
f(x) = (70x + 20494) ((3312.7 - x)/ 100 + 2.245) 2.046
Dann zeigt mein GeoGebra auch 1690,49, welches schon eher mit den Zahlen übereinstimmt.
Aber noch einmal zur Sicherheit die Ableitung:
f(x) = (70 (3312.7 - x) + 20494) (x / 100 + 2.245) 2.046
f(x) = (231889-70x+20494)(0,01x+2,245)2,046
f(x) = (252383-70x)(0,01x+2,245)2,046
f(x) = (516375,618-143,22x)(0,01x+2,245)
f(x) = [mm] 5163,75618x+1159263,26241-1,4322x^2-321,5289x
[/mm]
f(x) = [mm] -1,4322x^2+4842,22728x+1159263,26241
[/mm]
f'(x) = -2,8644x+4842,22728
0 = -2,8644x+4842,22728
2,8644x = 4842,22728
x = 1690,485714285714
Somit sind sämtliche Unstimmigkeiten auf Rundungsfehler, das betrachten des Edelsteinschadens speziell(in meinem Fall nahm ich irgendeinen der Werte, da ich mich erst sicher fühle, wenn ich ein realistisches Ergebnis sehe) bzw. des kritischen Schadens der Edelsteine, und zuguterletzt auf den Tippfehler 3321,7 statt 3312,7 zurückzuführen.
Also danke für die aktive Beteiligung. Ich hoffe mal, dass ich niemanden mit den Banalitäten der heutigen Videospielindustrie ins Stutzen gebracht habe. Zweifelsohne ist das ganze fast schon zweckentrfremdet, denn Spiele sollen ja meist die angeborene Problemlöseeigenschaft des Menschen fördern, was von den meisten Pionieren ja sowieso schon fachmännisch zum Nachlesen gehandhabt wurde. Obendrein ist da noch die Ironie des Schaffens eines Problems, mit entsprechend zugehörigen Berechnungen, Chancen, usw. Es ist meiner Meinung nach bloß eine geeignete Plattform für die angewandte Mathematik und Informatik, da man sich eine entsprechende Optimum-Vorlage maßschneidern kann, vorsausgesetzt die Entwickler lassen soviele Unklarheiten in ihrem Spiel. Aber dort kommt dann noch die Krönung der Ironie, denn das Optimum als das meist-begehrte hat ja schon alle Pioniere dazu veranlasst eine gut geebnete Straße dafür zu bauen. Persönlich würde ich es trotzdem toll finden, das ganze irgendwie in ein überschaubares Programm für mich selbst mit einzubringen, aber bei so einem geringen Gewinn belass ich es dann lieber doch bei dem Mathe-Exkurs.
|
|
|
|
|
Den Schadensbonus kannst du weglassen (und auch kritische Trefferrate, da die ja 100% sein soll), der ist konstant. Wenn ich richtig gelesen habe willst du vergleichen ob/ab wann es Sinn macht Basisschaden vs Kritischer Schaden zu nehmen und in welchem Verhältnis du am meisten Schaden machst.
Was du anschauen musst (in einer Tabelle) ist folgendes: $D := B [mm] \cdot [/mm] K$
Wobei D der Gesamtschaden ist, B der Basisschaden (zu dem du auch den Schaden der Edelsteine rechnest und allgemein alles, was danach mit K verrechnet wird) und K dein Kritmultiplikator
Du wirst kein optimales Verhältnis finden, denn es existiert ohne Randbedingungen kein Maximum.
Generell kann man sagen dass wenn das eine bereits sehr viel höher ist als das andere, es Sinn macht das andere zu erhöhen. Entscheidend ist im Wesentlichen wie viel es im Spiel selbst kostet, das eine oder das andere zu erhöhen.
In der Regel hat man in solchen Spielen nur begrenzt Punkte bzw. Resourcen mit denen man diese Dinge erhöhen kann. Kennst du diese Begrenzungen, dann kannst du ein Optimum finden.
Um eine Tabelle führt hier in dieser Ausführung kein Weg herum.
|
|
|
|