Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

SalvoCombatModeling

Guides

  • Heterogeneous Salvo Combat Modeling

Tech Notes

  • Battle of Coronel

Symbols

  • HeterogeneousSalvoModel
  • SalvoDamage
  • SalvoForceNameQ
  • SalvoModel
  • SalvoModelQ
  • SalvoModelTooltips
  • SalvoNotionDefinitions
  • SalvoTerms
  • SalvoVariable
  • SalvoVariableRules
Battle of Coronel
Introduction
Model
Setup
References
The battle
​
Introduction
In this notebook we calibrate the Heterogeneous Salvo Combat Model (HSCM), [MJ1, AAp1], to the First World War
Battle of Coronel
, [Wk1]. Our goal is to exemplify the usage of the functionalities of the paclet "SalvoCombatModeling", [AAp1]. We closely follow the Section B of Chapter III of [MJ1]. The calibration data used in [MJ1] is taken from [TB1].
Setup
Here we load the paclet:
In[7]:=
Needs["AntonAntonov`SalvoCombatModeling`"]
The battle
The Battle of Coronel was a First World War Imperial German Navy victory over the Royal Navy on 1 November 1914, off the coast of central Chile near the city of Coronel.
The Battle of Coronel
is a First World War naval engagement between three British ships {Good Hope, Monmouth, and Glasgow) and four German ships (Scharnhorst, Gneisenau, Leipzig, and Dresden). The battle happened on 1 November 1914, off the coast of central Chile near the city of Coronel.
The Scharnhorst and Gneisenau are the first ships to open fire at Good Hope and Monmouth; the three British ships soon afterwards return fire. Dresden and Leipzig open fire on Glasgow, driving her out of the engagement. At the end of the battle, both Good Hope and Monmouth are sunk, while Glasgow, Scharnhorst, and Gneisenau were damaged.
Out[218]=
Ship
Duration of fire
Good Hope
0
Monmouth
0
Glasgow
15
Scharnhorst
28
Gneisenau
28
Leipzig
2
Dresden
2
The following graph shows which ship shot at which ships and total fire duration (in minutes):
Out[232]=
Model
The British ships are in Good Hope, Monmouth, and Glasgow. They correspond to the indices 1, ,2, and 3 respectively.
In[213]:=
AssociationThread[Range[3],{"Good Hope","Monmouth","Glasgow"}]
Out[213]=
1Good Hope,2Monmouth,3Glasgow
The German ships are Scharnhorst, Gneisenau, Leipzig, and Dresden:
In[214]:=
AssociationThread[Range[4],{"Scharnhorst","Gneisenau","Leipzig","Dresden"}]
Out[214]=
1Scharnhorst,2Gneisenau,3Leipzig,4Dresden
Remark: The Battle of Coronel is modeled with a "typical" salvo model -- the ships use "continuous fire." Hence, there are no interceptors and or, in model terms, defense terms or matrices.
Here is the model (for 3 British ships and 4 German ships):
In[208]:=
m=
HeterogeneousSalvoModel
[{B,3},{G,4},"OffensiveEffectivenessTerms"True]
Out[208]=
Remove the defense matrices:
In[211]:=
m=Cancelm//.
γ
[___]0
Out[211]=
BUnits{B[1],B[2],B[3]},OffenseMatrix
β[G,B,1,1]ε[G,B,1,1]Ψ[G,B,1,1]
ζ[B,1]
,
β[G,B,2,1]ε[G,B,2,1]Ψ[G,B,2,1]
ζ[B,1]
,
β[G,B,3,1]ε[G,B,3,1]Ψ[G,B,3,1]
ζ[B,1]
,
β[G,B,4,1]ε[G,B,4,1]Ψ[G,B,4,1]
ζ[B,1]
,
β[G,B,1,2]ε[G,B,1,2]Ψ[G,B,1,2]
ζ[B,2]
,
β[G,B,2,2]ε[G,B,2,2]Ψ[G,B,2,2]
ζ[B,2]
,
β[G,B,3,2]ε[G,B,3,2]Ψ[G,B,3,2]
ζ[B,2]
,
β[G,B,4,2]ε[G,B,4,2]Ψ[G,B,4,2]
ζ[B,2]
,
β[G,B,1,3]ε[G,B,1,3]Ψ[G,B,1,3]
ζ[B,3]
,
β[G,B,2,3]ε[G,B,2,3]Ψ[G,B,2,3]
ζ[B,3]
,
β[G,B,3,3]ε[G,B,3,3]Ψ[G,B,3,3]
ζ[B,3]
,
β[G,B,4,3]ε[G,B,4,3]Ψ[G,B,4,3]
ζ[B,3]
,DefenseMatrix{{0,0,0},{0,0,0},{0,0,0}},GUnits{G[1],G[2],G[3],G[4]},OffenseMatrix
β[B,G,1,1]ε[B,G,1,1]Ψ[B,G,1,1]
ζ[G,1]
,
β[B,G,2,1]ε[B,G,2,1]Ψ[B,G,2,1]
ζ[G,1]
,
β[B,G,3,1]ε[B,G,3,1]Ψ[B,G,3,1]
ζ[G,1]
,
β[B,G,1,2]ε[B,G,1,2]Ψ[B,G,1,2]
ζ[G,2]
,
β[B,G,2,2]ε[B,G,2,2]Ψ[B,G,2,2]
ζ[G,2]
,
β[B,G,3,2]ε[B,G,3,2]Ψ[B,G,3,2]
ζ[G,2]
,
β[B,G,1,3]ε[B,G,1,3]Ψ[B,G,1,3]
ζ[G,3]
,
β[B,G,2,3]ε[B,G,2,3]Ψ[B,G,2,3]
ζ[G,3]
,
β[B,G,3,3]ε[B,G,3,3]Ψ[B,G,3,3]
ζ[G,3]
,
β[B,G,1,4]ε[B,G,1,4]Ψ[B,G,1,4]
ζ[G,4]
,
β[B,G,2,4]ε[B,G,2,4]Ψ[B,G,2,4]
ζ[G,4]
,
β[B,G,3,4]ε[B,G,3,4]Ψ[B,G,3,4]
ζ[G,4]
,DefenseMatrix{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}
Put tooltip interpretations of the terms:
In[212]:=
Blockvrules=Map#1Tooltip#1,#2,

