集體智慧編程遇到的問題

第三章

P38

問題描述:安裝PILhtml

  • 錯誤1:_imagingft.c:73:10: fatal error: 'freetype/fterrors.h' file not found
    解決方法:ln -s /usr/local/include/freetype2 /usr/local/include/freetype算法

  • 錯誤2:'X11/Xlib.h' file not found
    解決方法:ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/Tk.framework/Versions/8.5/Headers/X11 /usr/local/include/X11 (MacOSX10.9.sdk,換成本身的版本)segmentfault

P40

問題描述:生成樹狀圖blogclust.jpg時,報錯
錯誤:app

IOError: decoder zip not available

緣由:PIL須要依賴其餘庫,可是依賴卻出了問題(P38的錯誤1和2,就是依賴問題)
解決方法:安裝PIL的一個分支,叫pillow
安裝方法:dom

  1. 卸載以前安裝的PIL,方法參考連接code

  2. pip install pillow
    未知問題:因爲以前經過源代碼編譯安裝過PIL,後來才裝的pillow,不知道直接安裝pillow會不會出現問題orm

P99

問題描述:運行遺傳算法,報錯
錯誤:htm

for d in range(len(sol) / 2):
TypeError: object of type 'NoneType' has no len()

緣由:blog

# 當if,elif都不知足是,返回None
def mutate(vec):
    i = random.randint(0, len(domain) - 1)
    if random.random() < 0.5 and vec[i] > domain[i][0]:
        return vec[0:i] + [vec[i] - step] + vec[i+1:]
    elif vec[i] < domain[i][2]:
        return vec[0:i] + [vec[i] + step] + vec[i+1:]

解決方法:ip

# if,elif都不知足的狀況是,vec[i]等於domain[i][3],所以把vec[i]等於domain[i][4]加入到if的條件判斷中。這很合理,由於無聊random.random()的隨機值是多少,只要vec[i] == doman[i][0],那麼elif就會執行。  
def mutate(vec):
    i = random.randint(0, len(domain) - 1)
    if (random.random() < 0.5 and vec[i] > domain[i][0]) or vec[i] == domain[i][5]: 
        print '>', vec[0:i] + [vec[i] - step] + vec[i+1:]
        return vec[0:i] + [vec[i] - step] + vec[i+1:]
    elif vec[i] < domain[i][6]:
        print '<', vec[0:i] + [vec[i] + step] + vec[i+1:]
        return vec[0:i] + [vec[i] + step] + vec[i+1:]

# 什麼都不作,也行
def mutate(vec):
    i = random.randint(0, len(domain) - 1)
    if random.random() < 0.5 and vec[i] > domain[i][0]:
        return vec[0:i] + [vec[i] - step] + vec[i+1:]
    elif vec[i] < domain[i][7]:
        return vec[0:i] + [vec[i] + step] + vec[i+1:]
    else:
        return vec

參考連接

相關文章
相關標籤/搜索