Rampant speculation: why did the Falcon 9 blow up?

I am not a rocket scientist, but I do like to think about engineering problems.

Here are the facts as we know them:

  • A Falcon 9 rocket blew up on the pad on September 1, 2016.
  • The rocket was undergoing a pre-launch static test, when it exploded.
  • According to SpaceX, the explosion originated in the second-stage liquid oxygen tank.
  • SpaceX uses a fancy super-cooled LOX mix, which allows more fuel in a given tank volume, which allows better performance.
  • Last summer, SpaceX had another rocket fail. The CRS-7 mission disintegrated in flight after the upper stage LOX tank burst. The internal helium tank (to maintain tank pressure) failed because of a faulty strut.

Now, for a rocket to fail during fueling, before engine firing—as the most recent Falcon failed—is very unusual. To my engineer’s mind, it suggests a materials problem in the LOX or liquid helium tanks, something failing in an unexpected way when deep-chilled. Crucially, the Falcon 9’s LOX tank experiences the coldest temperature (for a LOX tank) in the history of rocketry. Take that in combination with the failure on the CRS-7 mission: after their investigation, SpaceX switched to a new strut, which means new failure modes.

Mark my words (and feed them to me along with a heaping helping of crow, when I turn out to be wrong): this is another strut issue, be it faulty or just unsuited for the deep-cryo fuel in some other way.

Opentaflvecken: AI progress, continued

This is the second article in a series on AI improvements to OpenTafl. Read the first part here.

Welcome back! In the first article in this series, I talked about what was, essentially, groundwork. I did gloss over two rather large bugs in the course of that article, so I’ll give them a deeper treatment before I dive into the three topics I have planned for today.

First: I failed altogether to mention a bug that cropped up while I was writing continuation search, and which, in actuality, prompted my creation of the AI consistency test. I have a bit of code around for extension searches (that is, searches that begin from a non-root node), whose purpose is to revalue all of the nodes above it. I was calling that method much too frequently, even during the main search, which pushed child values up the tree much too quickly, and yielded incorrect alpha-beta values. The bounds converged too quickly, and I ended up cutting off search far too early, before the search had verified that a certain move was safe in terms of opponent responses. I ended up designing a miniature tafl variant, 5×5 with a total of four pieces all limited to a speed of 1, to diagnose the issue. As a game, it’s unplayable, but the game tree to depth 3 takes about 30 or 40 lines, and it’s easy to read the tree and see what’s happening. That’s what I did, and that’s how I found my problem.

Second: the incomplete tree search bug, which I covered in a small amount of detail in a footnote. This one dates back to the very beginning of the OpenTafl AI, and is likely the cause of most of its weaknesses and obvious misplays since then. As I said in the text and the footnote, it stemmed from the assumption that a partial search of, for instance, depth 6 was better than a full search of depth 5. The true trickiness of this bug is that a partial search of depth 6 is, indeed, often as good as a full search of depth 5. All alpha-beta AIs prefer to search the best moves first, so if OpenTafl gets a little ways into the tree, a partial search at depth 6 is good enough to match the full search at depth 51.

The really awful part of this bug, the one which made it the most inconsistent, was that OpenTafl doesn’t always manage to assign a value to every state when it’s out of time. The states have a magic number value marking them as having no evaluation: -11541. This value ended up in the game tree, and it’s a very tempting move for the defender. Subtrees the defender had not finished exploring would be chosen over subtrees it had, leading to inconsistent and incorrect behavior. The solution, as I mentioned in the previous post, was, when starting search to a new depth, to save the search tree to the previous depth. If the new depth doesn’t finish, OpenTafl uses the complete tree from the previous depth.

Time use planning
That brings me quite naturally to my first new topic for today: time use planning. Getting time usage correct is tricky. Obviously, we want to search as deeply as possible in the main tree, but we also want to stop as soon as we know we can’t search to the next depth. Since we discard incomplete searches, any time spent on an unfinished search is wasted. Unfortunately, ‘can we search to the next depth?’ carries with it a good deal of uncertainty. OpenTafl now uses a few tricks to determine whether it should attempt a deeper search.

First, it better takes advantage of previous searches to a given depth. Concrete information is hard to come by for AIs, and ‘how long did it take me to do this last time?’ is pretty darned concrete2. Whenever a search is finished to a given depth, OpenTafl stores the time that search took in a table and sets the age of that data to zero. Whenever a search to a given depth fails, OpenTafl increments the age of the data for that depth. If the age exceeds a threshold, OpenTafl invalidates all the data at that depth and deeper.

When determining whether to embark on a search to the next depth, OpenTafl first checks the table. If it has data for the desired depth, it compares its time remaining to that figure. If there is no data, it synthesizes some. Obviously, we know how long it took to get to the current depth: we just finished searching to it. OpenTafl takes two factors into account: first, it’s hard to search to the next depth; and second, it’s harder to search to an odd depth than an even depth3. If going to an even depth, OpenTafl assumes it’ll be 10 times as hard as the previous depth; if going to an odd depth, OpenTafl assumes 20 times. These numbers are extremely provisional. Sometime down the line, I want to write some benchmarking code for various depths and various board sizes to generate some data to make those factors resemble reality more closely.

Second, OpenTafl reserves some time for extension searches. Horizon search oftentimes changes the end result of the evaluation, and so OpenTafl seems to play better when it has time to run. About 15% of the total think time for any given turn is set aside for extension searches.

Search heuristics #1: the history heuristic
On to the heuristics! I implemented two for this release. The first, the history heuristic, is one of my favorites. Much like dollar cost averaging4 in finance, the history heuristic says something which is, on reflection, blindingly obvious about alpha-beta searches, but something that nevertheless is not immediately apparent. It goes like this: moves which cause cutoffs, no matter where they appear in the tree, tend to be interesting, and worth exploring early.

Consider the game tree: that is, the tree of all possible games. It fans out in a giant pyramid shape, ever widening, until all of the possibilities peter out. Consider now the search tree: a narrow, sawtoothed path through the game tree, approaching terminal states until it finally alights upon one. The search tree always examines a narrow path through the tree, because the full game tree is so overwhelmingly large. Since the search tree examines a narrow path, similar positions are likely to come up in many different searches, and in similar positions, similar moves are likely to cause cutoffs. Therefore, whenever a move causes a cutoff, we ought to keep track of it, and if it’s a legal move in other positions, search it earlier.

That’s about all there is to it: the bookkeeping is a little more complicated, since we have to do something to be sure that cutoffs high up in the tree are given as much weight as cutoffs lower toward the leaves (OpenTafl increments the history table by remainingDepth squared), but that isn’t especially important to understand the idea.

There are two variations on the history heuristic I’ve considered or am considering. The first is the countermove history heuristic. The history heuristic in its simplest form is very memory-efficient: you only need 2 \times dimension^4 table entries; OpenTafl’s table entries are simple integers. Even for 19×19 tafl variants, the total size is less than half a megabyte. There exists a more useful expansion of the history heuristic sometimes called the countermove-history heuristic, which involves adding another two dimensions to the table: save cutoff counts per move and preceding move. This allows for a closer match to the situation in which the cutoffs were previously encountered, and increases the odds of a cutoff, but it turns out the inefficiency is too great in tafl games. Chess, with its more modest 8×8 board, can afford to bump the table entry requirement up to 2 \times 8^8: it comes to about 33 million entries, or 60-some megabytes using an integer table entry. OpenTafl, which has to support everything from lowly brandub to the massive alea evangelii, needs, in the maximum case, 2 \times 19^8, or 34 billion table entries, which takes almost 70 gigabytes of memory. Most people aren’t going to have that to spare.

So I did some further reading on the subject, then came across another relation of the history heuristic: the relative history heuristic. It combines a plain history heuristic with something called the butterfly heuristic, which counts how many times a given position occurs in the tree. The relative history value of a state is its history heuristic value (the number of cutoffs it has caused) divided by its butterfly value (the number of times it has appeared in the tree). This makes the relative history heuristic a measure of the efficiency of a move: if a move appears ten times in the tree and causes ten cutoffs, it’s probably more interesting than a move that appears ten thousand times in the tree but only causes eleven cutoffs. I haven’t gotten around to it yet, but OpenTafl will probably include the relative history heuristic in a future AI release.

Search heuristics #2: the killer move heuristic
The killer move heuristic is the other heuristic I implemented for this release. The killer move heuristic is a special case of the history heuristic5, and turns out to be the single greatest improvement in OpenTafl’s strength I’ve implemented to date6.

What is it, then? Simply this: for each search, it tracks the two first moves which caused a cutoff at a given depth, along with the most recent move to do so, and plays those first whenever possible. See? Simple. It calls for very little explanation, and I’m already at nearly 2,000 words, so I’ll leave you with this. See you later this week for the thrilling conclusion.

  1. Advanced chess engines take advantage of this fact to search deeper: they do something called ‘late move reduction’, where the moves late in the move ordering are searched to a lesser depth, leaving more search time for the better moves (the ones earlier in move ordering). Move ordering in chess engines is usually good enough that that this works out.
  2. It isn’t always useful, though. Depending on what happens on the board and how well the move ordering happens to work, relative to the previous search, the next search may be very fast (if it’s something we expected) or very slow (if it completely blows up our plan).
  3. Even depths are usually small and odd depths are usually large, in terms of node counts relative to what you’d expect if the increase was linear. The mechanism of alpha-beta pruning causes this effect.
  4. Dollar cost averaging makes the incredibly obvious observation that, if you put money into an asset over time, fixed amounts at regular intervals, you end up buying more of the asset when the price is low than when the price is high. Because of numbers.
  5. Although the literature usually reverses this relationship: the history heuristic is normally referred to as a general case of the killer move heuristic, since the latter was used first.
  6. In two ways: first, the version with the killer move heuristic plays the best against other AIs; second, the version with the killer move heuristic deepens far, far faster. The killer move heuristic is, in fact, almost single-handedly responsible for that faster speed to a given depth, going by my benchmarks. In brandub, for instance, OpenTafl reaches depth 6 in 2.5 million nodes without the killer move heuristic, and 1.3 million nodes with it. Searching killer moves first yields the best result, and moving anything ahead of them in the search order is non-ideal.

Opentaflvecken: AI progress

If you’re a regular reader over at Many Words Main, you’ll undoubtedly have thought that I’m some kind of bum, missing another update so soon. Not so! I’ve been very busy on other projects; very busy indeed. In a series of articles this week, I’ll be going through improvements I’ve made to OpenTafl’s AI. I’ll be releasing a stable version out of v0.4.3.x soon, which will feature the structural improvements I’ve made so far; next up will be puzzles in v0.4.4.x, then AI state evaluation improvements in v0.4.5.x.

So, what have I been up to? Well, let me open up my source control log, and I’ll tell you. Note I’m not reporting my progress in chronological order here: I present to you a natural-seeming order of features which bears little resemblance to reality, but which does make for a neater story.

Groundwork
Before embarking on a project as fuzzy as AI improvements, I needed tools to tell me whether my changes were making a positive effect. I started with a simple one: a command which dumps the AI’s evaluation of a particular state. This lets me verify that the evaluation is correct, and it turns out (to nobody’s great surprise) that it is not. When playing rules with weak kings, the AI places far too much weight on having a piece next to the king. When playing rules with kings which aren’t strong (tablut, for instance), the AI still mistakenly assumes that placing one piece next to the king is the same as putting the king in check. An improvement to make for phase 2!

