Never take current round into account for unplayed rounds

This commit is contained in:
Claude Brisson
2024-05-29 12:52:42 +02:00
parent d93122a13b
commit 6ae5b47121
2 changed files with 3 additions and 4 deletions

View File

@@ -94,9 +94,9 @@ abstract class BasePairingHelper(
val Pairable.sosos: Double get() = historyHelper.sosos[id] ?: 0.0 val Pairable.sosos: Double get() = historyHelper.sosos[id] ?: 0.0
val Pairable.sodos: Double get() = historyHelper.sodos[id] ?: 0.0 val Pairable.sodos: Double get() = historyHelper.sodos[id] ?: 0.0
val Pairable.cums: Double get() = historyHelper.cumScore[id] ?: 0.0 val Pairable.cums: Double get() = historyHelper.cumScore[id] ?: 0.0
fun Pairable.missedRounds(upToRound: Int, pairing: Set<ID>): Int = (1..upToRound).map { round -> fun Pairable.missedRounds(): Int = (1 until round).map { round ->
if (historyHelper.playersPerRound.getOrNull(round - 1) if (historyHelper.playersPerRound.getOrNull(round - 1)
?.contains(id) == true || round == upToRound && pairing.contains(id) ?.contains(id) == true
) 0 else 1 ) 0 else 1
}.sum() }.sum()

View File

@@ -19,12 +19,11 @@ class MacMahonSolver(round: Int,
override val scores: Map<ID, Pair<Double, Double>> by lazy { override val scores: Map<ID, Pair<Double, Double>> by lazy {
require (mmBar > mmFloor) { "MMFloor is higher than MMBar" } require (mmBar > mmFloor) { "MMFloor is higher than MMBar" }
val pairing = pairables.map { it.id }.toSet()
pairablesMap.mapValues { pairablesMap.mapValues {
it.value.let { pairable -> it.value.let { pairable ->
val score = roundScore(pairable.mmBase + val score = roundScore(pairable.mmBase +
pairable.nbW + pairable.nbW +
pairable.missedRounds(round, pairing) * pairingParams.main.mmsValueAbsent) pairable.missedRounds() * pairingParams.main.mmsValueAbsent)
Pair( Pair(
if (pairingParams.main.sosValueAbsentUseBase) pairable.mmBase if (pairingParams.main.sosValueAbsentUseBase) pairable.mmBase
else roundScore(pairable.mmBase + round/2), else roundScore(pairable.mmBase + round/2),