Exemplo n.º 1
0
def main(input, algorithmAttributes):
    assert input, 'no input is provided, the algorithm cannot run'
    ImportInput(input, algorithmAttributes)   
    AllocManagement_Hybrid2()
    outputResults()
Exemplo n.º 2
0
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
Exemplo n.º 3
0
def main(input):
    assert input, 'no input is provided, the algorithm cannot run'
    ImportInput(input)   
    AllocManagement_Hybrid2()
    outputResults()