Update secondary weights to match OpenGotha v3.52

This commit is contained in:
Quentin Rendu
2024-05-25 12:07:45 +02:00
parent bb259494e3
commit 55aad8c3fa
2 changed files with 10 additions and 7 deletions

View File

@@ -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

View File

@@ -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 {