The next thing on the docket was a test. As I wrote about what feels like a lifetime ago, OpenTafl is a traditional game-playing artificial intelligence. It uses a tree search algorithm called minimax with alpha-beta pruning, which is an extension of the pure minimax algorithm. The latter simply plays out every possible game to a certain depth, then evaluates the board position at the end of each possibility, then picks the best one to play toward, bearing in mind that the other player will make moves which are not optimal from its perspective1. Alpha-beta pruning extends minimax by taking advantage of the way we search the tree: we go depth first, exploring leaf nodes from ‘left’ to ‘right’2. As we move to the right, we discover nodes that impose bounds on the solution. Nodes which fall outside those bounds need not be considered. (The other article has an example.)

Anyway, the upshot of the preceding paragraph is that, for any given search, minimax and minimax with alpha-beta pruning should return the same move3. Previously, I had no way of verifying that this was so. Fortunately, it turned out that it was, and out of the whole endeavor I gained an excellent AI consistency test. It runs several searches, starting with all of OpenTafl’s AI features turned off to do a pure minimax search, then layering on more and more of OpenTafl’s search optimizations, to verify that none of the search optimizations break the minimax equivalence4.

Extension searches
Strong chess engines do something called extensions: after searching the main tree to a certain depth, they find interesting positions among the leaf nodes—captures, checks, and others—and search those nodes more deeply, until they become quiet5. OpenTafl does something similar, albeit on a larger scale. After it runs out of time for the main search, it launches into a two-stage extension search.

First, it attempts to deepen its view of the tree overall, a process I’ve been calling ‘continuation search’. Rather than clear the tree and start again, as OpenTafl does on its other deepening steps, continuation search starts with the tree already discovered and re-searches it, exploring to the next depth and re-expanding nodes. This process is much slower, in terms of new nodes explored, than a new deepening step, but as you’ll recall, deepening goes from left to right. A new deepening step discards useful information about the rightmost moves, in the hopes of discovering better information. Continuation search assumes that we don’t have the time to do that well, and that a broad, but not exhaustive, search to the next depth is more correct than half of a game tree6.

Continuation search takes time, too, though. It has to muddle its way down through the preexisting tree, potentially expanding lines of play previously discarded, before it gets to any truly new information. When there isn’t enough time for continuation search, the AI does something I’ve been calling horizon search, which resembles the traditional extension searches found in chess engines. The AI repeatedly makes deeper searches, using the end of the best nodes as the root. Frequently, it discovers that the variation it thought was best turns out not to be: I’d put it at about half the time that horizon search runs, discovering some unrealized weakness in the position that the evaluation function did not correctly account for.

But then again, it isn’t the evaluation function’s job to predict the future. The history of traditional game-playing AI is one of a quest for greater depth; a simple evaluation function and a deep search usually gives better results than a heavyweight evaluation function and a shallow search. With this philosophical point I think I will leave you for now. I have at least one more of these posts running later in the week, so I’ll see you then.

1. Hence minimax: one player is traditionally known as max, whose job it is to maximize the value of the position evaluation function, and the other is known as min, whose job is the opposite. The best move for max is the move which allows min the least good response.
2. Or whatever other natural ordering you prefer.
3. Or a move with the same score.
4. Since minimax is known to produce the optimal move from a given situation, any search which is not the same as minimax is no longer optimal. It turned out that, depending on the search optimizations, moves might be considered in a different order, and in case of identical scores, the first one encountered would be selected. The test runs from the start, so there are eight symmetrical ways to make the same move, and some searches came up with mirrored or rotated moves. Out of the bargain, I got methods to detect rotations and mirrors of a given move, which will serve me well for the opening book and the corner books I hope to do down the road.
5. Another point where chess AI developers have an edge on tafl fans: there’s more research on what makes for a quiet chess position (one where the evaluation is not likely to dramatically shift) than there is for tafl positions.
6. This was the source of a particularly pernicious bug, because it evaded most of my tests: most of the tests had search times just long enough to get near the end of the tree for a given depth, and the best move occurred at the start of the search in the rest. Continuation search also caused another bug, in response to which I wrote the AI consistency test. (I told you I wasn’t going in chronological order here.) That one was all my fault: I have a method to revalue the parents of a node, which is important for the next kind of search I’ll be describing. I was calling it after exploring the children of any node, propagating alpha and beta values up the tree too fast and causing incorrect, early cutoffs (which meant that the AI failed to explore some good countermoves, and had some baffling weaknesses which are now corrected).

M1A2 Abrams SEP v3: Upgrade Time

Well, the Russians have a new tank. And, for all its failings, the US Army is poking General Dynamics Land Systems for some Abrams upgrades to keep pace. Let’s see what they look like.

A brief aside: A separate program, and therefore not included in the SEP v3 upgrade package is a new anti-armor round. It’s the M829E4 round. It’s an APFSDS-T round, and it uses depleted uranium. It’s awesome, but very classified. Interestingly, I saw this a couple weeks after the T-14 was unveiled in a parade, which I find to be interesting timing. Connect two facts…

Anyway, SEP v3!
GDLS has added an under-armor auxiliary power unit (the UAAPU). It’s in the rear left quarter, replacing part of a fuel tank there. This should help with the inefficiency of the big AGT 1500 when it’s idling. Judging by the exhaust the UAAPU probably uses a very small gas turbine. It’s a good application for one, since turbines are small for their power and reasonably efficient under load. It should also help with providing all of the power needed for today’s fancy electrical systems. The UAAPU should provide enough power to run the turret (and everything in it) with the engine off. About time.

The SEP v3 also brings out the armor upgrades. The turret face and the front hull are better than they were before. How much better? Classified. Hooray for a new composite armor array though. I’m not sure if either section has gotten thicker, since I don’t have time up close with the SEP v3 and older v2 units. But the front armor is better now.

