Einführende Beispiele - 1-Wellen-Optimierung

In diesem Kapitel werden heranführende Beispiele zur 1-Wellen-Optimierung präsentiert, also wenn der Spieler einen General so bestücken will, dass er ein Lager in einer Welle möglichst optimal besiegt.

## Beispiel 1WO-1: Krähenfüße und Deckschrubber

Die Fragestellung lautet nun nicht mehr, welches Ergebnis ein Kampf hat, wenn ich ein Lager X mit den Truppen Y angreife. Die Fragestellung lautet nun:

***Mit welchen Truppen muss ich meinen General bestücken, um bei einem Angriff auf Lager X möglichst wenig Verluste einzufahren?***

Dazu haben wir die Möglichkeit, im Centurion einen Optimierungs-Job mit einer Welle zu definieren und loszutreten. „Job ==> Optimierung…“ oder der entsprechend Knopf in der Schaltzentrale öffnen das entsprechende Fenster dafür:

Da auch dies ein heranführendes Beispiel ist, werden wir uns nicht mit allen Eingabefeldern befassen, sondern nur mit den essentiellen. Sie ähneln denen einer Simulation, aber es gibt kleine/feine Unterschiede.

Zunächst geben wir wie in einer Simulation das Lager an. Im Screen Shot oben ist das bereits geschehen. Auch hier ist natürlich eine Auswahl über Abenteuer und Lager-Liste möglich. Ebenfalls wie bei einer Simulation legen wir den General fest, mit dem wir angreifen wollen. Auch das ist oben bereits zu sehen.

Das „Truppen:“ Feld sieht nun zwar genauso aus wie bei einer Simulation, aber es erwartet doch eine andere Eingabe: Wir wollen ja nicht vorgeben, mit welchen Trup¬pen wir angreifen, sondern es soll ja gerade ermittelt werden, welche Kom¬bination die Beste ist. Anstatt so etwas einzutragen wie „100R;100AB“ müssen wir nun vorgeben, welche Truppen uns prinzipiell für den Angriff zur Verfügung stehen. Daraus wird sich Centurion dann bedienen und einen optimalen Vorschlag machen.

Angenommen wir haben beliebig viele Rekruten R und Armbrustbogenschützen AB verfügbar, die eingesetzt werden könnten. Jedenfalls mindestens so viele wie die Kapazität des Tav beträgt, also 200. Wenn wir nun in das „Truppen:“ Feld eintragen:

so drücken wir mit der Wildcard „\*“ aus, dass Centurion hier beliebig agieren kann. Alles zwischen 0 und 200 ist möglich. Das eröffnet beliebige Kombinationsmöglichkeiten wie 10R;5AB oder 0R;200AB oder 200R;0AB. Centurion weiß, dass sol¬che Kombinationen wie 0R;0AB oder 100R;200AB nicht zulässig sind, denn man muss mindestens eine Einheit haben höchstens aber so viele wie die Kapazität des Generals.

Weitere Felder ignorieren wir für den Moment. Jetzt schick den Auftrag los und warte ab, bis der Job im Status „fertig“ angekommen ist. Das kann schon ein paar Sekunden dauern, denn so eine Optimierung ist ein deutlich komplexerer Vorgang als eine Simulation. Irgendwann ist es aber soweit und über „Details…“ erfahren wir wieder das Ergebnis:

αO-C v1.3 12-Apr-2019 10:41:48 (PV 24/05/2018 in-game changes)
45R;Tav ==> 4,6EP/PLVMix, 8,64PLVMix, [60-60,0-80]s Dauer, [6-8,6-13]PLV, PlrDd [6-8,6-13]R, 40EP
44R;Tav ==> 4,6EP/PLVMix, 8,64PLVMix, [60-60,2-80]s Dauer, [5-8,6-12]PLV, PlrDd [5-8,6-12]R, 40EP
46R;Tav ==> 4,6EP/PLVMix, 8,66PLVMix, 60s Dauer, [6-8,7-12]PLV, PlrDd [6-8,7-12]R, 40EP
-Camp=20KR;20DS;RLL -Attack=\*R;\*AB;Tav

