我尝试使用下面的函数在配子算法中进行变异步骤。不幸的是,我得到了如下错误:
IndexError Traceback (most recent call last)
<ipython-input-20-35511e994420> in <cell line: 2>()
1 #Run the GA algorithm.
----> 2 out_1 = myGA_pv.run_ga_pv_simulation(problem, params)
3 #out_2 = myGA_wind.run_ga_simulation(problem, params)
4
1 frames
/content/myGA_pv.py in mutate(x, mu, sigma)
151 flag = np.random.rand(np.int(np.nan_to_num(x.position))) <= mu
152 ind = np.argwhere(flag)
--> 153 y.position[ind] += sigma*(np.random.rand(ind.any().shape))
154 return y
155
IndexError: invalid index to scalar variable.
字符串
这个函数的代码如下:
def mutate(x, mu, sigma):
y = x.deepcopy()
flag = np.random.rand(np.int(np.nan_to_num(x.position))) <= mu
ind = np.argwhere(flag)
y.position[ind] += sigma*(np.random.rand(ind.shape))
return y
型
如何克服这种错误?
1条答案
按热度按时间zqry0prt1#
如果你的
x.position
是一个scalar variables
,即一个np.float64
,构造如下:字符串
argwhere
与int
一起工作,并产生一个(n,1)数组:型
使用它作为
y
的索引会产生错误:型
任何试图索引
scalar variable
的尝试都会产生此错误。我不知道这是你的代码,什么是从别处复制的(没有太多的理解?),但关键的事情是看看问题行中的索引操作。变量是什么,
position
和ind
。型
我不能提出任何修正,因为我没有大局或任何数据。但任何修正的第一步都是了解错误