The Abrams has gotten some changes to its roof-mounted remote weapons stations. Tank crews in the field complained that the existing units tended to block their view a lot when the buttoned up. Also, they’re quite large, which makes going under bridges and things annoying. So there are new remote weapons stations that are lower profile and placed better to not obstruct the view as much. Happily, there are two RWSes as standard: one with an M2 for the tank commander and one with an M240 for the loader. I always approved of the number of machine guns on the Abrams. It takes advantage of that fourth man to operate another machine gun if he’s not slinging shells for the main gun. This is a big plus in urban areas.

The Abrams finally sees an upgrade to the M256 that lets it interface with guided rounds. There’s a new breechblock that can now perform this task. So integrating gun-launched missiles (such as the Israeli LAHAT) or airburst rounds can actually proceed. About damn time. The Israelis and the Germans have been able to do this on their 120 mm guns for years now. There are also plans to integrate a new airburst round to replace some other antipersonnel and demolition rounds that are currently in the inventory.

The thermal sights on the SEP v3 have been improved to be ‘third generation’ units. So they can see in both long-wave and mid-wave infrared. This allows for better images on the screens as well as better ability to see through obscurants like smoke or fog. Obvious capability win.

Finally, let’s talk about what’s not included: a new gun. It is not clear to me that the Abrams needs one, given the new round and the changes to the M256 to enable linking with smart rounds. They could deploy the XM360E1. They could also field a new 120mm/L55 gun, though this would require some upgrades to the stabilization system.1 If they’re going that far, they might wait to see/opt for the Rheinmetall 130 mm gun. We shall see. For the foreseeable future, I don’t think this is a huge concern.

No side armor changes have been announced. This is unsurprising to me. It is not feasible to provide protection from MBT main gun rounds on the sides. The concern you can do something about is RPG-type attacks, and the Abrams already has an excellent armor kit for the hull skirts and turret sides from the Tank Urban Survival Kit program.2 These systems are tough and combat proven. No more is needed. The TUSK program also added some optional belly armor to counter the IED threat. Again, more isn’t likely needed in the immediate future.

The SEP v3 still lacks active protection systems. Several are under evaluation, and may show up in a follow-on program. The US Army is particularly keen on Trophy, but there are also some promising systems from Raytheon.

Overall, this is a really good set of upgrade features, and there are more follow-ons coming. There are at least two engineering change proposals floating around out there. For once, this is a reasonably well managed program, introducing phased upgrades to keep an older platform competitive. Way cheaper than designing a new one, but it keeps the factories busy (and therefore open). Also, not trying to do everything at once keeps budgets under control and reduces the chance of the dreaded budget kill.

I would love to compare this to the German Leopard 2 improvements (2A8 anyone?), but nothing concrete has been announced. The US Army is doing a really good job of keeping on top of upgrades right now. These new upgrades should help make sure that the Abrams is a match for any tank out there. I’m also pretty happy about the lack of gold plating so far. Better knock on wood there.

1.) This drove the cost up too much back in the 90s when this was last considered. Back when there was no Russian threat to speak of. The US Army has been happy with their depleted uranium alloy rounds. Which tend to perform about as well as a similar-vintage tungsten-based-alloy round from the L55 gun, so maybe Big Army bet right on this.
2.) Specifically the XM-19 ARAT-1 and XM-32 ARAT-2 reactive armor packages.I’ll have a write-up as soon as I can get more information. There’s not much out there on these, especially on the newer XM-32s.

The Panhard CRAB

France has a long history of building excellent, if quirky, reconnaissance vehicles. Reconnaissance vehicles tend to be small and lightly armed. But the French have always sought to use them as the heirs to the light cavalry tradition, and have armed their recon vehicles appropriately. In some cases, the result is basically a light tank. We’ll look at those later. Today, we’re looking at something quite a bit smaller but still well armed. Today, we look at the petite Panhard CRAB.

The Panhard Crab weighs eight to ten tons, depending on protection level. It is a 4×4 vehicle with some particularly interesting suspension and drivetrain capabilities. It has a crew of three, and a turret that can be fitted with a bunch of armament options.

The turret is designed to be modular. Display models have tended to have turrets equipped with the M242 25 mm autocannon and about 150 rounds. Also available is a turret mounting the M230LF 30 mm autocannon. Note that this is a variant of the M230 chain gun used in the AH-64 Apache. It is chambered in 30×113 mm, not 30×173 mm. Both autocannons are fully stabilized. Another available option is a missile turret. This turret can be configured with four launch tubes for the new French MMP ATGM or the Mistral MANPADS missile. Other missiles could probably be integrated with some extra funds and work. This is where the Crab might suffer a little. It would be nice if it could use the Spike or Javelin missiles. In any case, all turrets have a 7.62 mm machine gun (coaxially mounted for the autocannon turrets) and are unmanned.

The Crab has a few different protection levels available. The heaviest (STANAG level IV) is good against 14.5 mm AP rounds and 155 mm fragments at least 30 m away from the burst. This is a light, easily deployed vehicle. This protection level is pretty typical for a lot of small utility and reconnaissance vehicles. We’ll find a way to deal.

Most interesting is the drivetrain of the Crab. It has an active pneumatic suspension, so it can be lifted for extra ground clearance. Tire pressure is centrally regulated, which helps deal with soft or hard ground. Both axles are independently steerable, which makes the turning radius very small–the Crab can make a u-turn with a 5 meter radius. It has a 320 hp engine, giving a top speed of 68 miles an hour. Finally, it can actually drive sideways by turning both axles to the same side. This is as close to go-anywhere as you can get in a wheeled vehicle. The light weight will also help with ground pressure.

The Crab can accommodate 3 men. It has a battle management system, and comes equipped with all of the networking gear and radios to transmit information to other units. It also has 360 degree camera coverage, to help with information gathering or movement in any direction. Mast mounted sensor systems are also available. Optics or a short-range radar system can be mounted on a telescoping mast.

