{
  "access": {
    "embargo": {
      "active": false,
      "reason": null
    },
    "files": "public",
    "record": "public",
    "status": "open"
  },
  "created": "2025-04-09T23:25:00.441008+00:00",
  "custom_fields": {
    "code:codeRepository": "https://github.com/mork-optimization/mork"
  },
  "deletion_status": {
    "is_deleted": false,
    "status": "P"
  },
  "files": {
    "count": 1,
    "enabled": true,
    "entries": {
      "mork-optimization/mork-mork-parent-0.21.zip": {
        "access": {
          "hidden": false
        },
        "checksum": "md5:d88714460f3de8cbc56134f7de728ffd",
        "ext": "zip",
        "id": "06157384-e567-4de9-8470-e963873545b6",
        "key": "mork-optimization/mork-mork-parent-0.21.zip",
        "links": {
          "container": "https://zenodo.org/api/records/15186198/files/mork-optimization/mork-mork-parent-0.21.zip/container",
          "content": "https://zenodo.org/api/records/15186198/files/mork-optimization/mork-mork-parent-0.21.zip/content",
          "self": "https://zenodo.org/api/records/15186198/files/mork-optimization/mork-mork-parent-0.21.zip"
        },
        "metadata": null,
        "mimetype": "application/zip",
        "size": 4722967,
        "storage_class": "L"
      }
    },
    "order": [],
    "total_bytes": 4722967
  },
  "id": "15186198",
  "is_draft": false,
  "is_published": true,
  "links": {
    "access": "https://zenodo.org/api/records/15186198/access",
    "access_grants": "https://zenodo.org/api/records/15186198/access/grants",
    "access_links": "https://zenodo.org/api/records/15186198/access/links",
    "access_request": "https://zenodo.org/api/records/15186198/access/request",
    "access_users": "https://zenodo.org/api/records/15186198/access/users",
    "archive": "https://zenodo.org/api/records/15186198/files-archive",
    "archive_media": "https://zenodo.org/api/records/15186198/media-files-archive",
    "communities": "https://zenodo.org/api/records/15186198/communities",
    "communities-suggestions": "https://zenodo.org/api/records/15186198/communities-suggestions",
    "doi": "https://doi.org/10.5281/zenodo.15186198",
    "draft": "https://zenodo.org/api/records/15186198/draft",
    "file_modification": "https://zenodo.org/api/records/15186198/file-modification",
    "files": "https://zenodo.org/api/records/15186198/files",
    "latest": "https://zenodo.org/api/records/15186198/versions/latest",
    "latest_html": "https://zenodo.org/records/15186198/latest",
    "media_files": "https://zenodo.org/api/records/15186198/media-files",
    "parent": "https://zenodo.org/api/records/6241726",
    "parent_doi": "https://doi.org/10.5281/zenodo.6241726",
    "parent_doi_html": "https://zenodo.org/doi/10.5281/zenodo.6241726",
    "parent_html": "https://zenodo.org/records/6241726",
    "preview_html": "https://zenodo.org/records/15186198?preview=1",
    "quota_increase": "https://zenodo.org/api/records/15186198/quota-increase",
    "request_deletion": "https://zenodo.org/api/records/15186198/request-deletion",
    "requests": "https://zenodo.org/api/records/15186198/requests",
    "reserve_doi": "https://zenodo.org/api/records/15186198/draft/pids/doi",
    "self": "https://zenodo.org/api/records/15186198",
    "self_doi": "https://doi.org/10.5281/zenodo.15186198",
    "self_doi_html": "https://zenodo.org/doi/10.5281/zenodo.15186198",
    "self_html": "https://zenodo.org/records/15186198",
    "self_iiif_manifest": "https://zenodo.org/api/iiif/record:15186198/manifest",
    "self_iiif_sequence": "https://zenodo.org/api/iiif/record:15186198/sequence/default",
    "versions": "https://zenodo.org/api/records/15186198/versions"
  },
  "media_files": {
    "count": 0,
    "enabled": false,
    "entries": {},
    "order": [],
    "total_bytes": 0
  },
  "metadata": {
    "creators": [
      {
        "affiliations": [
          {
            "name": "Universidad Rey Juan Carlos"
          }
        ],
        "person_or_org": {
          "family_name": "Ra\u00fal Mart\u00edn",
          "name": "Ra\u00fal Mart\u00edn",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Universidad Rey Juan Carlos"
          }
        ],
        "person_or_org": {
          "family_name": "Sergio Cavero",
          "name": "Sergio Cavero",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "@GRAFO-URJC"
          }
        ],
        "person_or_org": {
          "family_name": "Javier Yuste",
          "name": "Javier Yuste",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Universidad Rey Juan Carlos"
          }
        ],
        "person_or_org": {
          "family_name": "Isaac Lozano Osorio",
          "name": "Isaac Lozano Osorio",
          "type": "personal"
        }
      },
      {
        "affiliations": [
          {
            "name": "Universidad Rey Juan Carlos"
          }
        ],
        "person_or_org": {
          "family_name": "Jos\u00e9 Manuel (Chema) Colmenar",
          "name": "Jos\u00e9 Manuel (Chema) Colmenar",
          "type": "personal"
        }
      }
    ],
    "description": "<h2>Changelog</h2>\n<ul>\n<li>(New) Objective class: a class that represents an objective function of a problem. Each Objective has a name, a direction (minimize or maximize), and functions for extracting the value of the objective from Moves and from Solutions. See docs for a detailed description.</li>\n<li>(New) Util methods: CollectionUtil::getBest(Iterable,ToDoubleFunction), ArrayUtil::stats(double[]), ArrayUtil::stats(int[]), ArrayUtil::stats(long[]), ReferenceResult::setScore(String, double)</li>\n<li>(New) Validator methods: getFailCount, getReasonsFailed</li>\n<li>(New) Allow users to enable or disable validations for the current thread. New methods: Context.Configurator.enableValidations(), Context.Configurator.disableValidations()</li>\n<li>(New) Support for AspectJ, first magic annotation @TimeStats implemented to measure the time of any method.</li>\n<li>(New) Ablation test: run ablation test by default after autoconfig procedure.</li>\n<li>(New) Irace plots: generate an HTML report with the results of running the autoconfig procedure.</li>\n<li>(New) Two ParetoSet implementations are provided: a simple list based (should be correct, but slow) and a NDTree based implementation (should be fast, but may contain bugs).</li>\n<li>(New) ValidationResult: allow accumulating errors.</li>\n<li>(New) PythonUtil: easily run Python commands inside a virtual environment</li>\n<li>(New) When we report an unhandled exception, filter some stackframes that are not relevant to the user code. Full stacktrace still logged at trace level.</li>\n<li>(New) Add option to use AUC when using Irace in manual mode</li>\n<li>(Breaking) Due to changes in how objectives are handled, ReferenceResult methods have been renamed for clarity.</li>\n<li>(Breaking) Removed Improver::_improve, please implement Improver::improve directly instead. To migrate, just rename the method and make it public.</li>\n<li>(Breaking) DoubleComparator epsilon is now relative to the values being compared, not an absolute value.</li>\n<li>(Fix) Best solution per algorithm is not exported if repetitions = 1</li>\n<li>(Fix) Best solution per instance is not exported if there is only one algorithm</li>\n<li>(Fix) Math.random, Collections.shuffle now blocked using AspectJ instead of reflection. --add-opens no longer necessary.</li>\n<li>(Fix) Add @JsonIgnore to instance in solution class already exists in getter, but serializer may be configured to use fields instead of methods.</li>\n<li>(Fix) Gracefully handle experiment declarations with 0 algorithms.</li>\n<li>(Fix) #222 by @jmcolmenar: Local serializers.yml has no preference</li>\n<li>(Fix) #229 by @scaverod: Solution properties are not exported to JSON</li>\n<li>(Fix) Allow null customProperties in solution</li>\n<li>(Deleted) Solution::isBetterThan, unused and not necessary.</li>\n<li>(Deleted) Solution::getScore, Solution::recalculateScore: score recalculation should now be done in the solution validator implementation, and getScore can be any method the user wants, as long as it is declared as an Objective.</li>\n<li>(Deleted) LazyMove &amp; EagerMove: mostly unused and can be replaced by a normal Move. See SwapNeighborhood in TSP module for an example lazy implementation.</li>\n</ul>\n<h2>Other PRs</h2>\n<ul>\n<li>Irace upgrade and objectives refactor by @rmartinsanta in https://github.com/mork-optimization/mork/pull/261</li>\n<li>Update README.md by @JavierYuste in https://github.com/mork-optimization/mork/pull/268</li>\n<li>Add two ParetoSet implementations by @rmartinsanta in https://github.com/mork-optimization/mork/pull/273</li>\n<li>Bump jackson.version from 2.17.2 to 2.18.1 by @dependabot in https://github.com/mork-optimization/mork/pull/274</li>\n<li>Bump org.apache.maven.plugins:maven-javadoc-plugin from 3.10.1 to 3.11.1 by @dependabot in https://github.com/mork-optimization/mork/pull/277</li>\n<li>Bump org.apache.maven.plugins:maven-gpg-plugin from 3.2.5 to 3.2.7 by @dependabot in https://github.com/mork-optimization/mork/pull/276</li>\n<li>Prepare v20 by @rmartinsanta in https://github.com/mork-optimization/mork/pull/291</li>\n</ul>\n<p><strong>Full Changelog</strong>: https://github.com/mork-optimization/mork/compare/mork-parent-0.20...mork-parent-0.21</p>",
    "publication_date": "2025-04-09",
    "publisher": "Zenodo",
    "related_identifiers": [
      {
        "identifier": "https://github.com/mork-optimization/mork/tree/mork-parent-0.21",
        "relation_type": {
          "id": "issupplementto",
          "title": {
            "de": "Erg\u00e4nzt",
            "en": "Is supplement to"
          }
        },
        "resource_type": {
          "id": "software",
          "title": {
            "de": "Software",
            "en": "Software"
          }
        },
        "scheme": "url"
      }
    ],
    "resource_type": {
      "id": "software",
      "title": {
        "de": "Software",
        "en": "Software"
      }
    },
    "rights": [
      {
        "description": {
          "en": "A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code."
        },
        "id": "mit",
        "props": {
          "scheme": "spdx",
          "url": "https://opensource.org/licenses/MIT"
        },
        "title": {
          "en": "MIT License"
        }
      }
    ],
    "title": "mork-optimization/mork: mork-parent-0.21",
    "version": "mork-parent-0.21"
  },
  "parent": {
    "access": {
      "owned_by": {
        "user": "295142"
      },
      "settings": {
        "accept_conditions_text": null,
        "allow_guest_requests": false,
        "allow_user_requests": false,
        "secret_link_expiration": 0
      }
    },
    "communities": {
      "default": "cfe8768b-c3f0-4e78-a796-17b347a055cb",
      "entries": [
        {
          "access": {
            "member_policy": "open",
            "members_visibility": "public",
            "record_submission_policy": "open",
            "review_policy": "closed",
            "visibility": "public"
          },
          "children": {
            "allow": false
          },
          "created": "2024-12-18T15:46:45.925454+00:00",
          "custom_fields": {
            "subjects": [
              {
                "id": "mesh:D000066506"
              },
              {
                "id": "mesh:D000465"
              },
              {
                "id": "euroscivoc:1629"
              }
            ]
          },
          "deletion_status": {
            "is_deleted": false,
            "status": "P"
          },
          "id": "cfe8768b-c3f0-4e78-a796-17b347a055cb",
          "links": {},
          "metadata": {
            "description": "The GRAFO Research Group on Zenodo focuses heuristics and metaheuristics. This community shares research, datasets, and publications, fostering open science and innovation. Join us to collaborate and explore cutting-edge development",
            "organizations": [
              {
                "name": "Group for Research in Algorithms For Optimization"
              },
              {
                "id": "01v5cv687"
              }
            ],
            "title": "GRAFO",
            "type": {
              "id": "organization"
            },
            "website": "https://grafo.etsii.urjc.es/"
          },
          "revision_id": 5,
          "slug": "grafo",
          "updated": "2024-12-19T18:41:20.736828+00:00"
        }
      ],
      "ids": [
        "cfe8768b-c3f0-4e78-a796-17b347a055cb"
      ]
    },
    "id": "6241726",
    "pids": {
      "doi": {
        "client": "datacite",
        "identifier": "10.5281/zenodo.6241726",
        "provider": "datacite"
      }
    }
  },
  "pids": {
    "doi": {
      "client": "datacite",
      "identifier": "10.5281/zenodo.15186198",
      "provider": "datacite"
    },
    "oai": {
      "identifier": "oai:zenodo.org:15186198",
      "provider": "oai"
    }
  },
  "revision_id": 4,
  "stats": {
    "all_versions": {
      "data_volume": 599415794.0,
      "downloads": 184,
      "unique_downloads": 182,
      "unique_views": 797,
      "views": 817
    },
    "this_version": {
      "data_volume": 226702416.0,
      "downloads": 48,
      "unique_downloads": 48,
      "unique_views": 211,
      "views": 212
    }
  },
  "status": "published",
  "swh": {
    "swhid": "swh:1:dir:30b992c50d2575615f869ca883024b80063ec4ef;origin=https://doi.org/10.5281/zenodo.6241726;visit=swh:1:snp:5af61dc678cb119875a21b07120be715329e9475;anchor=swh:1:rel:7b092ff98b8e4afca1830960d374276796a4fdf7;path=mork-optimization-mork-eda24b6"
  },
  "updated": "2025-04-09T23:25:00.645093+00:00",
  "versions": {
    "index": 12,
    "is_latest": false
  }
}