想问问这个报错是什么问题导致的。我的程序报错如下:
(I want to ask what caused this error report. My program reports errors as follows):
f’Invalid type annotation (argument {i}) of Taichi function: {annotation}’
taichi.lang.exception.TaichiSyntaxError: Invalid type annotation (argument 1) of Taichi function: <taichi.types.ndarray_type.NdarrayType object at 0x0000018406415C08>
import taichi as ti
from OPT.nsde import sort_by_values
ti.init()
@ti.func
def index_of(a: int, in_list: ti.types.ndarray()):
list_len = in_list.shape[0]
for i in range(0, list_len):
if in_list[i] == a: return i
@ti.kernel
def mid(distance: ti.types.ndarray(), sorted0: ti.types.ndarray(), values: ti.types.ndarray(), front: ti.types.ndarray()) -> ti.types.ndarray():
front_len = front.shape[0]
for k in range(1, front_len - 1):
distance[index_of(sorted0[k], front)] = distance[index_of(sorted0[k], front)] + (values[sorted0[k + 1]] - values[sorted0[k - 1]]) / (max(values) - min(values))
return distance
# Function to calculate crowding distance
# 计算相应梯队front内的个体拥挤度
def crowding_distance(objects_values, front):
distance = [0 for i in range(0, len(front))] # 初始化个体拥挤度距离为零
for values in objects_values:
# python计算
sorted0 = sort_by_values(front, values[:])
distance[index_of(sorted0[0], front)] = int(1e10)
distance[index_of(sorted0[-1], front)] = int(1e10)
# 转化为numpy
distance = numpy.array(distance, dtype=int)
sorted0 = numpy.array(sorted0, dtype=int)
values = numpy.asarray(values, dtype=float)
front = numpy.array(front, dtype=int)
# taichi计算
distance = mid(distance, sorted0, values, front)
return distance
以上是我的程序。
Please help me, I do not know how to let my code run, thank you!