&,
SalvoVariableRules
[{B,3},{G,4}],​​ReplaceAll[m,vrules]​​
Out[212]=
BUnits{B[1],B[2],B[3]},OffenseMatrix
β[G,B,1,1]
ε[G,B,1,1]
Ψ[G,B,1,1]
ζ[B,1]
,
β[G,B,2,1]
ε[G,B,2,1]
Ψ[G,B,2,1]
ζ[B,1]
,
β[G,B,3,1]
ε[G,B,3,1]
Ψ[G,B,3,1]
ζ[B,1]
,
β[G,B,4,1]
ε[G,B,4,1]
Ψ[G,B,4,1]
ζ[B,1]
,
β[G,B,1,2]
ε[G,B,1,2]
Ψ[G,B,1,2]
ζ[B,2]
,
β[G,B,2,2]
ε[G,B,2,2]
Ψ[G,B,2,2]
ζ[B,2]
,
β[G,B,3,2]
ε[G,B,3,2]
Ψ[G,B,3,2]
ζ[B,2]
,
β[G,B,4,2]
ε[G,B,4,2]
Ψ[G,B,4,2]
ζ[B,2]
,
β[G,B,1,3]
ε[G,B,1,3]
Ψ[G,B,1,3]
ζ[B,3]
,
β[G,B,2,3]
ε[G,B,2,3]
Ψ[G,B,2,3]
ζ[B,3]
,
β[G,B,3,3]
ε[G,B,3,3]
Ψ[G,B,3,3]
ζ[B,3]
,
β[G,B,4,3]
ε[G,B,4,3]
Ψ[G,B,4,3]
ζ[B,3]
,DefenseMatrix{{0,0,0},{0,0,0},{0,0,0}},GUnits{G[1],G[2],G[3],G[4]},OffenseMatrix
β[B,G,1,1]
ε[B,G,1,1]
Ψ[B,G,1,1]
ζ[G,1]
,
β[B,G,2,1]
ε[B,G,2,1]
Ψ[B,G,2,1]
ζ[G,1]
,
β[B,G,3,1]
ε[B,G,3,1]
Ψ[B,G,3,1]
ζ[G,1]
,
β[B,G,1,2]
ε[B,G,1,2]
Ψ[B,G,1,2]
ζ[G,2]
,
β[B,G,2,2]
ε[B,G,2,2]
Ψ[B,G,2,2]
ζ[G,2]
,
β[B,G,3,2]
ε[B,G,3,2]
Ψ[B,G,3,2]
ζ[G,2]
,
β[B,G,1,3]
ε[B,G,1,3]
Ψ[B,G,1,3]
ζ[G,3]
,
β[B,G,2,3]
ε[B,G,2,3]
Ψ[B,G,2,3]
ζ[G,3]
,
β[B,G,3,3]
ε[B,G,3,3]
Ψ[B,G,3,3]
ζ[G,3]
,
β[B,G,1,4]
ε[B,G,1,4]
Ψ[B,G,1,4]
ζ[G,4]
,
β[B,G,2,4]
ε[B,G,2,4]
Ψ[B,G,2,4]
ζ[G,4]
,
β[B,G,3,4]
ε[B,G,3,4]
Ψ[B,G,3,4]
ζ[G,4]
,DefenseMatrix{{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}}

Concrete parameter values

Setting the parameter values as in [MJ1]:
In[206]:=
ClearAll
β
,
ζ
,
ε
,
Ψ

In[112]:=
β
[G,B,1,1]=2.16;​​
β
[G,B,1,2]=2.16;​​
β
[G,B,1,3]=2.16;​​​​
β
[G,B,2,1]=2.16;​​
β
[G,B,2,2]=2.16;​​
β
[G,B,2,3]=2.16;​​​​
β
[G,B,3,1]=2.165;​​
β
[G,B,3,2]=2.165;​​
β
[G,B,3,3]=2.165;​​​​
β
[G,B,4,1]=2.165;​​
β
[G,B,4,2]=2.165;​​
β
[G,B,4,3]=2.165;

Damage calculations

How many salvos to achieve total damage of Good Hope and Monmouth:
That is close to the 28 min of fire by Scharnhorst and Gneisenau at Good Hope and Monmouth.
Total damage of on Glasgow -- Leipzig and Dresden fire for 2 min at Glasgow:
References

Articles, theses

Paclets

[AAp1] Anton Antonov, "SalvoCombatModeling", (2024), Wolfram Language Paclet Repository.

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com