Commit d8c8e265 authored by Georgios Dagkakis's avatar Georgios Dagkakis

Merge branch 'demandPlanningGlobalAttrs'

parents ca09828e ca0c2bd3
...@@ -16,6 +16,7 @@ class AddDemandPlannerGenerator(plugin.InputPreparationPlugin): ...@@ -16,6 +16,7 @@ class AddDemandPlannerGenerator(plugin.InputPreparationPlugin):
nodes=data['graph']['node'] nodes=data['graph']['node']
data_uri_encoded_input_data = data['input'].get(self.configuration_dict['input_id'], {}) data_uri_encoded_input_data = data['input'].get(self.configuration_dict['input_id'], {})
algorithmAttributes=copy(data['general'])
nodes['DPG']={ nodes['DPG']={
"name": "DemandPlannerGenerator", "name": "DemandPlannerGenerator",
...@@ -25,7 +26,7 @@ class AddDemandPlannerGenerator(plugin.InputPreparationPlugin): ...@@ -25,7 +26,7 @@ class AddDemandPlannerGenerator(plugin.InputPreparationPlugin):
"stop": 0.5, "stop": 0.5,
"_class": "dream.simulation.EventGenerator.EventGenerator", "_class": "dream.simulation.EventGenerator.EventGenerator",
"method": "dream.simulation.applications.DemandPlanning.executor_ACO.main", "method": "dream.simulation.applications.DemandPlanning.executor_ACO.main",
"argumentDict": {'input':data_uri_encoded_input_data} "argumentDict": {'input':data_uri_encoded_input_data, 'algorithmAttributes':algorithmAttributes}
} }
#print nodes #print nodes
return data return data
......
...@@ -2,26 +2,26 @@ ...@@ -2,26 +2,26 @@
"application_configuration": { "application_configuration": {
"general": { "general": {
"properties": { "properties": {
"MaxEarliness": { "maxEarliness": {
"default": 2, "default": 2,
"description": "Maximum Earliness", "description": "Maximum Earliness",
"name": "Maximum Earliness", "name": "Maximum Earliness",
"type": "number" "type": "number"
}, },
"MaxLateness": { "maxLateness": {
"default": 2, "default": 2,
"description": "Maximum Lateness", "description": "Maximum Lateness",
"name": "Maximum Lateness", "name": "Maximum Lateness",
"type": "number" "type": "number"
}, },
"MinDelta": { "minDelta": {
"default": 0, "default": 1,
"description": "Min Delta Target Utilisation", "description": "Min Delta Target Utilisation",
"name": "Min Delta Target Utilisation", "name": "Min Delta Target Utilisation",
"type": "number" "type": "number"
}, },
"ACO": { "ACO": {
"default": 2, "default": 0,
"description": "ACO", "description": "ACO",
"name": "ACO", "name": "ACO",
"type": "number" "type": "number"
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
"name": "Population size", "name": "Population size",
"type": "number" "type": "number"
}, },
"ACO numberOfGenerations": { "ACOnumberOfGenerations": {
"default": 8, "default": 8,
"description": "ACO Number of generations", "description": "ACO Number of generations",
"name": "ACO Number of generations", "name": "ACO Number of generations",
...@@ -50,13 +50,13 @@ ...@@ -50,13 +50,13 @@
"name": "Minimum Utilisation", "name": "Minimum Utilisation",
"type": "number" "type": "number"
}, },
"MinDeltaTargerUtilisation": { "minDeltaTargetUtilisation": {
"default": 0, "default": 0,
"description": "Minimum Delta Target Utilisation", "description": "Minimum Delta Target Utilisation",
"name": "Minimum Delta Target Utilisation", "name": "Minimum Delta Target Utilisation",
"type": "number" "type": "number"
}, },
"MinTargerUtilisation": { "minTargetUtilisation": {
"default": 2, "default": 2,
"description": "Minimum Delta Utilisation", "description": "Minimum Delta Utilisation",
"name": "Minimum Delta Utilisation", "name": "Minimum Delta Utilisation",
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
"name": "GA population Size", "name": "GA population Size",
"type": "number" "type": "number"
}, },
"GA numberOfGenerations": { "GAnumberOfGenerations": {
"default": 8, "default": 8,
"description": "GA Number of Generations", "description": "GA Number of Generations",
"name": "GA Number of Generations", "name": "GA Number of Generations",
...@@ -91,7 +91,13 @@ ...@@ -91,7 +91,13 @@
"description": "Mutation Probability", "description": "Mutation Probability",
"name": "Mutation Probability", "name": "Mutation Probability",
"type": "number" "type": "number"
} },
"processTimeout": {
"default": 300,
"description": "Number of seconds before the calculation process is interrupted",
"title": "ProcessTimeout",
"type": "number"
}
} }
}, },
"input": { "input": {
...@@ -160,17 +166,7 @@ ...@@ -160,17 +166,7 @@
}, },
"class_definition": {}, "class_definition": {},
"constraints": {}, "constraints": {},
"general": { "general": {},
"TargetPPOS": null,
"TargetPPOSqty": null,
"TargetPPOSweek": null,
"ke_url": "",
"maxEarliness": null,
"maxLateness": null,
"minPackingSize": null,
"numberOfReplications": 1,
"planningHorizon": null
},
"graph": { "graph": {
"edge": {}, "edge": {},
"node": {} "node": {}
......
...@@ -43,49 +43,36 @@ def my_split(s, seps): ...@@ -43,49 +43,36 @@ def my_split(s, seps):
res += seq.split(sep) res += seq.split(sep)
return res return res
def ImportInput(input): def ImportInput(input, algorithmAttributes):
# general simulation input # general simulation input
mime_type, attachement_data = input[len('data:'):].split(';base64,', 1) mime_type, attachement_data = input[len('data:'):].split(';base64,', 1)
attachement_data = attachement_data.decode('base64') attachement_data = attachement_data.decode('base64')
wbin = xlrd.open_workbook(file_contents=attachement_data) wbin = xlrd.open_workbook(file_contents=attachement_data)
sh = wbin.sheet_by_name('Scalar_Var') G.maxEarliness = algorithmAttributes.get('maxEarliness',None)
G.maxEarliness = withoutFormat(3,1,sh,1) G.maxLateness = algorithmAttributes.get('maxLateness',None)
G.maxLateness = withoutFormat(4,1,sh,1)
# utilisation calculation # utilisation calculation
if withoutFormat(9,1,sh,1) != '': G.minDeltaUt = algorithmAttributes.get('minDelta',None)
G.minDeltaUt = withoutFormat(9,1,sh,1)
# ACO parameters # ACO parameters
if withoutFormat(12,1,sh,1) != '': G.ACO = algorithmAttributes.get('ACO',None)
G.ACO = withoutFormat(12,1,sh,1) G.popSize=algorithmAttributes.get('ACOpopulationSize',None)
if withoutFormat(13,1,sh,1) != '': G.noGen=algorithmAttributes.get('ACOnumberOfGenerations',None)
G.popSize = withoutFormat(13,1,sh,1)
if withoutFormat(14,1,sh,1) != '':
G.noGen = withoutFormat(14,1,sh,1)
# optimisation weights for forecast IP method # optimisation weights for forecast IP method
if withoutFormat(18,1,sh,1) != '': G.weightFactor[0] = algorithmAttributes.get('maxAssignedQty',None)
G.weightFactor[0] = withoutFormat(18,1,sh,1) G.weightFactor[1] = algorithmAttributes.get('minUtilisation',None)
if withoutFormat(19,1,sh,1) != '': G.weightFactor[2] = algorithmAttributes.get('minDeltaTargetUtilisation',None)
G.weightFactor[1] = withoutFormat(19,1,sh,1) G.weightFactor[3] = algorithmAttributes.get('minTargetUtilisation',None)
if withoutFormat(20,1,sh,1) != '':
G.weightFactor[2] = withoutFormat(20,1,sh,1)
if withoutFormat(21,1,sh,1) != '':
G.weightFactor[3] = withoutFormat(21,1,sh,1)
# GA parameters # GA parameters
if withoutFormat(23,1,sh,1) != '': G.GA= algorithmAttributes.get('GA',None)
G.GA = withoutFormat(23,1,sh,1) G.popSizeGA =algorithmAttributes.get('GApopulationSize',None)
if withoutFormat(24,1,sh,1) != '': G.noGenGA =algorithmAttributes.get('GAnumberOfGenerations',None)
G.popSizeGA = withoutFormat(24,1,sh,1) G.probXover =algorithmAttributes.get('XOver',None)
if withoutFormat(25,1,sh,1) != '': G.probMutation =algorithmAttributes.get('mutationProbability',None)
G.noGenGA = withoutFormat(25,1,sh,1)
if withoutFormat(26,1,sh,1) != '':
G.probXover = withoutFormat(26,1,sh,1)
if withoutFormat(27,1,sh,1) != '':
G.probMutation = withoutFormat(27,1,sh,1)
# Import capacity information...capacity = {Resource: {week {'originalCapacity':, 'remainingCapacity', 'minUtilisation'} # Import capacity information...capacity = {Resource: {week {'originalCapacity':, 'remainingCapacity', 'minUtilisation'}
sh = wbin.sheet_by_name('BN_Capa') sh = wbin.sheet_by_name('BN_Capa')
......
...@@ -27,8 +27,8 @@ from AllocManagement_Hybrid import AllocManagement_Hybrid2 ...@@ -27,8 +27,8 @@ from AllocManagement_Hybrid import AllocManagement_Hybrid2
from ImportInput import ImportInput from ImportInput import ImportInput
from outputResults import outputResults from outputResults import outputResults
def main(input): def main(input, algorithmAttributes):
assert input, 'no input is provided, the algorithm cannot run' assert input, 'no input is provided, the algorithm cannot run'
ImportInput(input) ImportInput(input, algorithmAttributes)
AllocManagement_Hybrid2() AllocManagement_Hybrid2()
outputResults() outputResults()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment