Python TypeError:“float”对象不可编辑

2024-10-02 16:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用Python制作模型,但我不明白我的错误在哪里

我的IDE说问题在于“规则1”,但我不知道为什么。我读过关于这个类型错误的文章,发现函数“range()”有帮助,但这给我带来了更多的问题。在那之后,我发现用“/”代替“/”会有所帮助,但没有任何改变。 我不确定我是否正确使用了这些解决方案,或者我的问题在代码中有不止一个错误。 提前感谢您的帮助

def model3(T,mu,alpha,beta):
    d_3=np.zeros((3,3))
        
    
    for h in range (T):
        rew1=1
        rew2=1
        q1=0.5
        q2=0.5
        delta1=rew1-q1
        delta2=rew2-q2
        q1=q1+alpha*delta1
        q2=q2+alpha*delta2
        Q=range(q1+q2)
        rule1=math.exp(beta*q1)//sum(math.exp(beta*(q1+q2)))
        rule2=math.exp(beta*q2)//sum(math.exp(beta*(q1+q2)))
        p=[rule1,rule2] 
    #Make choice according to choice probailities
        c=random.choice(p)
    #Generated reward
        r_3=np.random.rand()
        d_3[0,1]=1
        d_3[0,2]=0
    
        if c==p[0]:       
            m_3=mu[0]     
            d_3[1,0]=k[0] 
        else:
            m_3=mu[1]     
            d_3[2,0]=k[1]  

    
    
        if r_3<m_3:
            reward_3=1    
            if m_3==mu[0]:          
                d_3[1,1]=d_3[1,1]+1
            else:
                d_3[2,1]=d_3[2,1]+1 
    
        else:
            reward_3=0
            if m_3==mu[0]:          
                d_3[1,2]=d_3[1,2]+1 
            else:
                d_3[2,2]=d_3[2,2]+1 
     
                    
    return(d_3)


Tags: alphaif错误nprangemathelsebeta
2条回答

您的代码包含2个range()函数

for h in range(T):

Q = range(q1 + q2)

range函数不能迭代浮点数,所以请尝试使用下面的代码行来解决您的问题

for h in range(int(T)):

Q = range(int(q1 + q2))

我认为问题在于这方面:

Q=range(q1+q2)

q1和q2都是浮点数,即使它们加起来是1.0-它仍然是浮点数,并且不能将range()与浮点参数一起使用

编辑: 根据下面的评论,您可以尝试执行以下操作:

Q = range(int(q1 + q2))

相关问题 更多 >