So what do we think? It’s light for Borgundy, but so are most things that have ‘telescoping sensor mast’ as a factory option. It is well armed, networked, and extremely agile. We’ll take the superlative agility and armament, since it’s as good as it’s going to get in the light reconnaissance vehicle role. Bonus that it resembles Halo’s Warthog vehicle, if that was designed for humans who don’t wear fancy power armor.

The Crossbox Podcast: Episode 10

In which we have no special theme for you, but we do have: a squee-worthy news topic immediately following a weighty warlike one, some further competition kit chit-chat, some defenses of indefensible procurement errors, and a proper savaging of a game that we describe as, “Factorio, but boring,” as well as, “EVE Online for shut-ins”. Listen and see for yourself.

Further reading
Glock trigger connector improvement
Geissele AR trigger
History of the Abrams and MBT-70
John’s Leopard 2 reference of choice
Armiger Solutions: our match sponsor!
Kytex-brand Kydex gear (that isn’t confusing at all)
Rebel Galaxy
Starsector
Battletech
What Price Glory, purveyor of reproduction military kit

Continue reading

French Carbine Downselect

A bit of old news, but I’m finally getting around to it.

The French are looking into replacing their FAMAS carbines with something new, because the FAMAS rifles are about 40 years old. And, because the French small arms industry is basically nonexistent1, they have to look elsewhere for a new carbine. The manufacturer must be European though. Sorry Colt and LMT.

Anyway, seeing as the new design had to be European, five companies stepped up to the plate to bat for this contest:

Heckler & Koch (HK 416A5)
Fabrique Nationale (FN SCAR 16)
Beretta (ARX 160)
HS Produkt (VHS 2)
Swiss Arms (aka SiG; MCX)

Of note is that the only bullpup design was the VHS 2.

A brief comment on the MCX. It’s a super new design; another AR with some not-so-small changes. SiG put in a truncated bolt carrier and a gas tappet operating system. The return spring setup is straight off an AR-18. It’s very, very light, and but for the lame looking stock, I rather like the design concept. And light is generally good. That said, of late SiG doesn’t have the best QC reputation2, and being the newest design, it doesn’t have the testing/refinements of some of the other designs. And this one is a bit more complicated than just adding an op rod, excuse me, a tappet gas system David ‘Carbine’ Williams. Truncated bolt carriers have been done before, but never with all that much reliability. Still, I commend them for entering it.

And now we have the results of the downselect. Still in the contest are HK and FN. So we’ll be watching the SCAR 16 and the HK416 go head to head to battle it out. This should not come as a surprise; both of these rifles have been used by some French special forces units, and both have been quite well tested and abused already. Honestly, I think the favorite at this point is the HK416.3 I’m pretty sure it’s the better gun, and it’s already got a pretty big contract up in Norway.

But this is a good choice. Going with the proven guns was a no-brainer here.

Also, not being a fan of bullpups, I’m quite happy to see the French return to the conventional layout.

1.) This makes me very, very sad. Such a shame that the nation that first developed smokeless powder can’t make it’s own small arms anymore. On the bright side, Col. Nicholas Lebel is probably spinning in his grave so fast that you could hook up a generator and power half of Paris.
2.) And this is with classic, proven designs: the P226 and P229. Which were *fine* until some genius decided to start messing with the designs to squeeze some more profit out of the margins.
3.) The favorite to win is a rifle made by la Boche? Sacre Bleu! At this point M. Lebel is going to be able to power all of Paris with his spinning.

Mechanized Infantry Platoon 2: Experimentation

Now that I’ve hit my monthly quota of Obvious Fishbreath Provocations, we can get back to our regularly scheduled theory posts.

I’ve talked about these before, and that was fun. Of course, that posited a CV9035 with eight man capacity. As you’ll recall, my original choice of IFV was for the Puma, with a capacity of six, and I’ve gone back and forth since. Besides, CV90s tend to get uparmored and loaded with stuff, with reduced capacities of seven or even six men. But let’s get back to the Puma. I’m still fond of it, and it’s still the best protected actual IFV in the world. It doesn’t really need to worry about RPGs of any type or DPICM-type bomblets. Yay. And it’s going to take the least amount of fussing to get the design pretty close to where I want it. At least, if I can get over the dismount capacity. So, what if we damned the cost (or accepted GAO’s estimates, which seem reasonable), and built our mechanized infantry platoon (‘Zug’ to you Germans out there) around the Puma?

We’re stuck with a six-man dismount capacity in the Puma. No changing it. We can get three eight-man squads with four Pumas. I think it might be easier to think of these as four smaller ‘squadlike units’ though, where each vehicle and its dismounts is considered a “squad.” At least for planning purposes. The infantry in the field can organize as they like. Thinking this way gives us a basis of issue of ‘per man’, ‘per vehicle’, and ‘per platoon’, which is awfully convenient. And it encourages improvisation. I’m beginning to think that on-paper squad organization doesn’t really matter too much, since there are so many good enough answers out there. And it is unlikely the platoon will be at full strength, anyway. So I’ll settle for a convenient planning conceit, and let the men in the field sort stuff out. They’ll certainly have enough firepower.

Further, there are many reasonable organizations for 24 men, and four vehicles is a nice cost/dismount balance. There are another twelve men who are vehicle crews, bringing our total platoon strength to 36 men. It is assumed by me that three of the four vehicle commanders are the platoon headquarters component1, though they can take which seats they like. I will also assume the fourth vehicle commander, plus the four gunners and the four dismount team leaders, are some flavor of NCO. The rest of the platoon can be whatever rank, but there’s our on-paper minimum NCO staffing level.

