Linkgraph: Increase effect strength of distance scaling setting

Updates: 3d049895
pull/688/head
Jonathan G Rennison 2 weeks ago
parent d52d447603
commit d70c824056

@ -314,8 +314,8 @@ void DemandCalculator::CalcDemand(LinkGraphJob &job, const std::vector<bool> &re
if (this->mod_dist > 0) {
const int32_t distance = DistanceMaxPlusManhattan(job[from_id].XY(), job[to_id].XY());
/* Scale distance around base_distance by (mod_dist * (100 / 1024)).
* Note that this means that the distance range is always compressed because mod_dist <= 1024. */
scaled_distance = this->base_distance + (((distance - this->base_distance) * this->mod_dist) / 1024);
* mod_dist may be > 1024, so clamp result to be non-negative */
scaled_distance = std::max(0, this->base_distance + (((distance - this->base_distance) * this->mod_dist) / 1024));
}
/* Scale the accuracy by distance around accuracy / 2 */
@ -421,8 +421,15 @@ DemandCalculator::DemandCalculator(LinkGraphJob &job) :
this->accuracy = settings.accuracy;
this->mod_dist = settings.demand_distance;
if (this->mod_dist > 100) {
/* Increase effect of mod_dist > 100 */
this->mod_dist = 100 + ((this->mod_dist - 100) * 4);
/* Increase effect of mod_dist > 100.
* Quadratic:
* 100 --> 100
* 150 --> 308
* 200 --> 933
* 255 --> 2102
*/
int over100 = this->mod_dist - 100;
this->mod_dist = 100 + ((over100 * over100) / 12);
}
if (settings.GetDistributionType(cargo) == DT_MANUAL) return;

Loading…
Cancel
Save