BLITZ (v. 2.1)
A conventional warfare simulator
using a "blitzkrieg" attack model
Dr. Richard J. Stoll
Professor of Political Science and
Associate Director, James A. Baker III Institute for Public Policy
Table of Contents
Blitz simulates an attack on a defender's frontlines using the blitzkrieg
strategy. The object of a blitzkrieg is to push the defender especially hard
in a few "breakthrough" sectors while keeping him pinned down in other,
relatively quiet sectors to prevent reinforcement of the breakthrough points.
If the attack is successful, the attacker will break through the lines and
will be free to wreak havoc in the defender's territory. History shows that
this strategy works even for forces too small to do any real damage after a
breakthrough, primarily because the breakthrough demoralizes the defender.
This simulation is designed to answer the question of whether an attacker
with a given force distribution can achieve one or more breakthroughs in
the defender's lines.
The battlefield is a front of fixed length divided into sectors, which
in turn are divided into segments (currently 25 km each).
The defender maintains a linear defense across the front. The attacker
designates breakthrough sectors as described above; all other sectors are
considered quiet. For simplicity, we assume that breakthrough sectors are
spaced evenly across the front and are surrounded by quiet sectors on each
side. Thus if we designate K breakthrough sectors, there will be K+1 quiet
sectors sandwiched around them. Note that breakthrough sectors need not be
the same length as quiet sectors (they are usually much smaller).
Initially, the defender does not know where the breakthrough sectors
will occur, so he allocates his forces evenly (segment-wise) across the
entire line in strength sufficient for a quiet sector. Any remaining forces
are kept in ready reserve until needed. Once the breakthrough sectors are
identified (after the first day of battle), the defender can increase the
force strength in the breakthrough sectors.
The attacker initially has intelligence as to the defender's planned
force-to-space ratio in quiet sectors and distributes his forces accordingly,
matching the defender in quiet sectors while overmatching him by a
predetermined ratio in breakthrough sectors. Any remaining force is kept in
ready reserve until needed.
The reserve system has two components: ready and next-day. When ground
troops are pulled out of a sector, they are placed in next-day reserves and
cannot be used until the next day of battle, when they are transferred to
ready reserves. Due to their higher mobility, close air support forces in
reserve are always considered "ready" and may be transferred immediately
The daily battles are conducted using Epstein's model of ground-air
blitz [-I<infile>] [-O<outfile>] [-L<lastfile>][-P[L]] [-H]
Arguments are case-insensitive
-I<infile> - read input from <infile> (default is stdin)
-O<outfile> - write daily output to <outfile> (default is stdout)
-L<lastfile> - write final output to <lastfile> (default is none)
-P - mirror <outfile> output to stdout
-H - print this message to stderr
Input File Format
Blitz expects to be given an input file consisting of parameters for
zero or more runs of the simulation. Each run, and each parameter within
a run, must be separated by whitespace (spaces, carriage returns, or tabs).
A run consists of the following parameters (in the order they are
expected in the input file):
* All parameters marked with an asterisk (*) are integers. The rest are
double-precision floating point values.
- Length of front line in km. The Central Front in Europe is roughly
- Number of breakthrough sectors on the front *
- Length of each breakthrough sector (in km)
- Number of days over which to conduct the run *
- Parameters for the attacking side
- (a) Initial ground force strength of attacker in division equivalents
(DE's). This is a standard military measure of force strength.
- (b) Force to space ratio in breakthrough sectors in DE's per segment
(NOT per sector!)
- (c) Breakthrough attrition threshold (between 0 and 1). This value
roughly determines the level of overall attacker force attrition
beyond which the attacker cannot advance during the current day's
battle. See Epstein for more info.
- (d) Quiet attrition threshold (between 0 and 1). Same as (c), but
for quiet sectors.
- (e) Breakthrough ground prosecution rate (positive value). This
determines how hard the attacker "pushes" in the breakthrough
sectors. A high prosecution rate means more territorial gain
on success, but it also increases attacker attrition.
- (f) Quiet ground prosecution rate (positive value). Same as (e),
but for quiet sectors.
- (g) Initial units of close air support (CAS). A unit is basically
one combat aircraft. The main job of CAS is to take out armored
fighting vehicles (AFV's) by flying sorties againt the enemy. *
- (h) CAS attrition rate per sortie (between 0 and 1). This rate
determines the fraction of CAS aircraft that will be lost
(shot down) during each sortie.
- (i) CAS sorties per day
- (j) AFV's killed per CAS sortie. Counts the number of AFV's killed
by a single unit of CAS during each sortie. When a division
equivalent has lost all its AFV's, it is completely dead.
- (k) CAS fraction to breakthrough sectors (between 0 and 1). This
fraction of remaining aircraft will always go to the breakthrough
sectors under an absolute reinforcement policy (see below).
- (l) Reinforcement policy (0 or 1). If 1 (absolute), reinforcements
from reserves are made with the intent of bringing each sector
up to a predefined, fixed force-to-space ratio. If 0 (relative),
reinforcements are made to match the other side's force strength.
Since battlefield intelligence is delayed, the previous day's
force strength is used to estimate the reinforcements needed. *
- Parameters for the definding side
(Same as above except as noted)
- (a) Initial ground force strength of defender in DE's.
- (b) Force to space ratio in breakthrough sectors in DE's per segment.
- (c) Force to space ratio in quiet sectors in DE's per segment. This
value is not given for the attacker; instead, the attacker matches
the defender's ratio in quiet sectors.
- (d) Breakthrough attrition threshold (between 0 and 1). In the
defender's case, this determines the level of attrition for
the current day beyond which the defender will begin to withdraw,
allowing the attacker to make territorial gains in the sector.
- (e) Quiet attrition threshold (between 0 and 1). Same as (d), but
for quiet sectors.
- (f) Maximum withdrawal rate (km/day). This value determines the
fastest rate at which the defender can withdraw, and consequently
the most territory an attacker can gain per day. If this value
is low, the attacker will suffer more attrition, since the
defender will be fighting a rearguard action rather than
- (g) Initial units of CAS. *
- (h) CAS attrition rate per sortie (between 0 and 1).
- (i) CAS sorties per day.
- (j) AFV's killed per CAS sortie.
- (k) CAS fraction to breakthrough sectors (Between 0 and 1).
- (l) Reinforcement policy (0 or 1). *
- AFV's per division equivalent.
- Lethality points per division equivalent. This statistic estimates
how effective a division equivalent is. It is also the value
that is "killed" (decremented) by the enemy forces, and its
loss during each day is therefore used to calculate the attrition
rate. A typical American DE in Operation Desert Storm had upwards
of 99,000 lethality points. See Epstein for more info.
- Casualty Exchange Ratio (between 0 and 1). This is the ratio
of attacker casualties to defender casualties.
There must be as many of these sets of values as there are
battle days. Each set of reinforcements is assumed to arrive AFTER
the day equal to its position in the list, ie the first set
arrives after day 1, the second after day 2, etc.
- Attacker ground reinforcements (DE's).
- Attacker CAS reinforcements (units).
- Defender ground reinforcements (DE's).
- Defender CAS reinforcements (units).
Some sample inputs are provided with the program.
Output Options and Format
As noted in the usage, there are two different types of output file:
a daily result file and a last-day result file. For each run in the
input, the last-day file contains a summary of the input conditions and
a summary of the situation after the last battle day (and the last, unused
set of reinforcements). For each sector, the following information is
In addition, the following information is given for attacker and defender:
- the battle day
- sector number
- whether the sector is breakthrough
- the remaining ground forces (in DE's) in the sector for each side
- the remaining units of CAS in the sector for each side
- the ground prosecution rate of the attacker in the sector
- the last-day attrition rates for attacker and defender in the sector
- the distance covered by the attacker during the last day
- the distance covered by the attacker during the entire war
The daily output file produces the same results but lists the sector
and force-strength figures after every day, not just the last.
- the total active ground forces in (DE's)
- the ground forces still in ready reserve (in DE's)
- the ground forces in unready reserve after the last day (in DE's)
- the total CAS units (both active and reserve) remaining
If no options are given, the daily output is printed to stdout.
-  Epstein, Joshua M. 1985. The Calculus Of Conventional War:
- Dynamic Analysis Without Lanchester Theory. Washington, DC:
Brookings. This is the source of the daily battles' combat model.
-  Posen, Barry R. 1984. "Measuring the European Conventional Balance:
- Coping with Complexity in Threat Assessment." International
Security 9,3: 47-88. This is the source of the original blitzkrieg model. Brito and Stoll
later added the conception of reserves as a two-step pool.
-  Stoll, Richard J. 1990a. "The Russians Are Coming! A Computer Simulation."
- Armed Forces and Society 16,2:
193-213. This article describes the model and discusses some
runs using it to evaluate NATO and the Warsaw Pact.
-  Stoll, Richard J. 1990b. U.S. National Security Policy and the Soviet Union:
- Persistent Regularities and Extreme Contingencies.
Columbia. University of South Carolina Press. Chapter 10 also
provides a description of the simulation and analyzes some runs
assessing the 1990 balance of forces between NATO and the Warsaw
- v1.0 (???)
- The original simulator, written in C for MSDOS.
- v2.0 (Dec 88 - Jan 89)
- Got rid of column split
- Set size of breakthrough sector on input.
- v2.1 (May-June 94)
- This version was extensively hacked on by Jeremy Buhler of the Rice
Electronic Studio Project, firstname.lastname@example.org .
- Fixed bug in reinforcement allocation.
- Moved code base to C++ (though it still uses stdio for convenience)
- Made reasonably OS-independent by a port to UNIX, though the resulting
code still compiles under MSDOS. As a side effect, there are no
more fancy screen-updating functions (alas).
- Eliminated gratuitous struct copies in the battle routine and when
advancing the day timer.
- Merged the multi-file I/O into device-independent routines.
- Program now accepts data files from stdin and prints to stdout
- Reorganized functional and file structure of the code to ease
verification of correctness
- Moved reinforcement allocation to before clock update to comply
with the non-copying method for advancing the day timer. This
change should not affect the model calculations performed during
- Segments within sectors are no longer restricted to 25 km. A
compile-time value sets the size of a segment.
- The defender forces are initialized so that he *really* does not
know where the attacker is (the previous version did not implement
this part of the model properly).
- During reinforcement, close air support levels in quiet sectors now
accurately reflect the defender CAS fraction
- Made a few small changes between use of current and previous day
statistics to keep the state-change model consistent
Last updated - 9/1/95