59 lines
1.5 KiB
C#
59 lines
1.5 KiB
C#
using RobotNet10.NavigationTune.Shared.Models;
|
|
|
|
namespace RobotNet10.NavigationTune.Shared.Interfaces;
|
|
|
|
/// <summary>
|
|
/// Metrics calculator interface
|
|
/// </summary>
|
|
public interface IMetricsCalculator
|
|
{
|
|
/// <summary>
|
|
/// Calculate complete test metrics
|
|
/// </summary>
|
|
TestMetrics CalculateMetrics(
|
|
List<TelemetryData> telemetryData,
|
|
ReferencePath referencePath
|
|
);
|
|
|
|
/// <summary>
|
|
/// Calculate tracking accuracy metrics
|
|
/// </summary>
|
|
TrackingAccuracyMetrics CalculateTrackingAccuracy(
|
|
List<TelemetryData> telemetryData,
|
|
ReferencePath referencePath
|
|
);
|
|
|
|
/// <summary>
|
|
/// Calculate smoothness metrics
|
|
/// </summary>
|
|
SmoothnessMetrics CalculateSmoothness(
|
|
List<TelemetryData> telemetryData
|
|
);
|
|
|
|
/// <summary>
|
|
/// Calculate efficiency metrics
|
|
/// </summary>
|
|
EfficiencyMetrics CalculateEfficiency(
|
|
List<TelemetryData> telemetryData,
|
|
ReferencePath referencePath
|
|
);
|
|
|
|
/// <summary>
|
|
/// Calculate overall score
|
|
/// </summary>
|
|
double CalculateOverallScore(
|
|
TestMetrics metrics,
|
|
ScoringWeights weights
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Scoring weights for different metric categories
|
|
/// </summary>
|
|
public class ScoringWeights
|
|
{
|
|
public double TrackingAccuracy { get; set; } = 0.5; // 50%
|
|
public double Smoothness { get; set; } = 0.3; // 30%
|
|
public double Efficiency { get; set; } = 0.2; // 20%
|
|
}
|