Skip to content

Commit

Permalink
Update DetermineBasalAIMI2.kt
Browse files Browse the repository at this point in the history
increase the predictedsmb for autodrive
réduit le peaktime
  • Loading branch information
MTR93600 authored Feb 3, 2025
1 parent 6b7a325 commit b52966e
Showing 1 changed file with 70 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1336,70 +1336,81 @@ class DetermineBasalaimiSMB2 @Inject constructor(
.replace("and", " ")
.replace("\\s+", " ")
}
private fun calculateDynamicPeakTime(
currentActivity: Double,
futureActivity: Double,
sensorLagActivity: Double,
historicActivity: Double,
profile: OapsProfileAimi,
stepCount: Int? = null, // Ajout du nombre de pas
heartRate: Int? = null // Ajout du rythme cardiaque
): Double {
var dynamicPeakTime = profile.peakTime
val activityRatio = futureActivity / (currentActivity + 0.0001)

// Ajustement basé sur l'IOB (currentActivity)
if (currentActivity > 0.1) {
dynamicPeakTime += currentActivity * 25 + 10 // Ajuster le peakTime proportionnellement à l'activité courante avec un minimum fixe
}

// Ajustement basé sur le ratio d'activité
dynamicPeakTime *= when {
activityRatio > 1.5 -> 0.5 + (activityRatio - 1.5) * 0.05
activityRatio < 0.5 -> 1.5 + (0.5 - activityRatio) * 0.05
else -> 1.0
}
private fun calculateDynamicPeakTime(
currentActivity: Double,
futureActivity: Double,
sensorLagActivity: Double,
historicActivity: Double,
profile: OapsProfileAimi,
stepCount: Int? = null, // Nombre de pas
heartRate: Int? = null, // Rythme cardiaque
bg: Double, // Glycémie actuelle
delta: Double // Variation glycémique
): Double {
var dynamicPeakTime = profile.peakTime
val activityRatio = futureActivity / (currentActivity + 0.0001)

// 1️⃣ **Hyperglycémie > 180-200 mg/dL → Accélération de la correction**
if (bg > 200 && delta > 4) {
dynamicPeakTime *= 0.6 // Réduction de 40% pour agir plus vite
} else if (bg > 180 && delta > 3) {
dynamicPeakTime *= 0.75 // Réduction de 25%
}

// Ajustement basé sur le nombre de pas
stepCount?.let {
if (it > 500) { // Seuil de 500 pas pour déclencher un ajustement
dynamicPeakTime += it * 0.01 // Ajuster proportionnellement au nombre de pas
}
// 2️⃣ **Ajustement basé sur l'IOB (currentActivity)**
if (currentActivity > 0.1) {
dynamicPeakTime += currentActivity * 20 + 5 // Ajuster proportionnellement à l'activité
}

// 3️⃣ **Ajustement basé sur le ratio d'activité**
dynamicPeakTime *= when {
activityRatio > 1.5 -> 0.5 + (activityRatio - 1.5) * 0.05
activityRatio < 0.5 -> 1.5 + (0.5 - activityRatio) * 0.05
else -> 1.0
}

// 4️⃣ **Ajustement basé sur le nombre de pas**
stepCount?.let {
if (it > 500) {
dynamicPeakTime += it * 0.015 // Ajustement proportionnel plus agressif
} else if (it < 100) {
dynamicPeakTime *= 0.9 // Réduction du peakTime si peu de mouvement
}
}

// Ajustement basé sur le rythme cardiaque
heartRate?.let {
if (it > 100) { // Seuil de 100 bpm pour un rythme cardiaque élevé
dynamicPeakTime *= 1.1 // Augmenter le peakTime de 10 % si la fréquence cardiaque est élevée
} else if (it < 60) { // Fréquence cardiaque basse, potentiellement au repos
dynamicPeakTime *= 0.9 // Réduire le peakTime de 10 % si la personne est probablement au repos
}
// 5️⃣ **Ajustement basé sur le rythme cardiaque**
heartRate?.let {
if (it > 110) {
dynamicPeakTime *= 1.15 // Augmenter le peakTime de 15% si FC élevée
} else if (it < 55) {
dynamicPeakTime *= 0.85 // Réduire le peakTime de 15% si FC basse
}
}

// Ajustement basé sur la corrélation entre les variables (stepCount et heartRate)
if (stepCount != null && heartRate != null) {
if (stepCount > 1000 && heartRate > 110) {
dynamicPeakTime *= 1.2 // Augmenter le peakTime de 20 % si à la fois le nombre de pas et le rythme cardiaque sont élevés
} else if (stepCount < 200 && heartRate < 50) {
dynamicPeakTime *= 0.8 // Réduire le peakTime de 20 % si à la fois le nombre de pas et le rythme cardiaque sont faibles
}
// 6️⃣ **Corrélation entre pas et rythme cardiaque**
if (stepCount != null && heartRate != null) {
if (stepCount > 1000 && heartRate > 110) {
dynamicPeakTime *= 1.2 // Augmenter peakTime si activité intense
} else if (stepCount < 200 && heartRate < 50) {
dynamicPeakTime *= 0.75 // Réduction plus forte si repos total
}
}

this.peakintermediaire = dynamicPeakTime
this.peakintermediaire = dynamicPeakTime

// Ajustement basé sur le retard capteur (sensor lag) et historique
if (dynamicPeakTime > 40) {
if (sensorLagActivity > historicActivity) {
dynamicPeakTime *= 0.85
} else if (sensorLagActivity < historicActivity) {
dynamicPeakTime *= 1.2
}
// 7️⃣ **Ajustement basé sur le retard capteur (sensor lag) et historique**
if (dynamicPeakTime > 40) {
if (sensorLagActivity > historicActivity) {
dynamicPeakTime *= 0.85
} else if (sensorLagActivity < historicActivity) {
dynamicPeakTime *= 1.2
}

// Limiter le peakTime à des valeurs réalistes (par exemple, 10 à 160 minutes)
return dynamicPeakTime.coerceIn(10.0, 160.0)
}

// 🔥 **Limiter le peakTime à des valeurs réalistes (10-160 min)**
return dynamicPeakTime.coerceIn(10.0, 160.0)
}




Expand Down Expand Up @@ -2014,6 +2025,11 @@ class DetermineBasalaimiSMB2 @Inject constructor(
if (allLines.size > linesToConsider) {
val refinedSMB = neuralnetwork5(delta, shortAvgDelta, longAvgDelta, predictedSMB, profile)
this.predictedSMB = refinedSMB
if (bg > 200 && delta > 4 && iob < preferences.get(DoubleKey.ApsSmbMaxIob) ) {
this.predictedSMB *= 1.5f // Augmente de 50% si montée très rapide
} else if (bg > 180 && delta > 3 && iob < preferences.get(DoubleKey.ApsSmbMaxIob)) {
this.predictedSMB *= 1.3f // Augmente de 30% si montée modérée
}
basal =
when {
(honeymoon && bg < 170) -> basalaimi * 0.65
Expand Down Expand Up @@ -2356,7 +2372,7 @@ class DetermineBasalaimiSMB2 @Inject constructor(
appendLine("${"".repeat(screenWidth)}")
appendLine(String.format("║ %-${screenWidth}s ║", "AAPS-MASTER-AIMI"))
appendLine(String.format("║ %-${screenWidth}s ║", "OpenApsAIMI Settings"))
appendLine(String.format("║ %-${screenWidth}s ║", "02 Feb 2024"))
appendLine(String.format("║ %-${screenWidth}s ║", "03 Feb 2025"))
appendLine("${"".repeat(screenWidth)}")
appendLine()

Expand Down

0 comments on commit b52966e

Please sign in to comment.