Skip to the content.

Research guide

This guide is about using PureEdgeSim to produce results that survive review. It covers experiment design, randomness, scenario sweeps, validation, statistics, and the artifact you should keep. It assumes that you understand the simulator’s architecture and metrics; if not, read Architecture and Output and metrics first.

Start from the question, not from the simulator

Write down the claim you want to test before touching a configuration file. Most claims in edge computing papers fall into a few shapes:

Each claim maps to a different experimental design. A policy comparison holds infrastructure and workload fixed. A sensitivity study varies one factor and reports the trend. A robustness study introduces failures and reports the tail, not only the mean.

Map the claim to a model change

Claim involves Change
Placement decision A custom orchestrator, see Writing orchestrators
Workload shape Distributions in applications.xml, a custom arrival pattern, or a custom task generator
Device capacity or scheduling Per-instance distributions in the device XML, a custom computing node, or tuned datacenter and device XML
Network behavior A custom network model or link, or tuned bandwidth and latency
Mobility One of the nine built-in models selected per device type, or a custom mobility model
Energy behavior A custom energy model

Change as little as possible. If the claim is about placement, keep the default networking and energy models and replace only the orchestrator. A result that depends on three simultaneous model changes is hard to attribute and hard to reproduce.

Build the scenario matrix

The scenario sweep is the Cartesian product of the architecture list, the algorithm list, and the device counts:

scenarios = architectures x algorithms x deviceCounts

With the defaults that is 7 x 2 x 3 = 42 simulations. Each simulation reuses the same settings files and differs only in the scenario key, so the comparison is controlled by construction.

Practical choices:

Parallel or sequential

parallel_simulation=true distributes scenarios across worker threads. It is the right mode for collecting data because it uses all available cores. Two consequences:

parallel_simulation=false writes a single Sequential_simulation.csv and generates the aggregate charts. Use it for interactive exploration and for the final figure run.

Do not run several simulations in the same JVM with shared static state in custom models. The engine itself isolates scenarios by creating fresh models, but your own static fields would not be isolated.

Randomness and repetitions

Task arrival times, task sizes, node capacities, device positions and movement are stochastic. Every draw goes through one service, Randomness, which uses a strong secure random generator unless the random_seed parameter of simulation_parameters.properties is set. With a seed, the whole run becomes reproducible: the same configuration replays the same task list, the same capacities and the same paths.

What this means for your experiment:

Keep the seed in the settings file you archive with your results, together with the simulator version, the configuration files, and the CSV outputs. Published numbers whose seed was not recorded cannot be re-run by anyone else, including you.

Validation before measurement

A simulator result is only credible if the simulator itself behaves as expected. Before collecting data, run a few sanity checks:

If a sanity check fails, stop and fix the model or configuration before running the full matrix. Do not average away a structural bug.

Statistical analysis

A simple, defensible analysis pipeline:

  1. Merge all Parallel_simulation_*.csv files into one table with a run identifier.
  2. Clean the table: strip whitespace from headers, replace NaN and Infinity with missing values, and convert columns to numeric types.
  3. Derive success rate, completion rate, throughput, and energy per successful task using the formulas in Output and metrics. Do not use raw column 9 as a success count.
  4. Check the number of rows per scenario. It should equal the number of repetitions. A missing row means a crashed or skipped run.
  5. Summarize each scenario with mean and 95 percent confidence interval, or median and IQR. Report the sample size.
  6. Compare conditions using a test appropriate to the distribution. For skewed metrics, bootstrap the difference in means or use a rank-based test. Report effect sizes, not only p-values.
  7. Plot trends with uncertainty bands. A line without error bars is a claim without evidence.

If you compare many scenarios, say so and correct for multiple comparisons, or frame the analysis as exploratory. Reviewers notice unadjusted pairwise tests across dozens of conditions.

Common pitfalls

Reproducibility checklist

Before you submit or publish, make sure you can answer these questions:

Keep one directory per experiment:

experiments/2026-10-24-policy-comparison/
├── PureEdgeSim/               # simulator source, examples, default settings
│   ├── settings/              # the five input files
│   └── examples/              # scenario classes and their own settings
├── custom/                    # custom classes, if any
├── raw/                       # unmodified CSV and text reports
├── analysis/                  # scripts that produce the tables and figures
├── figures/                   # generated figures
└── README.md                  # version, commands, hardware, date

The raw files are the primary record. Analysis scripts should be rerunnable from the raw files without a simulator run, so that a reviewer can check a calculation.

When to extend the simulator

Extend the simulator when the question requires a mechanism it does not model, not when a parameter is merely inconvenient. For example:

If the mechanism already exists, use it. A custom model that reimplements default behavior is harder to review and more likely to diverge from the documented simulation.

When you extend, follow Customizing models and add tests. A custom orchestrator that is not tested against a known baseline is a source of unexplained results.

Publication and citation

If you use PureEdgeSim in a paper, cite the framework papers listed in the repository README rather than the GitHub URL. Describe the exact version and the model changes. State the stochastic assumptions and the number of repetitions. Include the raw results or a link to them.

The strongest methodology section is short and specific: what was simulated, what was varied, what was fixed, how many runs, and which metrics were derived from which fields.

Where to go next