You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With no initial value for uncertain parameter, PyROS complains ValueError: User must designate at least one uncertain parameter.
We should improve this error message to be more informative. Consider the example below where I have one uncertain parameter. To reproduce, consider two runs of the code below. First, run with the line below "# First try running with this line. Then comment out that line and run with the line below. One triggers the ValueError, the other does not.
Steps to reproduce the issue
# === Required import ===
import pyomo.kernel as pmo
import numpy as np
import pyomo.environ as pyo
import pyomo.contrib.pyros as pyros
pyros_solver = pyo.SolverFactory("pyros")
m = pyo.ConcreteModel()
m.L = pyo.Var(within=pyo.Reals, bounds=(0,10), initialize=0.5)
# First try running with this line
m.x1 = pyo.Param(within=pyo.Reals, mutable=True)
# Then, comment out the above line, and uncomment the following line:
# m.x1 = pyo.Param(within=pyo.Reals, initialize=0.5, mutable=True)
fn_1 = m.x1**2 + m.L
fn_2 = m.x1**2 + m.L - m.x1
m.obj = pyo.Objective(expr = fn_1, sense=pyo.minimize)
m.c1 = pyo.Constraint(expr = 0 <= fn_2)
uncertain_parameters = [m.x1] # We can pass IndexedParams this way to PyROS, or as an expanded list per index
relative_deviation = 0.9
nominal_values = {0:1}
bounds = [(nominal_values[i] - relative_deviation*nominal_values[i],
nominal_values[i] + relative_deviation*nominal_values[i])
for i in range(len(uncertain_parameters))]
box_uncertainty_set = pyros.BoxSet(bounds=bounds)
solvername = 'baron'
solverpath_exe = '<path to baron>'
baron_solver = pyo.SolverFactory(solvername, executable=solverpath_exe)
local_solver = baron_solver
global_solver = baron_solver
first_stage_variables =[m.L]
second_stage_variables = []
results_1 = pyros_solver.solve(model = m,
first_stage_variables = first_stage_variables,
second_stage_variables = second_stage_variables,
uncertain_params = uncertain_parameters,
uncertainty_set = box_uncertainty_set,
local_solver = local_solver,
global_solver= global_solver,
tee=True,
options = {
"objective_focus": pyros.ObjectiveType.worst_case,
"solve_master_globally": True,
"load_solution":False
})
Error Message
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-afa9aa54a15b> in <module>
76 "objective_focus": pyros.ObjectiveType.worst_case,
77 "solve_master_globally": True,
---> 78 "load_solution":False
79 })
80
/usr/local/lib/python3.7/site-packages/pyomo/contrib/pyros/pyros.py in solve(self, model, first_stage_variables, second_stage_variables, uncertain_params, uncertainty_set, local_solver, global_solver, **kwds)
327 model = model
328 # === Validate kwarg inputs
--> 329 validate_kwarg_inputs(model, config)
330
331 # === Validate ability of grcs RO solver to handle this model
/usr/local/lib/python3.7/site-packages/pyomo/contrib/pyros/util.py in validate_kwarg_inputs(model, config)
440 pdb.set_trace()
441 # === Uncertain params provided check
--> 442 if len(config.uncertain_params) == 0:
443 raise ValueError("User must designate at least one uncertain parameter.")
444
ValueError: User must designate at least one uncertain parameter.
The text was updated successfully, but these errors were encountered:
Summary
With no initial value for uncertain parameter, PyROS complains
ValueError: User must designate at least one uncertain parameter.
We should improve this error message to be more informative. Consider the example below where I have one uncertain parameter. To reproduce, consider two runs of the code below. First, run with the line below "
# First try running with this line
. Then comment out that line and run with the line below. One triggers the ValueError, the other does not.Steps to reproduce the issue
Error Message
The text was updated successfully, but these errors were encountered: