StraussHardcorePointProcess[μ,γ,rh,rs,d]
represents a Strauss hardcore point process with constant intensity μ, interaction parameter γ, hard-core interaction radius rh and Strauss interaction radius rs in
.
StraussHardcorePointProcess
StraussHardcorePointProcess[μ,γ,rh,rs,d]
represents a Strauss hardcore point process with constant intensity μ, interaction parameter γ, hard-core interaction radius rh and Strauss interaction radius rs in
.
Details
- StraussHardcorePointProcess models point configurations where the points cannot be within a hardcore radius
of each other, have a constant repulsive pairwise interaction for points within between radius
and
of each other, and which are otherwise uniformly distributed. - The Strauss hardcore model is typically used to model point processes like trees in a forest, where the
and
correspond to the trunk and canopy radius, respectively. - The Strauss hardcore point process can be defined as a GibbsPointProcess in terms of its intensity μ and the pair potential
or pair interaction
, which are both parametrized by γ, rh and rs as follows: -
![phi(r)= infty r<r_h; log(1/gamma) r_h<r<r_s; 0 TemplateBox[{True, paclet:ref/True}, RefLink, BaseStyle -> {2ColumnTableMod}]; phi(r)= infty r<r_h; log(1/gamma) r_h<r<r_s; 0 TemplateBox[{True, paclet:ref/True}, RefLink, BaseStyle -> {2ColumnTableMod}];](Files/StraussHardcorePointProcess.en/10.png)
pair potential ![h(r)= 0 r<r_h; gamma r_h<r<r_s; 1 TemplateBox[{True, paclet:ref/True}, RefLink, BaseStyle -> {2ColumnTableMod}]; h(r)= 0 r<r_h; gamma r_h<r<r_s; 1 TemplateBox[{True, paclet:ref/True}, RefLink, BaseStyle -> {2ColumnTableMod}];](Files/StraussHardcorePointProcess.en/11.png)
pair interaction - A point configuration
from a Strauss hardcore point process in an observation region reg has density function
proportional to
, with respect to PoissonPointProcess[1,d]. - The Papangelou conditional density
for adding a point
to a point configuration
is
. - StraussHardcorePointProcess allows μ, γ, rh and rs to be positive numbers such that
, and d to be any positive integer. - StraussHardcorePointProcess simplifies to HardcorePointProcess when
,
or
. Smaller values of
inhibit points being closer than
. - Possible Method settings in RandomPointConfiguration for StraussPointProcess are:
-
"MCMC" Markov chain Monte Carlo birth and death "Exact" coupling from the past - Possible PointProcessEstimator settings in EstimatedPointProcess for StraussHardcorePointProcess are:
-
Automatic automatically choose the parameter estimator "MaximumPseudoLikelihood" maximize the pseudo-likelihood - StraussHardcorePointProcess can be used with such functions as RipleyK and RandomPointConfiguration.
Examples
open all close allBasic Examples (2)
Sample from a Strauss hardcore point process:
proc = StraussHardcorePointProcess[30, 0.1, 1., 2, 2];reg = Rectangle[{0, 0}, {10, 10}];pts = RandomPointConfiguration[proc, reg]Visualize the points in the sample:
ListPlot[pts]reg = Entity["Country", "Ireland"]pts = RandomPointConfiguration[
StraussHardcorePointProcess[1 / Quantity[2, "Kilometers"] ^ 2, .5, Quantity[20., "Kilometers"], Quantity[40., "Kilometers"], 2], reg]GeoListPlot[pts]Scope (5)
Generate three realizations from a Strauss hardcore point process:
proc = StraussHardcorePointProcess[100, 0.1, 0.1, .3, 2];
reg = Disk[];pts = RandomPointConfiguration[proc, reg, 3]ListPlot[pts]Clear[μ, γ, rh, rs, d];EstimatedPointProcess[pts, StraussHardcorePointProcess[μ, γ, rh, rs, d]]Generate three realizations from a Strauss hardcore point process in the geo region:
μ = Quantity[.5, "Kilometers" ^ -2];
γ = .5;
rh = Quantity[5., "Kilometers"];
rs = Quantity[10., "Kilometers"];
proc = StraussHardcorePointProcess[μ, γ, rh, rs, 2];reg = GeoDisk[Entity["City", {"Vancouver", "BritishColumbia", "Canada"}], Quantity[30, "Kilometers"]];pts = RandomPointConfiguration[proc, reg, 3]Visualize the point configurations:
GeoListPlot[pts]Clear[μ, γ, rh, rs, d];EstimatedPointProcess[pts, StraussHardcorePointProcess[μ, γ, rh, rs, d]]Generate samples with increasing hardcore radius:
proc[r_] := StraussHardcorePointProcess[10, 0.5, r, .1, 2];sample[r_] := RandomPointConfiguration[proc[r], Rectangle[{0, 0}, {10, 10}]]range = {.5, 1, 2};Table[ListPlot[sample[r], PlotLabel -> Row[{"r = ", r}]], {r, range}]Generate samples with increasing Strauss radius:
proc[r_] := StraussHardcorePointProcess[10, 0.5, .1, r, 2];sample[r_] := RandomPointConfiguration[proc[r], Rectangle[{0, 0}, {10, 10}]]range = {.5, 1, 2};Table[ListPlot[sample[r], PlotLabel -> Row[{"r = ", r}]], {r, range}]Generate samples with increasing interacting parameter γ:
proc[γ_] := StraussHardcorePointProcess[10, γ, .1, 1, 2];sample[γ_] := RandomPointConfiguration[proc[γ], Rectangle[{0, 0}, {10, 10}]];gammas = {0.01, 0.1, 0.9};Table[ListPlot[sample[γ], PlotLabel -> Row[{"γ = ", γ}]], {γ, gammas}]Options (4)
Method (4)
Simulate using the Markov chain Monte Carlo method:
proc = StraussHardcorePointProcess[100, .2, .01, .02 , 2];
reg = Disk[];RandomPointConfiguration[proc, reg, Method -> "MCMC"]Specify the number of recursive calls to the sampler:
RandomPointConfiguration[proc, reg, Method -> {"MCMC", MaxRecursion -> 6}]RandomPointConfiguration[proc, reg, Method -> {"MCMC", "LengthOfRun" -> 5 * 10 ^ 4}]Provide an initial state for the simulation:
proc = StraussHardcorePointProcess[50, 0.3, .1, .2, 2];
reg = Disk[];RandomPointConfiguration[proc, reg, Method -> {"MCMC", "InitialState" -> RandomPoint[reg, 100]}]Provide an initial state for the simulation:
proc = StraussHardcorePointProcess[50, 0.3, rHC = .1, .2, 2];
reg = Disk[];pts1 = RandomPointConfiguration[proc, reg, Method -> {"MCMC", "InitialState" -> {{1, 0}, {0, 1}}}]The initial state must have nonzero density to ensure that the result does:
minDistance[pts_] := Min@Nearest[pts -> "Distance", pts, 2][[All, 2]]init = RandomPoint[reg, 100];
minDistance[init] > rHCpts2 = RandomPointConfiguration[proc, reg, Method -> {"MCMC", "InitialState" -> init, "LengthOfRun" -> 10}]Check if the minimal distance between the points is smaller than the hardcore radius:
minDistance[pts2["Points"]] > rHCminDistance[pts1["Points"]] > rHCproc = StraussHardcorePointProcess[10, .05, .01, .1, 2];reg = Rectangle[];pts = RandomPointConfiguration[proc, reg, Method -> "Exact"]Visualize the points in the sample:
ListPlot[pts]Possible Issues (1)
By default, the simulation will run until the number of points converges to a steady state, or until the default number of iterations is reached:
proc = StraussHardcorePointProcess[10 ^ 3, .2, .01, .02 , 2];
reg = Disk[];RandomPointConfiguration[proc, reg]Raise the number of recursive calls to the sampler:
RandomPointConfiguration[proc, reg, Method -> {"MCMC", MaxRecursion -> 6}]RandomPointConfiguration[proc, reg, Method -> {"MCMC", "LengthOfRun" -> 5 * 10 ^ 4}]Related Guides
History
Text
Wolfram Research (2020), StraussHardcorePointProcess, Wolfram Language function, https://reference.wolfram.com/language/ref/StraussHardcorePointProcess.html.
CMS
Wolfram Language. 2020. "StraussHardcorePointProcess." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/StraussHardcorePointProcess.html.
APA
Wolfram Language. (2020). StraussHardcorePointProcess. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/StraussHardcorePointProcess.html
BibTeX
@misc{reference.wolfram_2026_strausshardcorepointprocess, author="Wolfram Research", title="{StraussHardcorePointProcess}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/StraussHardcorePointProcess.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_strausshardcorepointprocess, organization={Wolfram Research}, title={StraussHardcorePointProcess}, year={2020}, url={https://reference.wolfram.com/language/ref/StraussHardcorePointProcess.html}, note=[Accessed: 13-June-2026]}