Data Format
Download the Challenge 3 Data Format document dated January 24, 2023 (v1.1.3). List of updates and previous versions available here.
Introduction
Challenge 3 input data consists of a single JSON (JavaScript Object Notation) file. JSON is also used for the solution file that must be written by the solver and is used to score the results. JSON is relatively easy to learn, read and write, while also easy for software to parse and generate. It is text-based, lightweight, and has an easy-to-parse data format requiring no additional code for parsing. The Python code check_data.py (see below) uses the Python library Pydantic that has built-in support for JSON encoding and decoding to create a custom validation mechanism that uses the LaTeX version of the Data Format to define the input syntax.
The data input file name is passed to the solver as an input parameter, typically of the form scenario_nnn.json.
The output solution file MUST be named solution.json.
Reading the JSON input files
All of the input JSON files have been checked for consistency with the Challenge 3 Data Format document by a Python code called check_data.py. Entrants may want to use this code as an example of how to read and parse the input. The code uses two Github repositories:
https://github.com/GOCompetition/C3DataUtilities, which has the check_data.py source, and
https://github.com/Smart-DS/GO-3-data-model, which invokes the Pydantic model.
Installation instructions may be found in C3DataUtilities/READM.md. Please check frequently for updates. Use commits from April 25, 2023, or later, for consistency with 5/15/23 version of Problem Formulation.
Reading the JSON solution files
The Competition uses datautilities/evaluation.py in C3DataUtilities to check the feasibility and calculate the objective for scoring. We recommend that Entrants also use this code to check their solution files for proper syntax and correctness.