def main(input, algorithmAttributes): assert input, 'no input is provided, the algorithm cannot run' ImportInput(input, algorithmAttributes) AllocManagement_Hybrid2() outputResults()
def main(input, algorithmAttributes): startTime = time.time() ver = ImportInput(input, algorithmAttributes) if ver == "stop": return if G.ACO == "all": G.acoRange = [0,1] G.minRange = {0:[0,1],1:[0,1]} elif G.ACO == "1": G.acoRange = [1] G.minRange = {0:[0,1], 1:[G.minDeltaUt]} else: G.acoRange = [0] G.minRange = {0:[G.minDeltaUt]} for j in G.acoRange: for i in G.minRange[j]: initialiseVar() G.minDeltaUt = i G.ACO = j print 'start ACO', G.ACO, 'minDelta', G.minDeltaUt bestAnt = AllocManagement_Hybrid2(None) # salvare risultati G.Summary[(G.ACO,G.minDeltaUt)] = {'scenario':(G.ACO,G.minDeltaUt)} for key in G.LateMeasures.keys(): if key == 'lateness' or key == 'earliness': if len(G.LateMeasures[key]): G.Summary[(G.ACO,G.minDeltaUt)][key] = mean(G.LateMeasures[key]) else: G.Summary[(G.ACO,G.minDeltaUt)][key] = 0 else: G.Summary[(G.ACO,G.minDeltaUt)][key] = G.LateMeasures[key] utilisation = [] targetUt = [] for bottleneck in G.Bottlenecks: for week in G.WeekList: utilisation.append(float(G.Capacity[bottleneck][week]['OriginalCapacity']-G.CurrentCapacityDict[bottleneck][week])/G.Capacity[bottleneck][week]['OriginalCapacity']) if G.Capacity[bottleneck][week]['targetUtilisation']: targetUt.append((G.Capacity[bottleneck][week]['targetUtilisation']-float(G.Capacity[bottleneck][week]['OriginalCapacity']-G.CurrentCapacityDict[bottleneck][week])/G.Capacity[bottleneck][week]['OriginalCapacity'])/G.Capacity[bottleneck][week]['targetUtilisation']) else: targetUt.append((G.Capacity[bottleneck][week]['targetUtilisation']-float(G.Capacity[bottleneck][week]['OriginalCapacity']-G.CurrentCapacityDict[bottleneck][week])/G.Capacity[bottleneck][week]['OriginalCapacity'])) G.Summary[(G.ACO,G.minDeltaUt)]['utilisation'] = mean(array(utilisation)) G.Summary[(G.ACO,G.minDeltaUt)]['targetM'] = mean(absolute(array(targetUt))) G.Summary[(G.ACO,G.minDeltaUt)]['targetStd'] = std(array(targetUt)) if G.ACO: G.Summary[(G.ACO,G.minDeltaUt)]['ant'] = bestAnt else: G.Summary[(G.ACO,G.minDeltaUt)]['ant'] = None # selection listSummary = [G.Summary[item] for item in G.Summary.keys()] print 'list summary', listSummary listSummary = sorted(listSummary, key=itemgetter('exUnits', 'lateness', 'targetM', 'targetStd', 'utilisation', 'earliness')) bestScenario = listSummary[0]['scenario'] aco = bestScenario[0] minDelta = bestScenario[1] G.Summary['orderedScenario'] = {} for i in range(len(listSummary)): G.Summary['orderedScenario'][listSummary[i]['scenario']] = i+1 G.Summary['bestScenario'] = bestScenario if aco != G.ACO or minDelta != G.minDeltaUt: initialiseVar() G.ACO = 0 # forces the simulation of the best ant (even though the best scenario is ACO G.minDeltaUt = minDelta AllocManagement_Hybrid2(G.Summary[(aco,minDelta)]['ant']) AllocManagement_Hybrid2_Forecast() outputResults() print 'calculation time', time.time()-startTime
def main(input): assert input, 'no input is provided, the algorithm cannot run' ImportInput(input) AllocManagement_Hybrid2() outputResults()