0
在我試圖實現一個約束,使得總數等於使用之和的它,然後各自分工要求,你可以在代碼中爲什麼在列表中的對象中值不會更改?
self.MaX[o].x=self.MaX[o].x*DEMAND/ToT
這是看到了代碼我正在實施約束。
但是,當以前我只使用直接變量而不使用任何列表代碼工作正常,但在我介紹列表後,我開始有這個問題,價值沒有改變,因爲我預期它,或者他們它應該在邏輯上改變。
您可以在執行代碼後看到ToT值應該等於DEMAND,但這不會發生。
class chromosome:
def __init__(self,identifier):
self.x=D.PDF[identifier].rvs()
self.identifier=identifier
class individual:
def __init__(self):
self.MaX=[]
for o in range(3):
self.MaX.append(chromosome(o))
ToT=sum(chromosome.x for chromosome in self.MaX)
print("before changing total is {}".format(ToT))
for i in range(D.COEF.shape[1]):
print("Individual values before {}".format(self.MaX[o].x))
self.MaX[o].x=self.MaX[o].x*DEMAND/ToT
print("Individual values after {}".format(self.MaX[o].x))
ToT=sum(chromosome.x for chromosome in self.MaX)
print("after changing total is {}".format(ToT))
這裏D.PDF是以下列方式創建的自定義概率分佈的列表。
from scipy import stats
import scipy.ndimage
for j in range(3):
D.space[j]=np.ones(DEMAND, dtype=np.float32)
D.space[j]=scipy.ndimage.filters.gaussian_filter1d(D.space[j],10)
D.space[j]=D.space[j]/D.space[j].sum()
D.PDF[j] = stats.rv_discrete(name='pdfX'.format(j), values=(np.arange(DEMAND), D.space[j]))
請幫助一下出了什麼問題。我沒有看到任何邏輯錯誤,使用列表進行此類工作是否存在任何問題,請讓我知道。
我很尷尬,不知道我錯過了它... – Alexander