Die erste Zeile ist eine informative Kopfzeile, die letzte ist die sogenannte Command Line. Interessant sind die 3 Zeilen dazwischen. Wir bekommen 3 Simulationsergebnisse, die die 3 besten Lösungen darstellen, die gefunden worden sind. Wir konzentrieren uns einfach auf die „allerbeste“, das ist immer die erste Zeile, also in unserem Fall die Konfiguration „45R;Tav“. Die dahinter angegebenen Informationen kennen wir bereits vom Simulator. „100% Siege“ ist hier weggelassen worden. Wären es weniger, würde es aber dastehen.

Das Ergebnis der Optimierung ist also eine Empfehlung des Centurion, mit der Belegung „45R;Tav“ anzugreifen. Was dabei zu erwarten ist, steht dahinter. Damit ist der Optimierungsauftrag erfüllt.

Nicht immer hat man unbegrenzt Truppen zur Verfügung. Statt der Wildcards „\*“ kann man auch Einschränkungen vornehmen. Erstelle einen Job, der dem ersten gleicht, außer dass er folgendes verwendet: „0-10R;0-200AB“. Wir wollen also die Anzahl der verfügbaren Rekruten drastisch begrenzen. Vielleicht haben wir in un¬se¬rem Abenteuer nur noch 10 übrig und können nicht so schnell für Nachschub sorgen:

αO-C v1.3 12-Apr-2019 10:43:45 (PV 24/05/2018 in-game changes)
9R;36AB;Tav ==> 0EP/PLVMix, 7.324,29PLVMix, [60-69,9-80]s Dauer, [1.004-6.497,2-13.993]PLV, PlrDd [5-5,7-8]R;[1-6,5-14]AB, 40EP
…
-Camp=20KR;20DS;RLL -Attack=0-10R;0-200AB;Tav

Wie man leicht erkennt wurde die Einschränkung eingehalten. Die Empfehlung lautet nun „9R;36AB“, verursacht aber natürlich mehr Einbußen als vorher. Wir müssen mit dem Verlust von bis zu 14AB rechnen, im Schnitt 6,5.

Reduziere nun die verfügbaren AB auf 18, sodass wir nun noch maximal 10R und 18AB zur Verfügung haben:

αO-C v1.3 12-Apr-2019 10:45:14 (PV 24/05/2018 in-game changes)
10R;18AB;Tav ==> 87% Siege, 0EP/PLVMix, 10.988,92PLVMix, [40-86,2-120]s Dauer, [9-10.385,5-17.992]PLV, PlrDd [8-9,9-10]R;[0-10,4-18]AB;[0-0,1-1]Tav, [25-39,5-40]EP, EnmDd 20KR;[5-19,5-20]DS;[0-0,9-1]RLL
…
-Camp=20KR;20DS;RLL -Attack=0-10R;0-18AB;Tav

Die Lösung wirft alle Truppen an die Front: „10R;18AB“, kann aber nur in 87% aller Fälle mit einem Sieg aufwarten.

Wir erinnern uns, dass wir ja noch 20 Milizen haben, die wir mitschicken können. Also 0-10R;0-20M;0-18AB:

αO-C v1.3 12-Apr-2019 10:46:01 (PV 24/05/2018 in-game changes)
10R;20M;Tav ==> 2,5EP/PLVMix, 15,78PLVMix, 80s Dauer, [7-14,2-27,5]PLV, PlrDd [7-10,0-10]R;[0-1,2-5]M, 40EP
…
-Camp=20KR;20DS;RLL -Attack=0-10R;0-20M;0-18AB;Tav

Das spart nun wieder Verluste bei den AB. Die Lösung „10R;20M“ verliert maximal 10R und 5M. Vielleicht ist aber aufgefallen, dass die Rechnung nun etwas länger gedauert hat… 3 Truppenarten, mehr Möglichkeiten, größerer Suchraum, mehr Arbeit für den Centurion.

## Beispiel 1WO-2: Einen Lock, einen Lock, mein Königreich für einen Lock!

