Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
report info message for non-modifiable parameters
  • Loading branch information
arun3688 committed Aug 11, 2021
commit d8146a3600353f92b884db6794ce9e33d8e4669e
43 changes: 30 additions & 13 deletions OMPython/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@ def xmlparse(self):
for sv in rootCQ.iter('ScalarVariable'):
scalar={}
scalar["name"] = sv.get('name')
scalar["changable"] = sv.get('isValueChangeable')
scalar["changeable"] = sv.get('isValueChangeable')
scalar["description"] = sv.get('description')
scalar["variability"] = sv.get('variability')
scalar["causality"] = sv.get('causality')
Expand Down Expand Up @@ -1318,7 +1318,7 @@ def strip_space(self,name):
elif(isinstance(name,list)):
return [x.replace(" ","") for x in name]

def setMethodHelper(self,args1,args2,args3,args4=None):
def setMethodHelper(self,args1,args2,args3,args4=None,verbose=None):
"""
Helper function for setParameter(),setContinuous(),setSimulationOptions(),setLinearizationOption(),setOptimizationOption()
args1 - string or list of string given by user
Expand All @@ -1330,23 +1330,32 @@ def setMethodHelper(self,args1,args2,args3,args4=None):
args1=self.strip_space(args1)
value=args1.split("=")
if value[0] in args2:
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
if (args3 == "parameter" and self.isParameterChangeable(value[0], value[1], verbose)):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
elif (args3 != "parameter"):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
else:
print(value[0], "!is not a", args3 , "variable")
print("\"" + value[0] + "\"" + " is not a" + args3 + " variable")
return
elif(isinstance(args1,list)):
args1=self.strip_space(args1)
for var in args1:
value=var.split("=")
if value[0] in args2:
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
if (args3 == "parameter" and self.isParameterChangeable(value[0], value[1], verbose)):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
elif (args3 != "parameter"):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
else:
print(value[0], "!is not a", args3 ,"variable")
return
print("\"" + value[0] + "\"" + " is not a "+ args3 + " variable")

def setContinuous(self, cvals): # 13
"""
Expand All @@ -1358,15 +1367,23 @@ def setContinuous(self, cvals): # 13
"""
return self.setMethodHelper(cvals,self.continuouslist,"continuous",self.overridevariables)

def setParameters(self, pvals): # 14
def setParameters(self, pvals, verbose=True): # 14
"""
This method is used to set parameter values. It can be called:
with a sequence of parameter name and assigning corresponding value as arguments as show in the example below:
usage
>>> setParameters("Name=value")
>>> setParameters(["Name1=value1","Name2=value2"])
"""
return self.setMethodHelper(pvals,self.paramlist,"parameter",self.overridevariables)
return self.setMethodHelper(pvals,self.paramlist,"parameter",self.overridevariables, verbose)

def isParameterChangeable(self, name, value, verbose):
q = self.getQuantities(name)
if (q[0]["changeable"] == "false"):
if verbose:
print("| info | setParameters() failed : It is not possible to set the following signal " + "\"" + name + "\"" + ", It seems to be structural, final, protected or evaluated or has a non-constant binding, use sendExpression(setParameterValue("+ self.modelName + ", " + name + ", " + value + "), parsed=false)" + " and rebuild the model using buildModel() API")
return False
return True

def setSimulationOptions(self, simOptions): # 16
"""
Expand Down