{"name": "PlanX", "package_name": "planx", "version": "2.7.0", "experimental": false, "qgis_min": "3.22.0", "qgis_max": "4.99.0", "downloads": 3, "uploaded_by": "geo140195philo", "upload_datetime": "2026-06-29T11:39:54.326426", "changelog": "## [2.7.0] - 2026-06-29\r\n\r\nLand-Use Allocation Optimizer \u2014 25 algorithms total.\r\n\r\n### Added\r\n- **Land-Use Allocation Optimizer** (Optimization group): assigns a land\r\n  use to each parcel to **maximize total suitability** while meeting a\r\n  **target area** for each use \u2014 the spatial-allocation problem at the\r\n  heart of plan-making, solved natively with no external solver. You\r\n  supply, on the parcel layer, one **suitability field per land use**\r\n  (0\u20131 or 0\u2013100 \u2014 e.g. straight from Suitability Lab) and a target area\r\n  per use; each parcel is assigned in full to at most one use so the area\r\n  given to a use stays within its target and the **area-weighted\r\n  suitability** is as high as possible. Parcels not needed to meet the\r\n  targets are left **unassigned**; a use that cannot be filled reports a\r\n  **shortfall**. An optional **lock field** fixes already-zoned parcels to\r\n  a use (consuming that use's target). Method: greedy construction (best\r\n  suitability first) plus a local search of single-parcel reassignments\r\n  and **capacity-respecting pairwise swaps** \u2014 a fast heuristic, not a\r\n  guaranteed global optimum. Outputs the parcels with their assigned use,\r\n  its suitability, the parcel area and a locked flag (style by\r\n  `alloc_use` for a land-use map), and a per-use summary table (target vs\r\n  allocated area, shortfall, parcel count and mean suitability achieved).\r\n- `engine/allocate.py` (`parse_targets`, `allocate_land_use`) \u2014 pure\r\n  NumPy, unit-tested; new group-coloured tool icon.\r\n\r\n### Tests\r\n- Engine suite 156 \u2192 168 checks (incl. a greedy-trap case the swap phase\r\n  must escape to reach the optimum); e2e harness 126 \u2192 137 assertions with\r\n  a hand-computed allocation and a locked-parcel scenario \u2014 verified on\r\n  QGIS 3.44 LTR and QGIS 4.0.2.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/planx/version/2.7.0/download/"}