There’s a bunch of stuff that is issued on a per-man basis. Of biggest note to you, I’m sure, are: the helmet, the standard protective vest (which I’ll discuss elsewhere), and the carbine. Dismounts get a fixed-magnification optic.2, plus sling and NVG-compatible aiming laser3. Dismounts also get a night vision monocular4 and a radio (specifically the SRX 2200) to communicate amongst themselves if separated. The dismount element leader additionally gets a PRC-148 radio to communicate with other elements of the platoon, and a handheld GPS receiver (the PSN-13). Vehicle crews are issued an Aimpoint Comp M4 red dot and sling for their carbines. I won’t discuss ammo or numbers of grenades or number of rations here. There are lots. I chose a capacious IFV deliberately to let me haul things. How many? Shut uP. The P is for Plenty.

Before we get to vehicle-issued stuff for the men, let’s refresh our memory on the Puma. The Puma is armed with a 30 mm autocannon, a 5.56 mm machine gun, and a twin-tube launcher for the Spike LR. The Spike Launcher still hasn’t been seen on Pumas in the Bundeswehr, or at least, not in the pictures I’ve seen, but it is fitted to all of the various Lance turrets flavors that are out in the wild. So I’m stipulating it. The fittings are there. Additionally, the Bundeswehr Pumas have a 5.56 mm coax machine gun. Presumably this was to make weight for the A400m, and because of the stowed kills argument. Alternatively, I’ve heard space in the turret might be a problem. Anyway, I’d really like to see the stowed kills argument analysis, and if you could fit a 7.62 mm MG in the turret. I’m not convinced you couldn’t make one fit. To keep things simple, we will stipulate that the caliber of the coax match that of the dismount MG. So, for now, let’s assume it’s the 5.56 mm MG4, since that’s what’s in the design, and I’m trying not to go nuts with changes. COTS, remember? If the 7.62 mm coax is preferred after the above tests (and perhaps a blogpost of thought experimenting), give the dismounts the Negev NG7 accordingly. Of course, since the Puma does carry plenty of 30×173 mm rounds, we can use those against targets too tough for the 5.56. I think we’ll also see an increasing number of up-armored soft vehicles that would resist 7.62×51 mm just as well as the 5.56 stuff, so the difference may not be of concern in the future.

Anyway, each vehicle has an MG4 mounted in the turret as a coax weapon. Each vehicle has a second MG4 for the dismount team. Note that the dismount machine gunner also has a carbine available should he need it. This will help for building clearing. Again, each machine gun has a fixed power optic, a sling (with extra padding), and another of those night-vision-compatible laser sighting units. Note that the vehicle coax and the squad can share belts of ammo. And, only one kind of belted ammo has to be supplied to the platoon. We’re also keeping the number of belt-fed weapons down to keep the number of riflemen up in the platoon and “squad.” We still have machine guns in the vehicles. Plus, tests have shown that if a squad has multiple machine guns, it’s a lot harder to keep it in the fight as it takes casualties.

As noted above, the Puma carries a launcher for two of the excellent Spike-LR ATGMs. These are rather heavy. We’ll figure that each vehicle should carry at least two additional Spike-LRs, plus a tripod and command launch unit should the dismount team wish to use them, perhaps in an ambush. The weight of the Spike-LR and launcher is quite heavy, so we also figure that this is not going to be lugged around very much. Additional, somewhat lighter antitank capability, at ranges more in line with those of the rest of the dismount element’s weapons, is provided by a Panzerfaust 3 launcher, Dynarange sighting unit, and at least three Panzerfaust 3 rockets. Most of these should be the newer PzF3T rockets with tandem warheads, but the PzF3B demolition round is also very useful. In both cases, more rockets and missiles is better, but the above should provide a reasonable baseline. Additional disposable rockets like the M72A7 or the AT4 can be provided as needed. The Puma has plenty of storage space.

Each vehicle is also provided with a 40 mm underbarrel-type grenade launcher (e.g. the M320) and some grenades. I do love high explosives. Field reports seem to indicate that soldiers prefer having these with the little stock units attached, so their rifle isn’t super heavy most of the time. So let’s provide a stock unit with each grenade launcher. The option for independent use is there.

On to things issued at the platoon level. Distributed amongst the platoon is the following supplemental hardware: the PRC-150 manpack radio, two LGI F1 spigot commando mortars, and two 7.62 mm marksman rifles.5 The manpack radio provides a backup option for communication, useful if separated from the vehicles. The LGI F1s are easy for a single man to use, and give us some indirect fire options. Much cheaper and more convenient than that lame XM25. Plus, it actually works. Finally, the marksman rifles give us an option for a bit of precision at range. These items can be divvied up amongst the vehicles as desired.

So there we have it. I like this. I didn’t specify a table of equipment in my previous platoon post, so let’s compare with some real-world examples. I’m giving up two machine guns when compared to the standard US Army Mech platoon, and three 40mm grenade launchers. I have the three Panzerfaust 3s and two LGIs, which gives me some platoon level indirect fire and some very heavy HE projection. Coordination abilities should be similar. I also have the 7.62 mm rifles at the platoon level, which give some extra reach if desired. I’m taking a page or two out of a Russian Motorized Rifle Platoon book. The American squad has a Javelin, plus the Bradley has some TOW missiles. I’ve got a similar long range guided antitank punch in the Spike LR missiles. And I’m similarly high tech, with plenty of comms in the above table. One other thing I like is that the above TO&E is pretty adaptable to any other IFV I might choose to design around, including the Bradley, the CV90 (even the versions with fewer dismounts), or the ASCOD.

1.) I.e. Platoon Leader (a lieutenant), Platoon Sergeant, and Platoon Guide (another sergeant).
2.) E.g. an ACOG. I might go with a HAMR or SpecterOS though. Regardless, fixed 4x optic. I should write a blog post on this.
3.) E.g. PEQ-15, but I might find one I like more.
4.) E.g. PVS-14. I’ll probably go PVS-14 here.
5.) It occurs to me I haven’t picked a heavy rifle. It will be select fire (not that full auto with 7.62×51 mm rounds will be used much), and have some optic and a night vision laser. The optic might have more than 4x magnification. Basically something to fill a ‘modern Dragunov’ role.