Im Beispiel 1WO-1 hat Centurion so optimiert, dass die Verluste möglichst gering ausfallen. Das ist aber manchmal nicht die Maxime, sondern zum Beispiel die Kampflänge. Man kann die Kampflänge maximieren wollen, zum Beispiel um einen Lock zu haben der ordentlich lange durchhält. Oder man kann die Kampflänge minimieren wollen, damit ein Angriff zu Ende ist bevor der Lock fällt. In diesem Beispiel hier optimieren wir einen Lock mit einer Welle.

Wir wählen dazu beispielhaft aus dem Betrogenen Schneider das vorletzte Lager im ersten Sektor. Im Centurion firmiert es unter der Bezeichnung „Betrog#22“. Es ist zweckmäßig, den Tavernengeneral einzusetzen, denn er kämpft 20s pro Runde.

Wir gehen im Hauptfenster über „Job ==> Optimierung…“ oder den entsprechenden Knopf in der Schaltzentrale, um einen neuen Optimierungsauftrag auszustellen. Im Screen Shot unten links mit der Hauptseite ist schon alles ausgefüllt. Wir widmen aber noch etwas Aufmerksamkeit dem Feld „Ziel“ auf der Seite der Optionen:

Hier wurde der Wert umgestellt auf „Lock“. Damit geht Centurion in einen Modus, wo im Wesentlichen die Dauer des Kampfes maximiert wird. Wir erhalten also Ergebnisse, die nicht die Verluste minimieren, sondern möglichst lange an¬dau-ern. Übrigens: Centurion merkt sich diese Einstellung „Lock“. Wenn Du das nächste Mal dieses Fenster aufmachst, ist „Lock“ bereits voreingestellt. Will man dann wieder Ver¬luste minimieren, muss man erneut auf „Sieg“ oder „Sieg - effizient“ zurückstellen.

Die Einschränkung der Truppen auf \*S;\*E;\*K geschieht im Wesentlichen der Laufzeit wegen. Normalerweise würde man mit der vollen Auswahl \*R;\*M;\*S;\*E;\*C;\*B;\*LB;\*AB;\*K arbeiten.

αO-C v1.3 12-Apr-2019 11:40:18 (PV 24/05/2018 in-game changes)
19S;172E;8K;Tav ==> [120-134,7-180]s Dauer, [146.015,5-162.944,6-179.981,5]PLV, PlrDd 19S;[146-162,5-172]E;[0-0,4-8]K;[0-0,0-1]Tav, [1.896-2.154,9-2.160]EP, EnmDd [158-179,6-180]Wil;[0-1,0-1]WHM
…
-Camp=Betrog#22 -Objective=Lock -Attack=\*S;\*E;\*K;Tav

Am Ergebnis interessiert natürlich vor allem die Kampfdauer, deshalb steht sie auch ganz vorn. „[120-134,7-180]s Dauer“ besagt, dass von den 1000 Si¬mu¬la-tionen der kürzeste Kampf 120s lief, der längste 180s. Im Durchschnitt sind 134,7s zu erwarten. Da dieses Ergebnis die Lösung der Optimierung ist bedeutet das auch, dass es keine andere Angriffskonfiguration gibt, die garantiert länger läuft als 120s.

Wenn man es nicht eilig hat empfiehlt es sich, für Locks die Anzahl der Iterationen hochzusetzen, weil man relativ sicher sein will, dass die 120s nicht doch einmal unterschritten werden. Bei einer Verdopplung der Iterationszahl kann man erwarten, dass der Centurion auch etwa doppelt so lange brauchen wird. Alternativ kann man auch mit 1000 Iterationen Optimieren und zur Absicherung die erhaltene Empfehlung mit deutlich mehr Iterationen noch einmal als Simulation laufen lassen. Erhält man dann dieselbe Mindestkampfdauer, hat man ein gutes Gefühl.

Ich habe mal die Optimierungen mit verschiedenen Iterationszahlen laufen lassen, hier sind die Empfehlungen, die dabei rauskamen:

 1000x: 19S;172E;8K;Tav ==> [120-134,7-180]s Dauer

```
3000x: 12S;180E;6K;Tav ==> [120-141,2-160]s Dauer

```

10000x: 12S;180E;6K;Tav ==> [120-141,2-160]s Dauer

