Troubleshooting¶
Start with the two installation smoke tests and a simulation-only pass. The messages below cover the most common failures.
numgeo was not found in PATH¶
ACT intentionally resolves the solver through the system PATH.
If the first command fails, add the directory containing the executable to
PATH, not the executable filename itself. Open a new terminal after editing the
Windows environment. On Linux, also check the executable bit with
ls -l /path/to/numgeo.
numgeo exits immediately with 0xC0000135 on Windows¶
0xC0000135 is Windows STATUS_DLL_NOT_FOUND. It occurs while Windows loads
the process, before numgeo parses the input generated by ACT. For the pinned
Windows blob, clean CI identifies six direct Intel runtime imports listed on
the installation page.
They are not bundled, so reinstalling Python/ACT or changing PATH cannot fix
this release artifact.
Retain numgeo-process.log and numgeo-linkage.log when diagnosing the failure.
Use only the verified replacement executable or authorised complete runtime
bundle supplied by the release owner; do not obtain individual DLLs from
unofficial download sites.
ModuleNotFoundError: No module named 'ACT'¶
Use the intended virtual environment and run from the repository root. Put a
custom driver in that directory, or launch a bundled example with python -m,
as shown on the examples page. Do not run a nested example by
double-clicking it.
If a dependency is missing, install the complete supported stack from the installation page. On a restricted computer, use a platform-matched offline wheel directory.
Worker processes start the script repeatedly¶
The driver is missing the multiprocessing guard. CMA-ES, SMAC-style and local
search use spawned workers on all platforms; DEEM also uses spawn
on Windows. Put model construction, globals.setup(...) and the optimiser call
in a function and call it only as follows:
def run_calibration():
# read data, configure ACT, then call the optimiser
...
if __name__ == "__main__":
run_calibration()
The complete pattern is in the Quickstart.
A numgeo evaluation fails or times out¶
ACT assigns a penalty to failed parameter sets so that a global search can continue. Frequent failures usually indicate one of the following:
- bounds include physically inadmissible or numerically unstable combinations;
- units or stress/strain sign conventions do not match the sheet definition;
- the initial state is incompatible with the model;
- the per-test timeout is too short for an otherwise valid calculation;
- the ACT and numgeo executables come from different releases.
First run the initial parameter set only. If it fails, inspect the retained
numgeo input/output before increasing the timeout. If it succeeds, narrow the
offending parameter bounds or add the relevant model constraint. Increase a
timeout through the dictionary passed as globals.setup(Timeout=...); do not
raise every timeout indiscriminately.
Bounds or parameter names are rejected¶
Parameter names are case-sensitive. Copy them from the selected model page or
from its class in ACT.models. Ensure every bound is finite, has two entries and
satisfies lower <= upper. A fixed parameter should normally be omitted from
Free_parameter, rather than represented by an artificial zero-width search
interval.
The base sanisand class is an exception to the usual convenience interface: it
provides built-in bounds through parameter_bounds(...) but does not expose a
public set_bounds(...) method. Select a supported built-in bound or edit the
model implementation; do not call an undocumented method.
The Excel reader returns None¶
This is expected: collect() changes the reader instance in place.
Do not assign the return value of collect().
Excel data are missing or shifted¶
ACT uses sheet names and defined cell positions. Check the sheet reference and, in particular:
- the exact sheet prefix and sequential number;
- units and required metadata cells;
- blank rows inside a data block;
- numbers stored as text;
- formulas whose cached result was not saved by the spreadsheet application.
Open and save formula-based workbooks once in Excel or LibreOffice before reading them on a headless computer. Compare a problematic sheet with the template.
Similarity measure is rejected¶
globals.setup(Similarity=...) accepts exactly frechet, least-square,
mod-least-square, hausdorff and delta-max-value. All optimisers use this
setting. Do not pass a conflicting legacy similarity value to an optimiser.
Oedometric loading-unloading-reloading paths are not single-valued functions of
stress. Use frechet or hausdorff for those paths; pointwise measures are
rejected rather than silently changing the requested metric.
The calibration is too expensive¶
Use the following sequence:
- interpolate very dense experimental records to the resolution justified by the measurements;
- run a simulation-only pass;
- reduce the initial free-parameter set to identifiable parameters;
- try SMAC-style search when the evaluation budget is strict;
- try IPOP-CMA-ES when the response is rugged or contains broad penalty regions;
- use local pattern search only to refine a credible parameter set;
- increase
n_cpuonly within the available memory and numgeo licence/runtime constraints.
See Choosing an optimiser for the algorithm trade-offs.
Outputs cannot be written¶
Use a new, writable calibration directory and close PDF or spreadsheet files that another program has locked. Avoid synchronised/network folders for the temporary evaluation directory; they can add substantial file-system latency. The final report can be copied to such a folder after the run.
CMA-ES, SMAC and local search also prevent two processes from using the same
globals.setup(path=...) directory simultaneously. Wait for the active run to
finish or give each concurrent calibration a different working path.
If the problem persists, retain the terminal output, ACT log, driver, workbook and one failed numgeo run when reporting the issue. Remove confidential test data before sharing files externally.