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;