Update secondary weights to match OpenGotha v3.52
This commit is contained in:
@@ -423,10 +423,10 @@ sealed class BaseSolver(
|
|||||||
if (2*p1.nbW >= nbw2Threshold) playersMeetCriteria++
|
if (2*p1.nbW >= nbw2Threshold) playersMeetCriteria++
|
||||||
if (2*p2.nbW >= nbw2Threshold) playersMeetCriteria++
|
if (2*p2.nbW >= nbw2Threshold) playersMeetCriteria++
|
||||||
|
|
||||||
return 0.5*playersMeetCriteria*pairing.geo.apply(p1, p2)
|
return pairing.geo.apply(p1, p2, playersMeetCriteria)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun GeographicalParams.apply(p1: Pairable, p2: Pairable): Double {
|
fun GeographicalParams.apply(p1: Pairable, p2: Pairable, playersMeetCriteria: Int): Double {
|
||||||
val placementScoreRange = groupsCount
|
val placementScoreRange = groupsCount
|
||||||
|
|
||||||
val geoMaxCost = pairing.geo.avoidSameGeo
|
val geoMaxCost = pairing.geo.avoidSameGeo
|
||||||
@@ -478,11 +478,15 @@ sealed class BaseSolver(
|
|||||||
|
|
||||||
// The concavity function is applied to geoRatio to get geoCost
|
// The concavity function is applied to geoRatio to get geoCost
|
||||||
val dbGeoCost: Double = concavityFunction(geoRatio, geoMaxCost)
|
val dbGeoCost: Double = concavityFunction(geoRatio, geoMaxCost)
|
||||||
var score = pairing.main.scoreWeight - dbGeoCost
|
var geoNominalCost = pairing.main.scoreWeight - dbGeoCost
|
||||||
|
|
||||||
score = min(score, geoMaxCost)
|
if (geoNominalCost > geoMaxCost) geoNominalCost = geoMaxCost
|
||||||
|
|
||||||
return score
|
return when (playersMeetCriteria) {
|
||||||
|
2 -> geoMaxCost
|
||||||
|
1 -> 0.5 * (geoNominalCost + geoMaxCost)
|
||||||
|
else -> geoNominalCost
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handicap functions
|
// Handicap functions
|
||||||
|
@@ -55,8 +55,7 @@ class MacMahonSolver(round: Int,
|
|||||||
|| barThresholdActive && (p2.mms >= mmBar - Pairable.MIN_RANK)
|
|| barThresholdActive && (p2.mms >= mmBar - Pairable.MIN_RANK)
|
||||||
|| p2.mms >= rankSecThreshold - Pairable.MIN_RANK) playersMeetCriteria++
|
|| p2.mms >= rankSecThreshold - Pairable.MIN_RANK) playersMeetCriteria++
|
||||||
|
|
||||||
return if (playersMeetCriteria==2) 0.0
|
return pairing.geo.apply(p1, p2, playersMeetCriteria)
|
||||||
else 0.5*(2-playersMeetCriteria)*pairing.geo.apply(p1, p2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun HandicapParams.pseudoRank(pairable: Pairable): Int {
|
override fun HandicapParams.pseudoRank(pairable: Pairable): Int {
|
||||||
|
Reference in New Issue
Block a user