MynachMelyn
New member
- Joined
- Feb 1, 2022
- Messages
- 1
So I'm writing a tool for plotting deliveries between outposts in space (it's a long story). These outposts are on either planets, moons, or space stations. Currently, I'm only interested in dealing with a single system consisting of a star, some planets around that star, and moons and stations around those planets. Due to the fact that I can't get accurate positions of these bodies, I have generalised the problem to use a hierarchy of nodes, where the distance between any two outposts is instead the hierarchical depth:
Star
----planet A
-------- Moon A1
------------Outpost Alpha
--------Moon A2
------------Outpost Beta
------------Outpost Gamma
Distance from Alpha to Beta = 3 (Alpha -> A1 -> A2 -> Beta)
Deliveries are of non-fungible packages, i.e. they must be picked up from one specific node and dropped off at another specific node - they are not interchangeable, and there is no central depot for collecting packages. In a way this is much closer to a taxicab routing problem, except the taxi has unlimited storage and instead of optimising journey time, we're optimising the *number* of stops and minimising distance/depth; in short, we want the most overlap possible (as many pickups, visits, and dropoffs on the same nodes as possible).
All literature on VRP(PD) that I've found so far treats it as a distance-based node system you would classically see in this sort of problem, or they have a central depot, or multiple vehicles, or a number of other things that can't factor in here.
In my C# implementation, I have structured it thus:
Could someone advise me as to how I should be looking to solve this problem?
Star
----planet A
-------- Moon A1
------------Outpost Alpha
--------Moon A2
------------Outpost Beta
------------Outpost Gamma
Distance from Alpha to Beta = 3 (Alpha -> A1 -> A2 -> Beta)
Deliveries are of non-fungible packages, i.e. they must be picked up from one specific node and dropped off at another specific node - they are not interchangeable, and there is no central depot for collecting packages. In a way this is much closer to a taxicab routing problem, except the taxi has unlimited storage and instead of optimising journey time, we're optimising the *number* of stops and minimising distance/depth; in short, we want the most overlap possible (as many pickups, visits, and dropoffs on the same nodes as possible).
All literature on VRP(PD) that I've found so far treats it as a distance-based node system you would classically see in this sort of problem, or they have a central depot, or multiple vehicles, or a number of other things that can't factor in here.
In my C# implementation, I have structured it thus:
- Nodes are planets, moons, stations etc. They are named and parented in the hierarchy to the body they orbit/are situated on.
- Packages are named and contain their pickup and dropoff locations as Node references
- Steps are visits and/or stops at an node. Each step contains actions.
- Actions are pickup/dropoff a package or visit (on the way to another node)
- By default, as a naïve solution, the steps constructed by iterating over the packages, and enqueueing their pickup, direct route, and dropoff. (e.g. +package on outpost Alpha, goto Moon A1, goto Moon A2, -package on Outpost Beta)
Could someone advise me as to how I should be looking to solve this problem?