Mightiest Warship, May 1941 Edition

It’s commonly thought that the Bismarck was the mightiest warship in May of 1941, when she sortied with Prinz Eugen, sunk the Hood, was crippled by Swordfish torpedo planes, and then sunk by a vengeful Royal Navy flotilla.

However, this is wrong. Wrong wrong WRONG!

Okay then.
“Magic mirror, on the wall, who’s the mightiest ship of all?”

Well now. The magic mirror would tell us the tale of the legendary Billy Mitchell, and that airpower is superior. Proven when he took out the Ostfriesland with bombs. The aircraft has more range and more effective antiship striking power. It is the carrier that is champion of types.

But which carrier? Well, she must be active, and therefore must be commissioned. And clearly the two navies that had carriers worth noting in the Second World War were the US Navy and the Imperial Japanese Navy, so let’s look at those.

For the Imperial Japanese Navy, the mightiest flattop gal from the Far East is IJN Zuikaku1. Technically, the Kaga carries more planes, but both carry the same number of planes in ready, immediately flyable condition. No points for more stowed aircraft, which are disassembled. Plus Zuikaku has better anti-aircraft armament and thus better defense. She’s also faster, and speed helps generate wind over the flight deck, making takeoffs easier. Sorry Kaga.

For the US Navy, the mightiest flattop gal from the West is USS Enterprise2. The Big E. The Grey Ghost. One of three American carriers to be active at the start and survive the war. She had the biggest air wing in the USN in May of ’41.

Let’s get it on!

First, design compliment. Zuikaku was designed to carry 72 flyable aircraft, plus 12 disassembled spares. Enterprise was designed around a compliment of 90 flyable aircraft. The US Navy liked big air wings on its carriers, and to that end designed operations on using half the flight deck as a deck park, even during flight operations. So that’s points to the Enterprise.

A brief interlude. Many of you are no doubt wondering why I don’t compare the air wings themselves. The USN had the excellent SBD Dauntless dive bomber, the good F4F Wildcat fighter, and the outmoded TBD Devastator torpedo bomber. The IJN had the superlative A6M Zero fighter, the solid B5N Kate torpedo bomber, and the obsolescent D3A Val Dive bomber. I might also talk about the relative experience levels of the flight crews. But I won’t. Neither aircraft purchasing decisions, nor delays in production, nor failures to secure timely replacements, nor even how much time had been spent beating up on minor league air forces are the purview of ship designers. It isn’t reasonable to award or deduct points for things beyond their control. Besides, adding planes into the mix then brings up a question of doctrine, and the Japanese favored using float planes from cruisers as scouts. But the US Navy used SBD Dauntless dive bombers as scouts, which were embarked on the carrier. This will get very complicated very quickly if you’re trying to pick a winner from a hypothetical battle, as you might expect to be able to do if you were adding an aircraft comparison into the mix. Do we spot the Japanese some cruisers so they can scout too? Do we magically assume they can see the US Navy? Are we instead trying to make a hypothetical battle modeling of task forces, since these ships never travel alone? I should also point out that down that road lies the madness of trying to figure out how many fighters are on CAP duty/alert, and how many are in a strike force, and then comparing dissimilar types with unequal numbers. Lunacy. So I shan’t waste any more time discussing the matter.

Defensively, the best defense is the carrier’s own air wing. But that is not always enough. What about the guns? No points for antiship capability, of course. It is somewhat difficult to evaluate antiaircraft guns comparatively, so we’ll take as couple of proxy measures total throw weight per minute of all embarked guns in May of ’41, and AA Ceiling for the heavy AA. In my calculations, I will take the best rating I can find for sustained rate of fire, as a simplifying metric for comparison.

Enterprise had, in 1941, eight 5″/38 guns in single mounts, plus sixteen 1.1″/75 autocannons in quad mounts, and twenty four .50″ M2 machine guns. The 5″/38 is the best DP AA naval gun of the war. In the Enterprise’s pedestal mounts, these are good for about fifteen rounds per minute, with each shell weighing 55.18 lbs. So the 5″/38s give 6,621.6 lbs per minute. The Quad 1.1″ guns were less well liked, and were generally replaced with the more powerful Bofors 40mm as the war progressed. But that is in the future. Each shell of the 1.1″/75 weighed 0.917 lbs and the guns had a rate of fire of 100 rounds per minute. This gives us 1,467.21284 lbs per minute. The famous M2 Browning fired a round weighing 0.107 lbs at a rate of 550 rounds per minute. We have 24, so that’s another 1,284 lbs per minute. So in one minute, Enterprise’s AA guns can put out 9,372.8 lbs of aircraft killing pain. Maximum ceiling on the 5″/38s is 37,200 ft.

Zuikaku had, in 1941, sixteen 5″/40 guns in eight twin mounts, plus 36 25mm/60 autocannons in a dozen triple mounts. The 5″/40 gun was the standard DP heavy AA gun for the Imperial Japanese Navy. It fired 51.7 lb projectiles at a rate of eight rounds per minute, giving a total of 7,052.8 lbs. The Japanese 25 mm autocannon was a clone of a Hotchkiss design. Later in the war, the Imperial Japanese Navy would regret not developing something punchier, given how heavily built American naval aircraft were. The thirty six guns each had a rate of fire of 120 rounds per minute, and fired a 0.55 lb. shell, yielding another 2,376 lbs. So Zuikaku can put out 9,428.8 lbs of defensive firepower. Maximum ceiling on the 5″/40s is 30,840 ft.

So Zuikaku has a more powerful antiaircraft suite at this point in the war. On a raw points tally basis, that’s one point each, but we want to weight air wing heavier. That’s more useful for an aircraft carrier. The Enterprise was fitted with radar before the war. Zuikaku never got any.

So, overall, the Enterprise is the more powerful carrier. So she gets the crown of Most Powerful Warship in May of ’41.

