Numerically Optimized Design ======================================================================== Numerically Optimized Design (NOD) is a Fortran-based numerical spatial statistical design optimization system for 2D correlated data on arbitrary domain that is discretized via fine equidistant grid. The user supplies the grid covering the domain (containing spatial coordinates and relevant covariates in appropriate matrices), set of existing measurement points (containing only spatial coordinates), and covariance parameters. The system then finds optimal placement of a new measurement point with respect to the minimax criterion (minimizing the maximum Kriging spatial prediction variance in the grid by the placement). This criterion arises naturally when considering spatial interpolation (and subsequent mapping) of a measured quantity within area from a finite set of measurements of a given variable (e.g. a concentration of air pollutant). Map/interpolation quality is then quantified by Kriging variances at all grid points and the worst case is represented by the maximum to be minimized. While the maximum is always evaluated over the whole grid, the actual measurement placement can be further restricted by user-supplied vector of admissibility indicators (1/0 variables indicating whether a given grid point is/is not admissible for new measurement placement e.g. through practical/logistical or other considerations). Searching for the optimal location of more measurement points can be performed by subsequent update of input files and repeated execution of the main program. This work has been supported from the ARAMIS (SS02030031) project funded by the Czech Technology Agency. Authors: Ctirad Matonoha (matonoha@cs.cas.cz), Marek Brabec (mbrabec@cs.cas.cz) Paper: Brabec M., Matonoha C.: in preparation. The main file: ------------------------------------------------------------------------ NOD10_MAIN.FOR - if default values of basic parameters are not sufficient, they must be enlarged * MNM - max number of grid points (default MNM = 100000) * MNN - max number of measurement points (default MNN = 200) * MNP - max number of covariates (default MNP = 5) Structure of input files: ------------------------------------------------------------------------ NOD10_INP_DATA.TXT * the indicator number (limit) for a city NOD10_INP_GRIDPOINTS.TXT - m rows containing * x-coordination of a grid point * y-coordination of a grid point * number of inhabitants in this grid point * p-dimensional vector of covariates associated with this grid point NOD10_INP_MEASUREMENTS.TXT - n rows containing * x-coordination of a measurement point * y-coordination of a measurement point NOD10_INP_SK_ID.TXT - m rows containing * 1/0 variables indicating whether a given grid point is/is not admissible for new measurement placement NOD10_INP_THETA.TXT * covariance parameters (vector theta): range_P, sigma_P, range_M, sigma_M, tau (in this order) Structure of output files: ------------------------------------------------------------------------ NOD10_OUTPUT.INF - file containing basic information about the results * total number of measurement placements (candidates) considered * maximal value of function v1 over all grid points * optimal placement of a new measurement (minmax value of function v1bar) * information about output files * computational time NOD10_OUTPUT_V1.CSV - m rows containing * index of a grid point * its x-coordination * its y-coordination * the value of function v1(s0) NOD10_OUTPUT_V1HAT.CSV - rows (whose number is given by the number of ones in the 1/0 file) containing * index of a grid point * its x-coordination * its y-coordination * index of a solution grid point for maximum * its x-coordination * its y-coordination * the value of function max{s0} v1hat(s0) How to use the software: ------------------------------------------------------------------------ Prepare the five input files as described above Either: * download the executable file NOD10_MAIN.EXE and run this file Or: * download the source code NOD10_MAIN.FOR and the library NOD10_LIB.A * in NOD10_MAIN.FOR, check sufficiently large values of basic parameters as described above * make sure you have a GFortran compiler * download and run the NOD10_MAIN.BAT file Obtain the three output files as described above Licence: ------------------------------------------------------------------------ MIT License Copyright (c) 2026 Institute of Computer Science, Czech Academy of Sciences Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Example: ------------------------------------------------------------------------ There are source input files in the example to find a new measurement point in Prague The ones in the 1/0 file indicate the coordinates in the grid corresponding to Prague The system finds an optimal placement of a new measurement point, see the output files The JPG pictures show the solution (the graphical outputs are not a part of the system)