Never take current round into account for unplayed rounds
This commit is contained in:
@@ -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()
|
||||||
|
|
||||||
|
@@ -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),
|
||||||
|
Reference in New Issue
Block a user