/** * Gets the repair part probabilities per malfunction for a set of entity scope strings. * * @param scope a collection of entity scope strings. * @return map of repair parts and probable number of parts needed per malfunction. * @throws Exception if error finding repair part probabilities. */ Map<Part, Double> getRepairPartProbabilities(Collection<String> scope) { Map<Part, Double> result = new HashMap<Part, Double>(); Iterator<Malfunction> i = malfunctions.iterator(); while (i.hasNext()) { Malfunction malfunction = i.next(); if (malfunction.unitScopeMatch(scope)) { double malfunctionProbability = malfunction.getProbability() / 100D; MalfunctionConfig config = SimulationConfig.instance().getMalfunctionConfiguration(); String[] partNames = config.getRepairPartNamesForMalfunction(malfunction.getName()); for (String partName : partNames) { double partProbability = config.getRepairPartProbability(malfunction.getName(), partName) / 100D; int partNumber = config.getRepairPartNumber(malfunction.getName(), partName); double averageNumber = RandomUtil.getRandomRegressionIntegerAverageValue(partNumber); double totalNumber = averageNumber * partProbability * malfunctionProbability; Part part = (Part) ItemResource.findItemResource(partName); if (result.containsKey(part)) totalNumber += result.get(part); result.put(part, totalNumber); } } } return result; }
// 2015-02-04 Added run() public void run() { // System.out.println("MalfunctionFactory's run() is on " + Thread.currentThread().getName() + " // Thread"); malfunctions = config.getMalfunctionList(); }