Spaces:
Running
on
Zero
Running
on
Zero
Update scoring_calculation_system.py
Browse files
scoring_calculation_system.py
CHANGED
|
@@ -1160,10 +1160,19 @@ def check_critical_matches(scores: dict, user_prefs: UserPreferences) -> dict:
|
|
| 1160 |
return critical_issues
|
| 1161 |
|
| 1162 |
def apply_critical_penalty(scores: dict, critical_issues: dict) -> dict:
|
| 1163 |
-
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1164 |
penalized_scores = scores.copy()
|
| 1165 |
-
penalty_factor = 0.6
|
| 1166 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1167 |
for reason in critical_issues['reasons']:
|
| 1168 |
if reason == 'space_incompatible':
|
| 1169 |
penalized_scores['overall'] *= penalty_factor
|
|
@@ -1175,6 +1184,10 @@ def apply_critical_penalty(scores: dict, critical_issues: dict) -> dict:
|
|
| 1175 |
penalized_scores['overall'] *= penalty_factor
|
| 1176 |
penalized_scores['experience'] *= penalty_factor
|
| 1177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1178 |
return penalized_scores
|
| 1179 |
|
| 1180 |
def calculate_environmental_fit(breed_info: dict, user_prefs: UserPreferences) -> float:
|
|
|
|
| 1160 |
return critical_issues
|
| 1161 |
|
| 1162 |
def apply_critical_penalty(scores: dict, critical_issues: dict) -> dict:
|
| 1163 |
+
"""
|
| 1164 |
+
當發現關鍵不適配時,調整分數
|
| 1165 |
+
|
| 1166 |
+
首先計算基礎整體分數,然後根據不同的關鍵問題應用懲罰係數
|
| 1167 |
+
"""
|
| 1168 |
penalized_scores = scores.copy()
|
| 1169 |
+
penalty_factor = 0.6 # 基礎懲罰因子
|
| 1170 |
|
| 1171 |
+
# 先計算基礎整體分數(使用簡單平均)
|
| 1172 |
+
base_overall = sum(scores.values()) / len(scores)
|
| 1173 |
+
penalized_scores['overall'] = base_overall
|
| 1174 |
+
|
| 1175 |
+
# 根據不同的關鍵問題應用懲罰
|
| 1176 |
for reason in critical_issues['reasons']:
|
| 1177 |
if reason == 'space_incompatible':
|
| 1178 |
penalized_scores['overall'] *= penalty_factor
|
|
|
|
| 1184 |
penalized_scores['overall'] *= penalty_factor
|
| 1185 |
penalized_scores['experience'] *= penalty_factor
|
| 1186 |
|
| 1187 |
+
# 確保所有分數都在有效範圍內
|
| 1188 |
+
for key in penalized_scores:
|
| 1189 |
+
penalized_scores[key] = max(0.1, min(1.0, penalized_scores[key]))
|
| 1190 |
+
|
| 1191 |
return penalized_scores
|
| 1192 |
|
| 1193 |
def calculate_environmental_fit(breed_info: dict, user_prefs: UserPreferences) -> float:
|