From 6fd87402451ed6a696b024b982912d267207d34d Mon Sep 17 00:00:00 2001 From: Burak <123519742+ssl8@users.noreply.github.com> Date: Mon, 9 Jun 2025 12:46:13 +0100 Subject: [PATCH] Fix division by zero in accuracy constraint --- oem1.m | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/oem1.m b/oem1.m index eb67cd7..35eae5d 100644 --- a/oem1.m +++ b/oem1.m @@ -152,12 +152,19 @@ x = round(x); % Inequality constraints - c = [ - sum(x .* cost) - budget; % Total cost should not exceed budget - -sum(x .* infoGain) + minInfoGain; % Total information gain should be at least minInfoGain - -sum(x .* accuracy) / sum(x) + minAvgAccuracy; % Average accuracy should be at least minAvgAccuracy - -sum(x .* mtbf) + minTotalMTBF % Total MTBF should be at least minTotalMTBF - ]; + totalSelected = sum(x); + if totalSelected > 0 + avgAccuracy = sum(x .* accuracy) / totalSelected; + else + avgAccuracy = 0; % Avoid division by zero when no sensors selected + end + + c = [ + sum(x .* cost) - budget; % Total cost should not exceed budget + -sum(x .* infoGain) + minInfoGain; % Total information gain should be at least minInfoGain + -avgAccuracy + minAvgAccuracy; % Average accuracy should be at least minAvgAccuracy + -sum(x .* mtbf) + minTotalMTBF % Total MTBF should be at least minTotalMTBF + ]; % Equality constraint: Exactly 2 sensors should be selected ceq = sum(x) - 2;