tahamajs's picture
download
raw
2.73 kB
from enum import Enum
from typing import List, Dict, Tuple, Any, Optional
from dataclasses import dataclass
class ProofQuality(Enum):
EXCELLENT = 5
GOOD = 4
ACCEPTABLE = 3
POOR = 2
INVALID = 1
@dataclass
class EvaluationMetrics:
total_problems: int = 0
solved_problems: int = 0
success_rate: float = 0.0
average_time: float = 0.0
total_time: float = 0.0
average_confidence: float = 0.0
average_proof_quality: float = 0.0
proof_quality_scores: List[int] = None
strategy_success_rates: Dict[str, Dict[str, float]] = None
difficulty_breakdown: Dict[str, int] = None
def __post_init__(self):
if self.proof_quality_scores is None:
self.proof_quality_scores = []
if self.strategy_success_rates is None:
self.strategy_success_rates = {}
if self.difficulty_breakdown is None:
self.difficulty_breakdown = {}
def calculate_derived_metrics(self):
if self.total_problems > 0:
self.success_rate = self.solved_problems / self.total_problems
if self.proof_quality_scores:
self.average_proof_quality = sum(self.proof_quality_scores) / len(
self.proof_quality_scores
)
for strategy_data in self.strategy_success_rates.values():
if strategy_data.get("attempts", 0) > 0:
strategy_data["success_rate"] = (
strategy_data.get("successes", 0) / strategy_data["attempts"]
)
else:
strategy_data["success_rate"] = 0.0
def get_summary_report(self) -> str:
report = []
report.append("=== Geometry Solver Evaluation Summary ===")
report.append(f"Total Problems: {self.total_problems}")
report.append(f"Solved Problems: {self.solved_problems}")
report.append(f"Success Rate: {self.success_rate:.1%}")
report.append(f"Average Time: {self.average_time:.2f} seconds")
report.append(f"Average Confidence: {self.average_confidence:.1%}")
report.append(f"Average Proof Quality: {self.average_proof_quality:.1f}/5.0")
if self.difficulty_breakdown:
report.append("\nDifficulty Breakdown:")
for difficulty, count in self.difficulty_breakdown.items():
report.append(f" {difficulty}: {count} problems solved")
if self.strategy_success_rates:
report.append("\nStrategy Performance:")
for strategy, data in self.strategy_success_rates.items():
report.append(
f" {strategy.capitalize()}: {data.get('success_rate', 0):.1%}"
)
return "\n".join(report)

Xet Storage Details

Size:
2.73 kB
·
Xet hash:
b58a69db9ea33df433b3eaf7062474fe282da99bca33131d74578e89e1ef8993

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.