Python 3.11.2 (main, Feb 8 2023, 14:49:24) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from cspy import PSOLGENT
>>> from networkx import DiGraph
>>> from numpy import zeros, ones, array
>>> G = DiGraph(directed=True, n_res=2)
>>> G.add_edge('Source', 'A', res_cost=array([1, 1]), weight=1)
>>> G.add_edge('Source', 'B', res_cost=array([1, 1]), weight=1)
>>> G.add_edge('Source', 'C', res_cost=array([10, 1]), weight=10)
>>> G.add_edge('A', 'C', res_cost=array([1, 1]), weight=1)
>>> G.add_edge('A', 'E', res_cost=array([10, 1]), weight=10)
>>> G.add_edge('A', 'F', res_cost=array([10, 1]), weight=10)
>>> G.add_edge('B', 'C', res_cost=array([2, 1]), weight=-1)
>>> G.add_edge('B', 'F', res_cost=array([10, 1]), weight=10)
>>> G.add_edge('B', 'E', res_cost=array([10, 1]), weight=10)
>>> G.add_edge('C', 'D', res_cost=array([1, 1]), weight=-1)
>>> G.add_edge('D', 'E', res_cost=array([1, 1]), weight=1)
>>> G.add_edge('D', 'F', res_cost=array([1, 1]), weight=1)
>>> G.add_edge('D', 'Sink', res_cost=array([10, 10]), weight=10)
>>> G.add_edge('F', 'Sink', res_cost=array([10, 1]), weight=1)
>>> G.add_edge('E', 'Sink', res_cost=array([1, 1]), weight=1)
>>> n_nodes = len(G.nodes())
>>> psolgent = PSOLGENT(G, [5, 5], [0, 0],
... max_iter=200,
... swarm_size=50,
... member_size=n_nodes,
... neighbourhood_size=50)
>>> psolgent.run()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/czentye/.local/lib/python3.11/site-packages/cspy/algorithms/psolgent.py", line 179, in run
self._init_swarm()
File "/home/czentye/.local/lib/python3.11/site-packages/cspy/algorithms/psolgent.py", line 232, in _init_swarm
self.pos[:, [0, -1]] = min(10 * self.lower_bound, np.min(self.pos))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
>>>
The code should pass.
Example fails with Python3.10 as well.
Describe the bug
The example code for
cspy.PSOLGENTfails with latest version (1.0.3) and Python3.11 and also with Python3.10.To Reproduce
Expected behavior
The code should pass.
Desktop (please complete the following information):
cspy== 1.0.3numpy== 1.24.2networkx== 3.0Additional context
Example fails with Python3.10 as well.