/** * Gets the probabilities of parts per maintenance for a set of entity scope strings. * * @param scope a collection of entity scope strings. * @return map of maintenance parts and probable number of parts needed per maintenance. * @throws Exception if error finding maintenance part probabilities. */ Map<Part, Double> getMaintenancePartProbabilities(Collection<String> scope) { Map<Part, Double> result = new HashMap<Part, Double>(); Iterator<String> i = scope.iterator(); while (i.hasNext()) { String entity = i.next(); Iterator<Part> j = Part.getParts().iterator(); while (j.hasNext()) { Part part = j.next(); if (part.hasMaintenanceEntity(entity)) { double prob = part.getMaintenanceProbability(entity) / 100D; int partNumber = part.getMaintenanceMaximumNumber(entity); double averageNumber = RandomUtil.getRandomRegressionIntegerAverageValue(partNumber); double totalNumber = averageNumber * prob; if (result.containsKey(part)) totalNumber += result.get(part); result.put(part, totalNumber); } } } return result; }
/** * Gets the total mass of construction materials. * * @param resources map of resources and their amounts (kg). * @param parts map of parts and their numbers. * @return total mass. */ private double getConstructionMaterialMass( Map<AmountResource, Double> resources, Map<Part, Integer> parts) { double result = 0D; // Add total mass of resources. Iterator<AmountResource> i = resources.keySet().iterator(); while (i.hasNext()) { AmountResource resource = i.next(); double amount = resources.get(resource); result += amount; } // Add total mass of parts. Iterator<Part> j = parts.keySet().iterator(); while (j.hasNext()) { Part part = j.next(); int number = parts.get(part); double mass = part.getMassPerItem(); result += number * mass; } return result; }