Diese Unterschiede sind normal und durch die im Kampfsystem eingebauten Zu¬fallsaspekte bedingt. Ich würde alle Konfigurationen mit gutem Gewissen spielen. Wenn man sie schon gerechnet hat, dann natürlich die mit der 10000er Iterationszahl.

## Beispiel 1WO-3: Mehrere Lager mit einem Angriff

Manchmal möchte man mit einem General in einem Marsch mehrere Lager angreifen und besiegen, ihn also absichtlich vorher ablenken und dann weiterlaufen lassen. Das will man natürlich nur, wenn der Mehrfachangriff nicht deutlich teurer ist als die Einzelangriffe. Wenn das aber gegeben ist, spart man so Zeit. Mit dem Centurion kannst Du nun ermitteln, was die beste Konfiguration ist, um mit einem bestimmten General eine Abfolge von Lagern anzugreifen, ohne dass er dabei zur Garnison zurückkehrt.

Ein Beispiel sind die Lager 21, 22, 23, 24 im Abenteuer „3. Dieb“. Angenommen, wir wollen sie in dieser Reihenfolge alle auf einmal mit einem Vargus angreifen. Dann kann Centurion uns dafür eine Empfehlung geben, indem wir die Lager alle auf einmal auswählen:

Wichtig ist, dass wir die Lager in der richtigen Reihenfolge aus der Drop-Down Liste auswählen bzw. in das Eingabefeld mit Hilfe der „+“ Notation tippen. Wenn diese Reihenfolge nicht mit der übereinstimmt, in der die Angriffe im Abenteuer tatsächlich passieren, kann das Ergebnis völlig anders aussehen!

Auf jeden Fall sehen wir, dass hinter dem „#“ in der Camp Notation nicht nur die Bezeichnung eines einzelnen Camps stehen kann, sondern eine durch „+“ verbundene Abfolge von Camps, die in genau so auch in die Optimierung einfließen.

Was bringt das Ganze nun? Hier einmal Auszüge aus den Ergebnissen für verschiedene Lager-Kombinationen. Wenn du die folgenden Auszüge nachvollziehen willst, solltest du die Lager 21 bis 24 einzeln und dann die jeweiligen Lagergruppen 21+22, 21 bis 23 und 21 bis 24 optimieren lassen (7 Optimierungen insgesamt).

Hier zunächst ein Vergleich an Hand der Lager 21 und 22, in denen nur die Verluste PlrDd betrachtet werden.
#21: 79.24PLVMix, PlrDd [11-11.83-12]BSK

#22: 0PLVMix, PlrDd none

Der Einzelangriff aus #21 kostet im Mittel 11,83BSK, der auf #22 nichts.

#21+22: 82.28PLVMix, PlrDd [10-12.28-16]BSK;[0-0.00-1]GSS

Als „Serienangriff“ kosten die beiden Lager also insgesamt ca. einen halben BSK mehr als die Einzelangriffe. Bei den jeweils ungünstigsten Ergebnissen beträgt der Unterschied 16-12=4 BSK und einen GSS.

Alle weiteren Auszüge zum selbst vergleichen:

#23: 52.25PLVMix, PlrDd [7-7.80-8]BSK

#24: 0PLVMix, PlrDd none

#21+22: 82.28PLVMix, PlrDd [10-12.28-16]BSK;[0-0.00-1]GSS

#21+22+23: 146.32PLVMix, PlrDd [19-21.83-25]BSK;[0-0.01-3]GSS

#21+22+23+24: 152.06PLVMix, PlrDd [20-22.69-25]BSK;[0-0.01-2]BSS

#21+22+23 kostet reichlich 2BSK mehr und #21+22+23+24 kostet reichlich 3BSK mehr. Nun mag es Spieler geben, die bereit sind, das zu investieren.

Wer übrigens mit dem Wert PLVMix nicht vertraut ist, der sei auf die Seite „Grundlagen der Kampfoptimierung“ verwiesen. Es handelt sich um ein fortgeschrittenes Thema. Grundsätzlich genügt es erst einmal zu wissen, dass bei einer verlustorientierten Optimierung ein kleiner PLVMix besser ist als ein großer.