Those of you who aren’t grumbling about me ignoring aircraft design are no doubt thinking “Fine, parvusimperator. But what about the old battlewagons? Surely Bismarck is the most powerful battleship in May of ’41. Yamato hasn’t been commissioned yet!

Wrong again.

“Magic mirror, on the wall, who’s the mightiest battleship of all?”

Battleships are a lot easier to compare than aircraft carriers. Pesky debates about aircraft don’t enter into it. Battleships fight with guns. Bismarck had eight 15″ guns, each firing an armor piercing shell that weighed 1,764 lbs. Well and good.

As mentioned before, Yamato isn’t commissioned yet. So her monster 18″ guns don’t enter the picture. And, my personal favorites, the Iowas aren’t done yet either. Nor are the South Dakotas or Britain’s Vanguard. What we have are treaty built battleships, and pre-1922 things.

Let’s start with which ships have 16″ guns? That would be the Nelsons, the Colorados, the Nagatos, and the North Carolinas. The Colorados have eight guns, and all the rest have nine. Of these, the North Carolinas are the only ones built after the end of the 1922 Washington Treaty-imposed ‘building holiday’. We might expect them to be better, being newer.

And for once, we’re totally right. The North Carolinas are not only the prettiest of the 16″ gunned battleships in commission in May of 1941, but they’re also the most powerful by far. The US Navy’s Ordnance Bureau had done a bunch of testing between the wars, and reckoned that heavy shells were best. As a result, when they went to design a new 16″ gun, they not only made the gun lighter and simpler, but also made the shells really heavy. The resulting Mark 8 “Superheavy” AP rounds weighed 2,700 lbs. North Carolina’s broadside is an impressive 24,300 lbs. Bismarck can only manage 14,112 lbs.

Discussion of armor protection is more complicated, and I’ll leave that for another article. But suffice it to say North Carolina does that better too.

There you have it. The mightiest battle wagon in May of ’41 is the USS North Carolina.

1.) Shokaku would also work here, and she’s the class leader and namesake. So perhaps the honor should be hers. But Zuikaku was luckier. And survived longer. Shokaku was damaged a bunch first, and sank first. So Zuikaku gets the nod here. Luck is important for a ship.
2.) Or Yorktown, who is the class leader (again, and namesake). But Enterprise is a legend, and the most decorated American ship of WWII. How could I not pick her?

OpenTafl v0.4.2.4b released!

Undoubtedly the release number will continue to increment as I find and fix little bugs in my work on the AI improvements branch. Either way, v0.4.2.x is now the stable branch, carrying with it two major features: variations in replays, and some additions to the stable of rules.

First, variations: the headline feature for v0.4.x, variations provide players the ability to play out alternate histories in replay mode. These alternate histories can be saved and loaded, as well as annotated (and, annotations now have a handy new in-game editor for ease of production).

Second, rules: I finally got around to implementing the last two rules preventing OpenTafl from playing almost all known tafl variants. Not coincidentally, OpenTafl now supports every rule supported by PlayTaflOnline.com, so the bot player there can compete on every front. Poorly.

That brings me to my last point for today: AI improvements. What’s on the list? Well, I have a few things on my list.

First thing’s first: I have to characterize OpenTafl’s particular failings. The ones I can most easily fix rest in the evaluation function. If the evaluation function provides inaccurate evaluations of board states, then all the rest—heuristics and fancy pruning alike—rests on an unsteady foundation. The analysis engine feature aids me in this quest. My workflow for this initial phase goes like this: I play a game against the AI, using the analysis engine to feed me the AI’s moves. When the AI makes a move which is obviously bad, I go to the replay, then tell the analysis engine to dump its evaluations for the states in question. By comparing those evaluations with evaluations of the move I would prefer, I can begin to see what the AI sees.

I’ve already made two interesting discoveries regarding AI weights and preferences. First, it places far too much importance on guarding or attacking the king, to the point that the attacker AI will happily sacrifice piece after piece if only it puts the king in ‘check’. Second, flowing out of the first item, it has a badly inaccurate view of what constitutes threatening an opposing piece. When it decides to threaten an enemy piece, it will happily do so by moving one of its own pieces into a position where it can immediately be recaptured. Oops.

So, once I’ve made changes to fix those mistakes, how do I verify that I’ve made a positive difference? I play the AI against old versions. Thankfully, building older versions of OpenTafl is trivial. (If you’ve been following development, you’ll no doubt have noticed that there’s a Mercurial tag for every release.) I have a little tool which is intended to do Elo ratings for chess clubs, but which will serve to do Elo ratings for OpenTafl versions just fine. This helps quantify not only whether a version is better than another version, but by how much.

Once I have the evaluation function a little more settled, I can move onto some extra heuristics. I have two in mind for the moment: the killer move heuristic, and the history heuristic (or some related heuristic). The killer move heuristic is the more promising one. It assumes that most moves don’t change the overall state of the board too much, and there are likely to be, at a given depth in the tree, only a few plausible moves to push the evaluation in your direction. Therefore, if any of those moves are possible at that depth, the AI should try them first.

The history heuristic is more complicated. There are three variations I’m considering. First, the straight history heuristic, which orders moves by how often they’ve caused a cutoff. This prefers, in the long run, making moves which have been good elsewhere in the tree. Straightforward, compared to the others.

Second, the butterfly heuristic, which orders moves by how often they occur anywhere in the tree. This prefers making moves which are frequently considered. This one is a little more subtle. Alpha-beta search, by its very nature, ends up searching only the most interesting moves, pruning away the rest. The butterfly heuristic, by tracking moves which turn up a lot, is essentially tracking which moves are more interesting.

Finally, the countermove heuristic, which tracks which moves are the best responses to other moves, and weights moves matching the known good countermove more heavily. This one requires very little explanation.

So, in the next month or two, I expect the strength of OpenTafl’s AI to improve considerably. Stay tuned!