Application manifest¶
Learn how to initialize and validate a manifest with your tool of choice.
- CLI: the Nextmv Command Line Interface (CLI).
An application that runs on the Nextmv platform must contain a file named
app.yaml which is known as the application manifest. This file is used to
specify the execution conditions for the app. You can port any custom app into
the Nextmv platform. You just need the app.yaml manifest in the root of the
project with the appropriate attributes and an adequate entrypoint.
This page will explain every attribute that can be specified in the app.yaml
manifest, and provide examples of manifests for different languages and use
cases.
We include complete examples of app.yaml manifests taken
from our community apps at the end of this documentation page.
type (required)¶
The language type to use for the app. Must be one of:
python. Use for Python applications.java. Use for Java applications.binary. Use for compiled applications, such as Go, C, C++, Rust, etc.
type: python # (1)!
runtime: ghcr.io/nextmv-io/runtime/python:3.11
files:
- main.py
python:
pip-requirements: pyproject.toml # Can be a requirements.txt
- Use
pythonfor Python applications.
runtime (required)¶
The runtime to use for the application. Please see the runtimes documentation for more information.
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11 # (1)!
files:
- main.py
python:
pip-requirements: pyproject.toml # Can be a requirements.txt
- Python applications should use the Python runtime.
files (required)¶
the files to include (or exclude) in the app. Globbing is supported so you may specify individual files or whole directories. Include the entrypoint of the app here. Some examples of supported glob patterns:
**/*.py: all Python files recursively!**/*.pyc: exclude all Python compiled filesapp/**/*.py: all Python files in theappdirectory.
Patterns are applied in order as they are defined.
build (optional)¶
Contains build-specific attributes. This configuration is used to build the
application before it is pushed. The build object can contain the following
properties:
command: the command to run to build the app. This command will be executed without a shell, i.e., directly. The command must exit with a status of0to continue the push process of the app to Nextmv Cloud. This command is executed prior to thepre-pushcommand.environment: environment variables to set when running the build command given as key-value pairs. E.g.GOOS: linux.
Tip
The Nextmv platform mainly uses Linux/ARM64 as the target architecture for apps.
Please make sure your build command is set to build for this architecture.
pre-push (optional)¶
A command to run before the app is pushed to the Nextmv Cloud. This command can
be used to compile a binary, run tests or similar tasks. One difference with
what is specified under build, is that the command will be executed
via the shell (i.e., bash -c on Linux & macOS or cmd /c on Windows). The
command must exit with a status of 0 to continue the push process. This
command is executed just before the app gets bundled and pushed (after the
build command).
execution (optional)¶
Defines how to execute the app. The execution object can contain the following
properties:
-
entrypoint: the entrypoint to use when executing the app. If not specified, the default entrypoint is used based on the apptype. E.g., it can be used to override the default entrypoint ofmain.pyfor Python apps toapp.py. The default entrypoint for each app type is as follows:python:main.pyjava:main.jarbinary:main
-
cwd: the working directory to use when executing the app. If not specified, the root of the app is used. Can be set tosrc/for example if all app files are under asrcdirectory (except for theapp.yaml).
python (optional)¶
Set this property for Python applications. It contains specific attributes that
are needed for these types of apps. The python object can contain the
following properties:
-
pip-requirements: path to a dependencies file containing Python requirements that will be bundled with the app. Supported files are:pyproject.tomlrequirements.txt
-
arch: the architecture to package the Python app for. Supported values are:arm64(default)amd64
-
version: the Python version to package the app for. The default value is3.11.
The Python dependencies are downloaded and bundled as part of the .tar.gz
file that is pushed to the Nextmv platform. The arch and version properties
are used to decide the target architecture and Python version for the
dependencies.
configuration (optional)¶
The configuration for your application. This configuration can be overwritten by instance configurations and run configurations.
content (optional)¶
Content configuration for specifying how the app input/output is handled. The
content object can contain the following properties:
-
format: the actual content format to use for the application. Must be one of:json: the application adheres to thejsoncontent format.multi-file: the application adheres to themulti-filecontent format.
-
multi-file: only configure this object when thecontent.formatis set tomulti-file. Forjsonthis property has no effect.-
input: configuration for the input files. Theinputobject can contain the following properties:path: the path to the input files. The default value isinputs.
-
output: configuration for the output files. Theoutputobject can contain the following properties:solutions: the path to the output solution files. The default value isoutputs/solutions.metrics: the path to the output metrics file. The default value isoutputs/metrics.json.assets: the path to the output visual assets file. The default value isoutputs/assets/assets.json.
-
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11
files:
- main.py
python:
pip-requirements: pyproject.toml
configuration:
content:
format: json # (1)!
- The application adheres to the
jsoninput/output content format.
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11
files:
- main.py
python:
pip-requirements: pyproject.toml
configuration:
content:
format: multi-file # (1)!
multi-file:
input:
path: inputs
output:
solutions: outputs/solutions
metrics: outputs/metrics.json
assets: outputs/assets.json
- The application adheres to the
multi-fileinput/output content format.
options (optional)¶
Configuration for how options (parameters) are handled by the application. The
options object can contain the following properties:
-
strict: it will prevent your app from being run in Nextmv Cloud if you provide options outside of the ones configured initemsifvalidation.enforceisall. Allowed values aretrueorfalse. The default value isfalse. -
validation: validation configuration for your application. Thevalidationobject can have the following properties:enforce: the validation enforcement setting for your application."all"will validate all options in the configuration foroption_type,required, andadditional_attributes. Allowed values are"all"or"none". The default value is"none".
-
format: an optional specification how to translate option values to command line arguments. For example, if your application expects options to be passed as--option valuethen you can specify the format as["--{{name}}", "{{value}}"]. Each option will be translated according to this format, where{{name}}is replaced with the option name and{{value}}with the option value. If no format is specified, options will be passed as-{{name}}={{value}}. In addition, empty values in the resulting command line argument array will be omitted. For example, if you have a boolean optionverbosewith an empty string value ({"verbose":""}) and a format of["--{{name}}", "{{value}}"], the resulting command line argument will be--verbose(the empty string value is omitted). -
items: the actual list of options you would like to configure on your application. It is a list of objects.
The options.items surfaces the model options. For each object in the list,
the available properties to define your option, its value schema and the
control used to render it in Nextmv Console are outlined in the tables below.
| Property | Required | Type | Default | Description |
|---|---|---|---|---|
name |
Yes | string |
N/A | Identifier of your option. |
option_type |
Yes | string |
N/A | The expected type of the option value, used in validation. |
description |
No | string |
None | Description for your option. (The description will appear as a tooltip for the option in Nextmv Console.) |
required |
No | boolean |
false |
Represents whether the options is required, used in validation. |
default |
No | any |
None | Default value applied to your application run if not set in other configuration based on options hierarchy. |
ui |
No | object (see ui table below) |
None | Additional instruction for how the option is rendered in Nextmv Console. |
additional_attributes |
No | object (see additional_attributes table below) |
None | Used by Nextmv Console and for option validation. |
local_only |
No | boolean |
None | When set to true, this option is not sent to Nextmv cloud when pushing an application binary. |
These properties are used only for the Nextmv Console (UI) and have no effect on the application execution.
| Property | Required | Type | Default | Description |
|---|---|---|---|---|
control_type |
No | string (see ui.control_type table below) |
input |
If no control_type is specified, the default is to render the option as a text input. |
hidden_from |
No | array of string (see ui.hidden_from table below) |
None | List of roles from which this option will be hidden in Nextmv Console. |
display_name |
No | string |
None | Used as a display name in the Nextmv Console. If not provided, the option name is shown. |
| Value | Description |
|---|---|
input |
Standard text input field. |
select |
Dropdown selection list. The options to select from are specified with additional_attributes.values. |
multiselect |
Dropdown selection list with multiple selection capabilities. Selections are submitted as a comma-delimited string. The options to select from are specified with additional_attributes.values. |
slider |
Range slider control. |
toggle |
Boolean toggle switch. |
Certain ui controls can only be specified for a certain option_types. The table
below lists the valid control_types depending on which option_type has been
defined.
| Option type | Supported control types | Default |
|---|---|---|
string |
input, select, multiselect |
input |
bool |
toggle |
toggle |
int |
input, slider |
input |
float |
input, slider |
input |
| Value | Description |
|---|---|
root |
account owner role |
admin |
administrator role |
developer |
developer role |
operator |
operator role |
viewer |
viewer role |
| Option type | Control type | Additional attribute | Required | Description |
|---|---|---|---|---|
string |
input |
max_length |
No | The maximum length of the string value. |
min_length |
No | The minimum length of the string value. | ||
string |
select |
values |
Yes | An array of strings for the select dropdown. |
string |
multiselect |
values |
Yes | An array of strings for the multiselect dropdown. |
int |
input |
min |
No | a minimum value for the option. |
max |
No | A maximum value for the option. | ||
step |
No | An interval for the input control. | ||
int |
slider |
min |
Yes | a minimum value for the option. |
max |
Yes | A maximum value for the option. | ||
step |
Yes | An interval for the input control. | ||
int |
select |
values |
Yes | an array of integers for the select dropdown. |
float |
input |
min |
No | a minimum value for the option. |
max |
No | A maximum value for the option. | ||
step |
No | An interval for the input control. | ||
float |
slider |
min |
Yes | a minimum value for the option. |
max |
Yes | A maximum value for the option. | ||
step |
Yes | An interval for the input control. | ||
float |
select |
values |
Yes | an array of floats for the select dropdown. |
Please find some examples of configuring options for your application below.
configuration:
content:
format: json
options:
strict: false
validation:
enforce: all
items:
- name: duration
option_type: int
default: 30
description: Max runtime duration (in seconds).
required: false
additional_attributes: # (1)!
min: 1
max: 300
step: 1
ui: # (2)!
control_type: slider
display_name: Duration
- name: provider
option_type: string
default: highs
description: Solver provider.
required: false
ui: # (3)!
control_type: input
display_name: Provider
- Used the
additional_attributesobject for theintoption_type. - Used the
uiobject for theintoption_type. - Used the
uiobject for thestringoption_type.
Complete examples¶
The following are complete examples of app.yaml manifests taken from the
community apps repository. They combine different types,
runtimes, file patterns, build and pre-push commands, content formats, and
option configurations.
# This manifest holds the information the app needs to run on Nextmv.
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11
python:
# All listed packages will get bundled with the app.
pip-requirements: pyproject.toml # Can be a requirements.txt
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.py
- visuals.py
configuration:
# Specify the format the app reads and writes.
content:
format: json # Read JSON from stdin and write JSON to stdout.
options:
strict: false
items:
- name: objective
option_type: string
default: average_distance
required: false
description: Minimizes for average_distance, total_distance, or max_distance
additional_attributes:
values:
- average_distance
- total_distance
- max_distance
ui:
control_type: select
hidden_from:
- operator
display_name: Objective
- name: parks_override
option_type: int
required: false
description: Number of parks to build (from 1 to 10). Defaults to the value in the input.
additional_attributes:
min: 1
max: 10
step: 1
ui:
control_type: input
hidden_from:
- operator
display_name: Number of parks (override)
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/python:3.11
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.py
python:
# Packages the app depends on need to be listed in a requirements.txt file
# that is referenced here. All listed packages will get bundled with the app.
pip-requirements: pyproject.toml # Can be a requirements.txt
configuration:
# Specify the format the app reads and writes.
content:
format: multi-file # Read and write files from disk.
# Configuration of the multi-file format.
multi-file:
input:
path: inputs # Directory where the app will read input files from.
output:
solutions: outputs/solutions # Directory where the app will write solution files to.
metrics: outputs/metrics.json # Path where the app will write metrics to.
# Define the options (parameters) of the app.
options:
strict: false
items:
- name: duration
option_type: int
default: 30
description: Max solver runtime in seconds
required: false
additional_attributes:
min: 1
max: 300
step: 10
ui:
control_type: slider
display_name: Duration
- name: provider
option_type: string
default: SCIP
description: Solver provider
required: false
ui:
control_type: input
display_name: Provider
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/cuopt:latest
python:
# All listed packages will get bundled with the app.
pip-requirements: pyproject.toml # Can be a requirements.txt
arch: amd64 # Nextmv Cloud runs cuOpt models on amd64 instances.
version: 3.12 # The cuOpt image uses Python 3.12.
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.py
- visual.py
configuration:
# Specify the format the app reads and writes.
content:
format: json # Read JSON from stdin and write JSON to stdout.
# Define the options (parameters) of the app.
options:
strict: false
items:
- name: time_limit
option_type: float
default: 1
description: Max solver runtime in seconds
required: false
additional_attributes:
min: 0.1
max: 300
step: 0.1
ui:
control_type: slider
display_name: Time Limit
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: python
runtime: ghcr.io/nextmv-io/runtime/pyomo:latest
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.py
python:
# Packages the app depends on need to be listed in a requirements.txt file
# that is referenced here. All listed packages will get bundled with the app.
pip-requirements: pyproject.toml # Can be a requirements.txt
configuration:
# Specify the format the app reads and writes.
content:
format: json # Read JSON from stdin and write JSON to stdout.
# Define the options (parameters) of the app.
options:
strict: false
items:
- name: duration
option_type: int
default: 30
description: Max runtime duration (in seconds).
required: false
additional_attributes:
min: 1
max: 300
step: 10
ui:
control_type: slider
display_name: Duration
- name: provider
option_type: string
default: cbc
description: Solver provider.
required: false
ui:
control_type: input
display_name: Provider
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: go
runtime: ghcr.io/nextmv-io/runtime/default:latest
# Directives to build a Go binary from the app.
build:
command: go build -o main .
environment:
GOOS: linux
GOARCH: arm64
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main
configuration:
# Specify the format the app reads and writes.
content:
format: "json" # Read JSON from stdin and write JSON to stdout.
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: go
runtime: ghcr.io/nextmv-io/runtime/default:latest
# Directives to build a Go binary from the app.
build:
command: go build -o main .
environment:
GOOS: linux
GOARCH: arm64
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main
configuration:
options:
strict: false
validation:
enforce: all
items:
# Check options
- name: check.duration
option_type: string
description: "Maximum duration of the check (e.g.: '30s', '5m')"
ui:
control_type: input
display_name: Check Duration
- name: check.verbosity
option_type: string
description: "{off, low, medium, high} verbosity of the check"
additional_attributes:
values:
- "off"
- "low"
- "medium"
- "high"
ui:
control_type: select
display_name: Check Verbosity
# Format options
- name: format.disable.progression
option_type: bool
description: Disable the progression series
ui:
control_type: toggle
display_name: Disable Progression
hidden_from:
- viewer
- operator
# Model constraint disable options
- name: model.constraints.disable.attributes
option_type: bool
description: Ignore the compatibility attributes constraint
ui:
control_type: toggle
display_name: Disable Attributes Constraint
- name: model.constraints.disable.capacities
option_type: string
description: "Ignore the capacity constraint for the given resource names (e.g.: 'weight,volume')"
ui:
control_type: input
display_name: Disable Specific Capacities
- name: model.constraints.disable.capacity
option_type: bool
description: Ignore the capacity constraint for all resources
ui:
control_type: toggle
display_name: Disable All Capacity Constraints
- name: model.constraints.disable.distancelimit
option_type: bool
description: Ignore the distance limit constraint
ui:
control_type: toggle
display_name: Disable Distance Limit
- name: model.constraints.disable.groups
option_type: bool
description: Ignore the groups constraint
ui:
control_type: toggle
display_name: Disable Groups Constraint
- name: model.constraints.disable.maximumduration
option_type: bool
description: Ignore the maximum duration constraint
ui:
control_type: toggle
display_name: Disable Maximum Duration
- name: model.constraints.disable.maximumstops
option_type: bool
description: Ignore the maximum stops constraint
ui:
control_type: toggle
display_name: Disable Maximum Stops
- name: model.constraints.disable.maximumwaitstop
option_type: bool
description: Ignore the maximum stop wait constraint
ui:
control_type: toggle
display_name: Disable Maximum Wait Stop
- name: model.constraints.disable.maximumwaitvehicle
option_type: bool
description: Ignore the maximum vehicle wait constraint
ui:
control_type: toggle
display_name: Disable Maximum Wait Vehicle
- name: model.constraints.disable.mixingitems
option_type: bool
description: Ignore the do not mix items constraint
ui:
control_type: toggle
display_name: Disable Mixing Items
- name: model.constraints.disable.precedence
option_type: bool
description: Ignore the precedence (pickups & deliveries) constraint
ui:
control_type: toggle
display_name: Disable Precedence
- name: model.constraints.disable.starttimewindows
option_type: bool
description: Ignore the start time windows constraint
ui:
control_type: toggle
display_name: Disable Start Time Windows
- name: model.constraints.disable.vehicleendtime
option_type: bool
description: Ignore the vehicle end time constraint
ui:
control_type: toggle
display_name: Disable Vehicle End Time
- name: model.constraints.disable.vehiclestarttime
option_type: bool
description: Ignore the vehicle start time constraint
ui:
control_type: toggle
display_name: Disable Vehicle Start Time
# Model constraint enable options
- name: model.constraints.enable.cluster
option_type: bool
description: Enable the cluster constraint
ui:
control_type: toggle
display_name: Enable Cluster Constraint
# Model objectives
- name: model.objectives.capacities
option_type: string
description: "Capacity objective, provide triple for each resource 'name=default;factor=1.0;offset=0.0'"
ui:
control_type: input
display_name: Capacities Objective
- name: model.objectives.cluster
option_type: float
description: "Factor to weigh the cluster objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Cluster Objective
- name: model.objectives.distance
option_type: float
description: "Factor to weigh the travel distance objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Distance Objective
- name: model.objectives.earlyarrivalpenalty
option_type: float
description: "Factor to weigh the early arrival objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Early Arrival Penalty
- name: model.objectives.latearrivalpenalty
option_type: float
description: "Factor to weigh the late arrival objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Late Arrival Penalty
- name: model.objectives.minstops
option_type: float
description: "Factor to weigh the min stops objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Min Stops Objective
- name: model.objectives.stopbalance
option_type: float
description: "Factor to weigh the stop balance objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Stop Balance Objective
- name: model.objectives.travelduration
option_type: float
description: "Factor to weigh the travel duration objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Travel Duration Objective
- name: model.objectives.unplannedpenalty
option_type: float
description: "Factor to weigh the unplanned objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Unplanned Penalty
- name: model.objectives.vehicleactivationpenalty
option_type: float
description: "Factor to weigh the vehicle activation objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Vehicle Activation Penalty
- name: model.objectives.vehiclesduration
option_type: float
description: "Factor to weigh the vehicles duration objective (e.g.: 2.0)"
ui:
control_type: input
display_name: Vehicles Duration Objective
# Model properties
- name: model.properties.disable.durationgroups
option_type: bool
description: Ignore the durations groups of stops
ui:
control_type: toggle
display_name: Disable Duration Groups
- name: model.properties.disable.durations
option_type: bool
description: Ignore the durations of stops
ui:
control_type: toggle
display_name: Disable Durations
- name: model.properties.disable.initialsolution
option_type: bool
description: Ignore the initial solution
ui:
control_type: toggle
display_name: Disable Initial Solution
- name: model.properties.disable.stopdurationmultipliers
option_type: bool
description: Ignore the stop duration multipliers defined on vehicles
ui:
control_type: toggle
display_name: Disable Stop Duration Multipliers
- name: model.properties.maximumtimehorizon
option_type: int
description: "Maximum time horizon for the model in seconds (e.g.: 604800)"
ui:
control_type: input
display_name: Maximum Time Horizon
hidden_from:
- viewer
- operator
# Model validation
- name: model.validate.disable.resources
option_type: bool
description: Disable the resources validation
ui:
control_type: toggle
display_name: Disable Resources Validation
hidden_from:
- viewer
- operator
- name: model.validate.disable.starttime
option_type: bool
description: Disable the start time validation
ui:
control_type: toggle
display_name: Disable Start Time Validation
hidden_from:
- viewer
- operator
- name: model.validate.enable.matrix
option_type: bool
description: Enable matrix validation
ui:
control_type: toggle
display_name: Enable Matrix Validation
hidden_from:
- viewer
- operator
- name: model.validate.enable.matrixasymmetrytolerance
option_type: int
description: "Percentage of acceptable matrix asymmetry, requires matrix validation enabled (e.g.: 10 - for 10%)"
ui:
control_type: input
display_name: Matrix Asymmetry Tolerance
hidden_from:
- viewer
- operator
# Runner options
- name: runner.input.path
option_type: string
description: The input file path
local_only: true
- name: runner.output.path
option_type: string
description: The output file path
local_only: true
- name: runner.output.solutions
option_type: string
description: "{all, last} specifies whether to output all solutions or only the last one"
additional_attributes:
values:
- "all"
- "last"
ui:
control_type: select
display_name: Output Solutions
hidden_from:
- viewer
- operator
- name: runner.profile.cpu
option_type: string
description: The CPU profile file path
local_only: true
- name: runner.profile.memory
option_type: string
description: The memory profile file path
local_only: true
# Solve options
- name: solve.duration
option_type: string
description: "Maximum duration of the solver (e.g.: '30s', '5m')"
ui:
control_type: input
display_name: Solve Duration
- name: solve.iterations
option_type: int
description: "Maximum number of iterations, -1 assumes no limit; iterations are counted after start solutions are generated (e.g.: 100000)"
ui:
control_type: input
display_name: Solve Iterations
hidden_from:
- viewer
- operator
- name: solve.parallelruns
option_type: int
description: "Maximum number of parallel runs, -1 results in using all available resources (e.g.: 4)"
ui:
control_type: input
display_name: Parallel Runs
hidden_from:
- viewer
- operator
- name: solve.plateau.absolutethreshold
option_type: float
description: "Absolute threshold for significant improvement (e.g.: 1000.0)"
ui:
control_type: input
display_name: Plateau Absolute Threshold
- name: solve.plateau.delay
option_type: string
description: "Delay before plateau detection starts (e.g.: '30s', '5m')"
ui:
control_type: input
display_name: Plateau Delay
- name: solve.plateau.duration
option_type: string
description: "Maximum duration without (significant) improvement before solver stops itself (e.g.: '30s', '5m')"
ui:
control_type: input
display_name: Plateau Duration
- name: solve.plateau.iterations
option_type: int
description: "Maximum number of iterations without (significant) improvement before solver stops itself (e.g.: 10000)"
ui:
control_type: input
display_name: Plateau Iterations
- name: solve.plateau.relativethreshold
option_type: float
description: "Relative threshold for significant improvement (e.g.: 0.01 for 1%)"
ui:
control_type: input
display_name: Plateau Relative Threshold
- name: solve.rundeterministically
option_type: bool
description: Run the parallel solver deterministically
ui:
control_type: toggle
display_name: Run Deterministically
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.delta
option_type: int
description: "Delta is the initial change in value after a number of iterations without improvement (e.g.: 0). This is used to adjust the group size of the plan operator during solving."
ui:
control_type: input
display_name: Plan Group Size Delta
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.deltaafteriterations
option_type: int
description: "Number of iterations without improvement after which the value is changed (e.g.: 1000000000). This is used to adjust the group size of the plan operator during solving."
ui:
control_type: input
display_name: Plan Group Size Delta After Iterations
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.maxvalue
option_type: int
description: "Maximum value for the group size (e.g.: 2). This is used to adjust the group size of the plan operator during solving."
ui:
control_type: input
display_name: Plan Group Size Max Value
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.minvalue
option_type: int
description: "Minimum value for the group size (e.g.: 2). This is used to adjust the group size of the plan operator during solving."
ui:
control_type: input
display_name: Plan Group Size Min Value
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.snapbackafterimprovement
option_type: bool
description: "Snap back to the start value after an improvement is found. This is used to adjust the group size of the plan operator during solving."
ui:
control_type: toggle
display_name: Plan Group Size Snap Back After Improvement
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.startvalue
option_type: int
description: "Starting value for the group size (e.g.: 2). This is used to adjust the group size of the plan operator during solving."
ui:
control_type: input
display_name: Plan Group Size Start Value
hidden_from:
- viewer
- operator
- name: solve.solver.plangroupsize.zigzag
option_type: bool
description: "Zigzag is a flag that indicates if the value should zigzag between the min and max value. This is used to adjust the group size of the plan operator during solving."
ui:
control_type: toggle
display_name: Plan Group Size Zigzag
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.delta
option_type: int
description: "Delta is the initial change in value after a number of iterations without improvement (e.g.: 2). This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: input
display_name: Unplan Units Delta
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.deltaafteriterations
option_type: int
description: "Number of iterations without improvement after which the value is changed (e.g.: 125). This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: input
display_name: Unplan Units Delta After Iterations
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.maxvalue
option_type: int
description: "Maximum value for the number of units (e.g.: -1). This is used to adjust the number of units for the unplan operator during solving. -1 auto-configures to a fraction of the total number of stops."
ui:
control_type: input
display_name: Unplan Units Max Value
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.minvalue
option_type: int
description: "Minimum value for the number of units (e.g.: 2). This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: input
display_name: Unplan Units Min Value
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.snapbackafterimprovement
option_type: bool
description: "Snap back to the start value after an improvement is found. This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: toggle
display_name: Unplan Units Snap Back After Improvement
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.startvalue
option_type: int
description: "Starting value for the number of units (e.g.: 2). This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: input
display_name: Unplan Units Start Value
hidden_from:
- viewer
- operator
- name: solve.solver.unplanunits.zigzag
option_type: bool
description: "Zigzag is a flag that indicates if the value should zigzag between the min and max value. This is used to adjust the number of units for the unplan operator during solving."
ui:
control_type: toggle
display_name: Unplan Units Zigzag
hidden_from:
- viewer
- operator
- name: solve.solver.unplanweights
option_type: string
description: "Comma separated list of weights for unplanning strategies (e.g.: 'Vehicle:3,Island:1,Location:300')"
ui:
control_type: input
display_name: Unplan Weights
hidden_from:
- viewer
- operator
- name: solve.startsolutions
option_type: int
description: "Number of solutions to generate on top of those passed in; one solution generated with sweep algorithm, the rest generated randomly (e.g.: 5)"
ui:
control_type: input
display_name: Start Solutions
hidden_from:
- viewer
- operator
# Specify the format the app reads and writes.
content:
format: "json" # Read JSON from stdin and write JSON to stdout.
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: java
runtime: ghcr.io/nextmv-io/runtime/java:latest
# Directives to compile a binary from the app.
pre-push: mvn package
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.jar
configuration:
# Specify the format the app reads and writes.
content:
format: "multi-file" # Read and write files from disk.
# This manifest holds the information the app needs to run on the Nextmv Cloud.
type: java
runtime: ghcr.io/nextmv-io/runtime/java:latest
# Directives to compile a binary from the app.
pre-push: mvn package
# List all files/directories that should be included in the app. Globbing
# (e.g.: configs/*.json) is supported.
files:
- main.jar
- lib/*.so
- lib/*.jar
configuration:
# Specify the format the app reads and writes.
content:
format: "json" # Read JSON from stdin and write JSON to stdout.