Skip to content

Network interdiction problems are broken #15

Open
@stigrs

Description

@stigrs

I get the following error when I try to run, e.g., the min_cost_flow_interdict example:

`MultiIndex([( 'B', 'End'),
( 'C', 'B'),
( 'C', 'D'),
( 'D', 'End'),
('Start', 'B'),
('Start', 'C')],
names=['StartNode', 'EndNode'])
ERROR: Constructing component 'edge_set' from data=None failed: ValueError:
The truth value of a MultiIndex is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all().

ValueError Traceback (most recent call last)
in
227
228 if name == 'main':
--> 229 m = MinCostFlowInterdiction('sample_nodes_data.csv', 'sample_arcs_data.csv')
230 m.solve()
231 m.printSolution()

in init(self, nodefile, arcfile, attacks)
44 self.nCmax = len(self.node_set) * self.arc_data['Cost'].max()
45
---> 46 self.createPrimal()
47 self.createInterdictionDual()
48

in createPrimal(self)
59 # Add the sets
60 model.node_set = pe.Set( initialize=self.node_set )
---> 61 model.edge_set = pe.Set( initialize=self.arc_set, dimen=2)
62
63 # Create the variables

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\block.py in setattr(self, name, val)
541 # Pyomo components are added with the add_component method.
542 #
--> 543 self.add_component(name, val)
544 else:
545 #

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\block.py in add_component(self, name, val)
1079 _blockName, str(data))
1080 try:
-> 1081 val.construct(data)
1082 except:
1083 err = sys.exc_info()[1]

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\util.py in construct(self, data)
123 self._name = base.name
124 self.class = base
--> 125 return base.construct(self, data)
126 construct.doc = base.construct.doc
127 cls.construct = construct

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\set.py in construct(self, data)
1987 # Bypass the index validation and create the member directly
1988 for index in self.index_set():
-> 1989 self._getitem_when_not_present(index)
1990 finally:
1991 # Restore the original initializer (if overridden by data argument)

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\set.py in _getitem_when_not_present(self, index)
2030 self._init_values._dimen = _d
2031 try:
-> 2032 _values = self._init_values(_block, index)
2033 except TuplizeError as e:
2034 raise ValueError( str(e) % (

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pyomo\core\base\set.py in call(self, parent, index)
412 elif _val is Set.Skip:
413 return _val
--> 414 elif not _val:
415 return _val
416

C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\lib\site-packages\pandas\core\indexes\base.py in nonzero(self)
2148 def nonzero(self):
2149 raise ValueError(
-> 2150 f"The truth value of a {type(self).name} is ambiguous. "
2151 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
2152 )

ValueError: The truth value of a MultiIndex is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions