Page 3 of 3
RE: The value of hexes and sea areas
Posted: Fri Nov 25, 2005 8:41 pm
by Shannon V. OKeets
ORIGINAL: hakon
Making the AIO robust vs sacrifices is a concern, obviously. It should be satisfied with +13 blitzes or +15 assaults in most cases, and use remaining units for other duties. Killing single units is usually very easy, though, if you can catch them outside of mountain/swamp terrain.
Breaking through the USSR defensive line is a good strategy for killing units. But if you treaten with breaking through in dangerous spots, a smart USSR player will retreat to a safer line asap. Even in russia there is enough rivers/cities/forest hexes etc to be able to stall germany quite effectively with a zoc defence. In order to use breakthroughs to kill units, you will often have to flip russian units. This is another reason for russia to constantly pull back in 41 and 42, as that will force you to spend your air missions on rebases instead of flipping russian units. This is why many players use italian air in russia.
Taking russian resources is nice, but not really that hurtfull to Russia (until you are able to take out caucasus, that is). By giving up european russia, the USSR looses almost as many red factory stacks as they loose resources, and the missing resources can often be made up by recieving resources from the UK. (Often through Persia). Loosing the army matters a lot more. If the army is conserved, Russia should be able to come back even if forced onto the Asian map, as long as they can keep the Caucasus/black sea area as well as the railroad to Archangel/Murmansk. And unless you kill a significant part of the Russian army, it is unlikely that you will come even that far.
Ok.
I note that using the Italian air force in Russia should be part of the AIO's bag of tricks.
What I get from the above is a second set of objectives for the German player. Usually most discussions run up to taking out Leningrad, Moscow, Kiev, Rostov, Sevastopol, and Stalingrad, and then hand waving begins about "the rest".
Perhaps the following sequence might provide orientation for the AIO:
1. Brest-Litovsk, Riga, Minsk, Lvov, Odessa
2. Batlic States, Smolensk, Kiev, up to Dneiper
3. Leningrad, Moscow, Kursk, Rostov, Crimea
4. Gorki, Stalingrad, up to Caucasus
5. Murmansk, Caucasus, up to Urals
6. Urals, Persia, Turkey (align)
I have left out some of the linkages between the groups, but they should be pretty obvious. I also am doing this from memory, so there might be better (and more) cities to place in each set of objectives.
The way the AIO would use these lists is to measure how far it is from each, what units are in its way, and what forces are needed to reach them. As it adds each objective to the notches on its belt, it would place another objective in the crosshairs (mixng metaphors). I think having 5 objectives active at one time is probably the most that can be handled.
RE: The value of hexes and sea areas
Posted: Mon Nov 28, 2005 2:32 pm
by hakon
ORIGINAL: Shannon V. OKeets
Ok.
I note that using the Italian air force in Russia should be part of the AIO's bag of tricks.
What I get from the above is a second set of objectives for the German player. Usually most discussions run up to taking out Leningrad, Moscow, Kiev, Rostov, Sevastopol, and Stalingrad, and then hand waving begins about "the rest".
Perhaps the following sequence might provide orientation for the AIO:
1. Brest-Litovsk, Riga, Minsk, Lvov, Odessa
2. Batlic States, Smolensk, Kiev, up to Dneiper
3. Leningrad, Moscow, Kursk, Rostov, Crimea
4. Gorki, Stalingrad, up to Caucasus
5. Murmansk, Caucasus, up to Urals
6. Urals, Persia, Turkey (align)
I have left out some of the linkages between the groups, but they should be pretty obvious. I also am doing this from memory, so there might be better (and more) cities to place in each set of objectives.
The way the AIO would use these lists is to measure how far it is from each, what units are in its way, and what forces are needed to reach them. As it adds each objective to the notches on its belt, it would place another objective in the crosshairs (mixng metaphors). I think having 5 objectives active at one time is probably the most that can be handled.
Using the italian air force in russia has it's costs, of course. It often leads to an italian surrender in 43. But that is another debate.
The objectives setup is interesting, though it looks a bit too politically focued, instead of actually valuing the strategic value of hexes.
Obvously, Minsk and Kiev should be rated very highly from 42 and after, while Moscow/Leningrad/Stalingrad should have a high rating from 43, and the AI should choose a strategy where it can hold at least 1 of the 3 for as long as possible. (Often, an assault on Leningrad can be a good idea during the 42/43 winter.)
Apart from these obvious cities, hexes with resources and crossing of rivers should be rated higher than the cities in the area. In particular, the AI should try to cross the Dnieper asap. Helping the AI to find a way to cross the river network north of Rostov is also easily more important than actually taking Rostov.
If the AI can actually overrun some blue factories before they can be railed out, that should also be given some priority.
Also, from your ordering of hexes, it looks like the AI has to start from eastern poland. Some people (like me) will always make sure to be in a position to be able to attack from Rumenia (ie. by dow-ing Yugoslavia on impulse 3 in S/O 39).
One of the big decisions for the AI is whether it should attemt to lengthen the front, or if it should try to keep it short. Generally, the attacker wants a longer front, as more space means more oportunities for attacks.
RE: The value of hexes and sea areas
Posted: Mon Nov 28, 2005 5:11 pm
by Shannon V. OKeets
ORIGINAL: hakon
ORIGINAL: Shannon V. OKeets
What I get from the above is a second set of objectives for the German player. Usually most discussions run up to taking out Leningrad, Moscow, Kiev, Rostov, Sevastopol, and Stalingrad, and then hand waving begins about "the rest".
Perhaps the following sequence might provide orientation for the AIO:
1. Brest-Litovsk, Riga, Minsk, Lvov, Odessa
2. Batlic States, Smolensk, Kiev, up to Dneiper
3. Leningrad, Moscow, Kursk, Rostov, Crimea
4. Gorki, Stalingrad, up to Caucasus
5. Murmansk, Caucasus, up to Urals
6. Urals, Persia, Turkey (align)
The way the AIO would use these lists is to measure how far it is from each, what units are in its way, and what forces are needed to reach them. As it adds each objective to the notches on its belt, it would place another objective in the crosshairs (mixng metaphors). I think having 5 objectives active at one time is probably the most that can be handled.
The objectives setup is interesting, though it looks a bit too politically focused, instead of actually valuing the strategic value of hexes.
Obvously, Minsk and Kiev should be rated very highly from 42 and after, while Moscow/Leningrad/Stalingrad should have a high rating from 43, and the AI should choose a strategy where it can hold at least 1 of the 3 for as long as possible. (Often, an assault on Leningrad can be a good idea during the 42/43 winter.)
Apart from these obvious cities, hexes with resources and crossing of rivers should be rated higher than the cities in the area. In particular, the AI should try to cross the Dnieper asap. Helping the AI to find a way to cross the river network north of Rostov is also easily more important than actually taking Rostov.
If the AI can actually overrun some blue factories before they can be railed out, that should also be given some priority.
Also, from your ordering of hexes, it looks like the AI has to start from eastern poland. Some people (like me) will always make sure to be in a position to be able to attack from Rumenia (ie. by dow-ing Yugoslavia on impulse 3 in S/O 39).
One of the big decisions for the AI is whether it should attemt to lengthen the front, or if it should try to keep it short. Generally, the attacker wants a longer front, as more space means more oportunities for attacks.
I did not intend for a political focus. If it seems that there is one, it is purely a coincidence.
Your references to years in the second paragraph above confused me. I didn't know if you were talking from the German or the USSR point of view (or both?) and whether the Barbarossa campaign had started in 1940, 1941, or 1942.
Crossing rivers is an excellent point and something I hadn't thought about as an objective for the AIO. The flip side is to hold rivers when defending. Resources and factories already have a CV value (both create BPs which have an average CV value based on their yield each production cycle). Both red and blue factories are valuable and the AIO measures their worth to both sides to determine the total value of a factory (or resource).
DOW on Yugoslavia so early is a good alternative for the AIO to use - sometimes, but not always(?). Odessa was in the first list and Kiev in the second. I think of the Rumanian based troops pushing in that direction.
Complete agreement on length of front being crucial. This is csomething the AIO can measure and based on the available units to each side can calculate the average strength per hex using various patterns (contiguous, everyother hex, every third hex). Flanking maneuvers and supply lines also get intertwined when evaluating this aspect of the tactical positioning. And of course our old friends: leaving sacrificial lambs and mopping up isolated units.
Getting back to rivers. It would be nice to have a generic routines that handled (1) crossing and (2) defending them. It is also possible to hard code how to get across certain rivers by giving specific hexes a higher value - unattractivce to me philosophically, but I am a pragmatist if nothing else.
RE: The value of hexes and sea areas
Posted: Mon Nov 28, 2005 6:27 pm
by hakon
Obvously, Minsk and Kiev should be rated very highly from 42 and after, while Moscow/Leningrad/Stalingrad should have a high rating from 43, and the AI should choose a strategy where it can hold at least 1 of the 3 for as long as possible. (Often, an assault on Leningrad can be a good idea during the 42/43 winter.)
Kiev, Minsk (1942) and Leningrad, Moscow, Stalingrad(43) are important mostly because of the USSR gearing benefits, and the value goes both ways. Both sets of cities have the characteristic that the value of holding one depends on the number of others that you hold. What year barbarossa was done does not affect this.
For Germany, holding Kiev is of no use unless you also hold Minsk. On the other hand, Moscow and Stalingrad do not matter very much if you already hold Leningrad.
The ability of the AIO to take these dependencies into account is pretty important, as Germany really needs to deny this extra gearing to Russia for as long as possible, while Russia needs to take back these cities asap. Spending an OC to take Leningrad is well worth it for Germany if Moscow/Stalingrad are out of reach, etc, while taking back Leningrad and Kiev have simmilar value for the USSR.
Something that I would imagine would be a bit hard for the AIO would be to choose one of these objectives in place of the others. A human player would typically try pretty hard to take out Leningrad in late 1942 if Moscow/Stalingrad could not be reached, even at the cost of giving up any attempts at the other two.
This kind of conditional value of hexes is also relevant on a smaller scale, especially behind rivers. For the side on the offensive, having ONE hex on the far side of dnieper could be worth a lot, while a second hex would be worth much less. On the other hand, taking that first hex away from germany after the crossing could be worth very much for the USSR, and could easily be worth flipping Zhukov, but if Germany has two hexes on the far side of the dnieper, taking back just one of them is not going to matter much.
I imagine that a lot of the strategies required for the AIO to make good decisions (ie good enough to be worth playing against sometimes), would have to be hard coded in a way. Not doing so would be like trying to create a chess AI without an opening book. And one of the key things to hard-code, is the location of the good defensive lines, both for the purose of breaching them and for holding them.
RE: The value of hexes and sea areas
Posted: Mon Nov 28, 2005 9:42 pm
by Shannon V. OKeets
ORIGINAL: hakon
Kiev, Minsk (1942) and Leningrad, Moscow, Stalingrad(43) are important mostly because of the USSR gearing benefits, and the value goes both ways. Both sets of cities have the characteristic that the value of holding one depends on the number of others that you hold.
...
Something that I would imagine would be a bit hard for the AIO would be to choose one of these objectives in place of the others. A human player would typically try pretty hard to take out Leningrad in late 1942 if Moscow/Stalingrad could not be reached, even at the cost of giving up any attempts at the other two.
This kind of conditional value of hexes is also relevant on a smaller scale, especially behind rivers. For the side on the offensive, having ONE hex on the far side of dnieper could be worth a lot, while a second hex would be worth much less. On the other hand, taking that first hex away from germany after the crossing could be worth very much for the USSR, and could easily be worth flipping Zhukov, but if Germany has two hexes on the far side of the dnieper, taking back just one of them is not going to matter much.
I imagine that a lot of the strategies required for the AIO to make good decisions (ie good enough to be worth playing against sometimes), would have to be hard coded in a way. Not doing so would be like trying to create a chess AI without an opening book. And one of the key things to hard-code, is the location of the good defensive lines, both for the purose of breaching them and for holding them.
Curiously enough, I was just proof reading the code on production increases this morning, so I found the answer to my question about the USSR cities there.
Deciding on one target city or doubling your chances by going after two (and forcing the opponent to defend both) is pretty easy to do. The boolean logic is simple enough. The only trick is to not imitate Hitler by going after everything and getting nothing. The relative strength of armies involved and the distance to go (plus terrain and time available) can all be measured. The only thing to look out for is not deviating from a plan too readily. I could see a human strengthening a section of the line at the expense of weakening another section of the line; thereby persuading the AIO to go one way, and then reversing things to get the AIO to oscillate between the two objectives.
The stuff about a first hex across a river versus two is also boolean logic and easily measured. Not really a problem for the AIO to detect (provided it can figure out what a river is and that it has two sides). Rivers with branches and loops come to mind as being problemmatic.
As to hard coding and chess book openings, I consider the introduction of the objective cities lists as fulfilling that role.
Though you might be right about having to define specific defensive lines, I am loathe to do so. They would add an element of brittleness to the AIO play. If the AIO is too predictable, then the human can use that to the AIO's disadvantage. Also it leaves open the question of what does the AIO do if the opponent doesn't follow the expected script? In chess, there are a lot of players who play very bizarre openings simply to force the opponent out of his book knowledge and leave him to his own mental abilities, without any background information on the position. If the AIO doesn't have sufficient abilities independent of hard coded scripts, then I (and purchasers of MWIF) will be disappointed.
RE: The value of hexes and sea areas
Posted: Tue Nov 29, 2005 7:57 am
by hakon
Generally, what you write sound quite reassuring. Still, I have my doubts as to any wargame AI's ability to evaluate the importance of hexes on it's own.
Basically, any defensive line is as strong as it's weakest link. Obvious to us, but I imagine that it can be hard for the AI to evalute 2-5 impulses ahead how to attack/defend this weakest point. Some of the defensive lines dont really have any weak points (dnieper in particular), so crossing will often have to be made at relatively low odds. (Combat engeneers can partly mitigate this). At the same time, if a breach is made, a counterattack by massing armor can be very effective. If Germany is not sufficiently determined, Russia can sometimes hold the dnieper throughout the war, and I imagine that the AI will have problem against such a strategy, unless specifically told that crossing the dnieper is worth taking bigger chances (or expending bigger resources) than most other moves.
You can find other examples of lines that have to be attacked at relatively low odds if you want to get through.
I do not suggest forcing the AI into specific patterns, simply influencing it in such a way that it knows what hexes are worth taking even when it cannot reliably get a positive exchange rate out of the attack in terms of units. Specifically, even a +7 blitz is ok against a the dnieper, if it is the first hex to be taken, while the German AI should avoid worse than +11 blitzes in most cases when hexes dont have strategic importance (or when the defender has very expensive units defending, like 2ARM + 1AT).
Basically, what I am suggesting, is giving all hexes behind a good defensive line an additional CV, and then create a trigger so that the CV value of these hexes is removed or halved when a breach is made, except the breach hex that should retain the CV value until the breach is widened. The CV value of hexes on the far side of such a line should be proportional to the agressiveness of the side wanting to cross it. In 43/44, for instance, it should be the west bank of the dnieper that should be evaluated highly.
Note that the value of getting across some rivers can be very high. For germany to get across the dnieper in may/june 41 instead of waiting for an outflanking force from the north, can easily be worth 1-2 infantry corps _per impulse_ saved.
RE: The value of hexes and sea areas
Posted: Tue Nov 29, 2005 9:43 am
by Shannon V. OKeets
I agree on your description of the problem; and the solution you propose is a solid possibility.
There are similar problems about making attacks at poor odds. Leningrad and Gibraltar, for instance. To motivate the AIO to make those attacks at low probability of success, I plan on using several carrots:
(1) a high CV value for the hex; sometimes this will be factories and/or resources, at other times it will be because the city is the capital or one of the production multiple cities we were discussing earlier.
(2) a strategic objective hex dictated by the strategic plan; this applies to Gibraltar, for example.
(3) a high CV value for hexes behind the current front line that forces attacking the front line to make any progress. This is how I had been thinking of breaching strong defensive positions. The idea is that the AIO knows it is on the offensive and can afford to lose units. If it cannot find a weak hex to attack, or someway to maneuver through or around the front line expeditiously, then it grits its teeth and makes one or more low odds attacks. Making sure the conditions justifying such an attack have been met is tricky, as exemplified by the little sample position in front of Moscow we just analyzed. Your solution was to breach the river line; mine (after much wishy-washy decision making) was to attack directly towards Moscow.
The AIO will not evaluate more than 2 impulses ahead ("If I do this and you do that, what does the position look like?"). Doing more is too complex, with not enough tangible benefit. For breaching a river line, for example, the AIO looks at the benefit of winning the low odds attack and holding the hex on the far side of the river until its next impulse. The evaluation of the new position (2 impulses ahead) should reveal that attacks can now be made at much better odds than currently. If instead, we are slogging our way through the Pripet marshes, then winning a low odds attack doesn't improve the odds for the next impulse (it might get us closer to an objective behind the enemy lines though). I mention the last for the British slogging through the jungles in Southeast Asia or Germany fighting its way through Switzerland.
Your last point about time is a real concern of mine. I continue to hope that we can come up with an acceptable burn rate (both when attacking and defending) for both the attacker and defender. For example, what is Germany willing to lose (in CVs) if it can cause so many losses to the USSR in 1941? This would be per impulse, per turn, and per hex row closer to an objective. Essentially, I want to measure the trade off between men, space, and time. Naive me.
RE: The value of hexes and sea areas
Posted: Sun Dec 11, 2005 1:15 am
by Incy
For the attack example:
1) I want to fiugure out witch hexes can be isolated:
1 & 7 can be directly isolated by moving
3 & 4 can be isolated by blitzing 4 & 5 respectively
2) I want to figure out which hexes are vulnerable to manouver(either isolated or restricted move by zoc):
1 & 7
3) I want to figure out wich blitzable hexes can be denied a retreat path.
7 can be denied by moving
3 & 4 can be denied by blitzing 4 & 5 respectively
4) I want to figure out what blitzable hexes can be retreated to exposed "kill"-locations)
none
5) I want to figure out if it's better to use ground strikes or ground support vs hexes.
4: each factor adds +0.2 odds for support, each factor on first bomber adds average +0.5 for strike
3: each factor adds +0.1 odds for support, each factor on first bomber adds average +0.25 for strike (more if I can round)
OOS3: each factor adds +0.1 odds for support, each factor on first bomber adds average +*some quite high number* for strike
7: each factor adds +0.1 odds for support, each factor on first bomber adds average +0.25 for strike
6: each factor adds +0.2 odds for support, each factor on first bomber adds average +0.5 for strike
etc. This calculation can be boiled down to a lookup table for number of units and total combat strenght in a hex (except isolatable hexes that must be computed manually)
6)I want to consider alternative priorities for my air.
I find that I want to keep 1 bomber back (high value for both defensive support & later use)
I find that for all hexes I prefer GS to support.
I request 3 air action limits but get only 2
I conclude I can use up to 2 strikes, and 1 support
7)I want to figure out what hexes are good targets. I do the matrix for all hexes, pluss I add extra rows for heses that can be isolated and can be flipped (One row for each flip variation). I calculate no air component, weak air component and max air component options and use a value that is a compromise
For the extra(flipped & isolatable) rows, I find I can get very good odds vs hexes 3, 6 and 7, not so good vs 1
I find attacks vs 3, 6, 7, OOS3 OOS6, and OOS 7 are worth consideration.
For OOS3 and OOS6 I have to look at the dependent attacks 4 and 5. I toss out 5->OOS6 and keep 4->OOS3
My final list is thus (4->3) 3, 7, 6
8) I want to consider hexes to try to flip.
From attack candidates:
Hexes that can be isolated (1,3,7) are prime candidates. I add priority to 3 & 7.
Hexes that can help me islolate other units(4). I add priority to 4
From all hexes:
Hexes that will not remain in viable defence positions if the opponent has to reform the line(3,7,6). I add priority to 3,7,6
Hexes that are vulnerable to manouvre(1,7). I reduce priority for 1 & 7
Hexes that are closer to my objective. I add priority to 4 & 3
9) All the values are veighted and I end up with high scores for 3 & 4, good scores for 7, OK score for 6. I split expected value of 2 strikes and 1 support between all 4 hexes according to score. This is how much air can be expected and will be the input number when choosing land attacks
10) I try to find consistent sets of attacks
I take each attack and recalculate the others taking away resources (other than air) used for the previous attack. Repeat recursively. The algorithm for this is probably a bit complex. Whenever dependent attacks are included the dependency should be computed first and its outcome spread should be fed into the dependee calculation
I end up with(highest scores first):
3,7
3,6
4,3,7
4,3
3
7
4,3,6
6
7,6,3
7,6
(in that order)
I cut off the list at some place (say 50% less than max score)
11) I square all scores (to get a top heavy score distribution).
For each hex I add up the score of all attack combinations they are part of.
12) I allocate strikes to the hexes with the highest sums. That would be 3, then 7
13) I conduct ground strikes (lets say I flipped 1 unit in hex 3 and none in hex 7).
14) I redo step 7,9,10,11 using actual results from the strikes (but still using same process for support)
Step 10 now yields this list:
3,6
3,7
4,3
3
4,3,6
4,3,7
6
7
7,6,3
7,6
15) I allocate support to the hexes with the highest sums. That would be 3, then 6, then 7. Because I multiply score with terrain modifier the order changes to 6,3,7
16) I compere the benefit of doing the comitted support to that of withholding the air for later use. I decide to commit.
17)I redo step 10 and still get the same order
18) I distribute armor. Hex 3 gets 1 to call blitz, hex 6 gets 5 leaving room for 1 losstaker and maxing the bonus
19) I move other land units
20) I declare the attacks:
Hex 3: 45 vs 10 = +9, choose blitz, final +9B
Hex 6: 27,5 vs 10 = +5,5, chose blitz(+2,5 rounded to 3), final +8,5B
21) I look at each attack and see I have no clearcut dependency.
22) I calculate potential choices tied to each attack.
For hex 3 I decide I always want to blitz if I can
For hex 3 I decide I might want to reorg some units if I flip 3 or more units
For Hex 6 I decide I always want to blitz if I can
For Hex 6 I can breakthrough. I find I want to breakhthrough 2 units into the clear hex to the SW. I find I want to breakthrough 1 unit into the forest hex to the SE if I have reorg to spare
For Hex 6 I find I might want to reorg if I flip 2 or more units
23) I position reorg and supply sources (HQ at where Ge stack 6 started)
24) I decide to roll hex 3 first because it gives input about the potential breakthrough in hex 6
25) I roll
In hex 3 and get 13 on a +9 -> 22=*/1B. I computed that I wanted to keep the blitz in step 22 and execute the advance after combat
In Hex 6 I get a 12 on a +8 -> †1/B. I go through step 2 again because the reorg situation has changed in attack vs hex 3. I assume no DIVs. I kill one MOT (the losstaker). I have to flip 2 units of the 5 remaining, but if I flip 2 units while
Breakthroughing I only have 3 unflipped remaining and will only flip 1 unit.
I leave 1 flipped unit in hex NE of 6, 1 in 6, flip 2 into forest SE of 6, and 1 i hex SW of 6. I use my 4-reorg HQ to reorg the two units in the forest + 1 stuka.