Skip to content

Commit

Permalink
Added distance deviation calculations to recommendation score calcula…
Browse files Browse the repository at this point in the history
…tions algorithm
  • Loading branch information
sinhaaaryan committed Aug 16, 2024
1 parent fca79ac commit a3268ad
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions src/utils/recommendation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,26 @@ export const distanceBasedRecs = (
)
);

let deviationDistanceWeighted = 0;
let deviationRatioWeighted = 0;
// New: Calculate route deviation for drivers
if (currentUser.role === "DRIVER") {
const driverDirectDistance = coordToMile(
Math.sqrt(
Math.pow(currentUser.startCoordLat - currentUser.companyCoordLat, 2) +
Math.pow(currentUser.startCoordLng - currentUser.companyCoordLng, 2)
)
);

deviationDistanceWeighted = (startDistance + endDistance - driverDirectDistance) * 10;
deviationRatioWeighted = (((startDistance + endDistance) / driverDirectDistance) - 1) * 10;
}

console.log("deviationDistanceWeighted", deviationDistanceWeighted);
console.log("deviationRatioWeighted", deviationRatioWeighted);
return {
id: user.id,
score: startDistance + endDistance,
score: startDistance + endDistance + (deviationDistanceWeighted ?? 0) + (deviationRatioWeighted ?? 0),
};
};
};
Expand Down Expand Up @@ -180,8 +197,10 @@ export const calculateScore = (
const deviationRatio = (startDistance + endDistance) / driverDirectDistance;

// Adjust these weights as needed
finalScore += deviationDistance * 0.1; // Penalize based on absolute deviation
finalScore += (deviationRatio - 1) * 10; // Penalize based on relative deviation
finalScore += 2 * deviationDistance * 0.1; // Penalize based on absolute deviation
finalScore += 2 * (deviationRatio - 1) * 10; // Penalize based on relative deviation
// console.log("deviationDistance", deviationDistance);
// console.log("deviationRatio", deviationRatio);
}

return {
Expand Down

0 comments on commit a3268ad

Please sign in to comment.