




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、A Pera Global Company 2009 PERA ChinaPython新語言,新平臺新語言,新平臺Python經(jīng)典入門教程A Pera Global Company 2009 PERA China大綱大綱起源起源特性特性用途用途不足不足如何學(xué)習(xí)如何學(xué)習(xí)A Pera Global Company 2009 PERA ChinaPython經(jīng)典入門教程A Pera Global Company 2009 PERA China起源起源作者作者 :Guido Van Rossum (GvR)名字的讀法“仁慈的終身獨(dú)裁者” Benevolent Dictator For Life他持續(xù)關(guān)
2、注 Python 的開發(fā)進(jìn)程,指導(dǎo)支持Python開源社區(qū)的活動,并在必要的時刻做出決定。目前在Google工作Python經(jīng)典入門教程A Pera Global Company 2009 PERA China得名得名“1989年12月,我在尋找一門“課余”編程項目來打發(fā)圣誕節(jié)前后的時間。我的辦公室會關(guān)門,但我有一臺家用電腦,而且沒有太多其它東西。我決定為當(dāng)時我正構(gòu)思的一個新的腳本語言寫一個解釋器,它是 ABC 語言的后代,對 UNIX / C 程序員會有吸引力。作為一個略微有些無關(guān)想法的人,和一個蒙提派森(Monty Python)的飛行馬戲團(tuán)的狂熱愛好者,我選擇了 Python 作為項目的
3、標(biāo)題。”Python經(jīng)典入門教程A Pera Global Company 2009 PERA China每個人都會每個人都會Computer Programming for Everybody1999年,Guido向DARPA闡述Python語言的特性:簡單、直觀、強(qiáng)大開源,以便任何人都可以為它做貢獻(xiàn)代碼像純英語那樣容易理解適用于短期開發(fā)的日常任務(wù)這些想法中的一些已經(jīng)成為現(xiàn)實(shí)。Python 已經(jīng)成為一門流行的編程語言,尤其是在互聯(lián)網(wǎng)環(huán)境下。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China大綱大綱起源起源特性特性用途用途不足不足如何學(xué)習(xí)如何學(xué)習(xí)
4、A Pera Global Company 2009 PERA ChinaPython經(jīng)典入門教程A Pera Global Company 2009 PERA China特性特性交互式命令行交互式命令行(Interactive console)不只是腳本不只是腳本強(qiáng)大易用的標(biāo)準(zhǔn)庫強(qiáng)大易用的標(biāo)準(zhǔn)庫膠水語言膠水語言(glue language)收放自如收放自如(scalability)不要括號不要括號vs Perlvs RubyPython經(jīng)典入門教程A Pera Global Company 2009 PERA China交互式命令行交互式命令行(Interactive console)Pyt
5、hon可以單步直譯運(yùn)行。運(yùn)行Python解釋器進(jìn)入交互式命令行的環(huán)境,你可以在提示符號旁輸入代碼,按Enter鍵輸出結(jié)果: print(Hello, Python!) Hello, Python!有點(diǎn)像Shell 腳本的執(zhí)行方式。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China不只是腳本不只是腳本原因是“腳本語言”泛指僅作簡單編程任務(wù)的語言,如Linux shell script、JavaScript等,它們只能處理簡單的任務(wù)而Python是面向?qū)ο缶幊蹋∣OP)的,支持異常處理和類型檢查Python的支持者較喜歡稱它為一種高階動態(tài)編程語言Py
6、thon經(jīng)典入門教程A Pera Global Company 2009 PERA China強(qiáng)大易用的標(biāo)準(zhǔn)庫強(qiáng)大易用的標(biāo)準(zhǔn)庫核心庫不超過10MbHtml、Xml解析:BeautifulSoup, Expat字符串處理:字典、數(shù)組切片、正則表達(dá)式 re單元測試: PyUnit代碼版本控制: PySVN網(wǎng)絡(luò)訪問: urllib2圖形模塊: Tkinter、PyTCL、WxPython串行化、多線程等擴(kuò)展標(biāo)準(zhǔn)庫十分容易擴(kuò)展標(biāo)準(zhǔn)庫十分容易Python經(jīng)典入門教程A Pera Global Company 2009 PERA China膠水語言膠水語言(glue language)Python經(jīng)常用作
7、將不同語言編寫的程序“粘”在一起的膠水語言。Google內(nèi)部的很多項目使用C+編寫性能要求極高的部分,然后用Python調(diào)用相應(yīng)的模塊。C/C+: Boost.Python使得 Python 和 C+ 的類庫能互相調(diào)用(.pyc)Java: Jython 是用Java實(shí)現(xiàn)的Python,可同時使用二者的類庫.NET:IronPython是Python在.NET平臺上的版本。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China收放自如收放自如(scalability)Python內(nèi)建的數(shù)據(jù)結(jié)構(gòu)(variable, list 和 dict)以及對多線程
8、分布式操作的支持,使得程序可以用相同的代碼處理不同規(guī)模的數(shù)據(jù),以及并發(fā)的用戶需求。Google App EnginePython經(jīng)典入門教程A Pera Global Company 2009 PERA China不要括號不要括號Python使用縮進(jìn)而不是括號來進(jìn)行代碼段標(biāo)識,減少了視覺上的混亂,并且使程序變短,從而提高了程序的可讀性。Python經(jīng)典入門教程A Pera Global Company 2009 PERA Chinavs. PerlPerl是另一種廣泛使用(濫用)的動態(tài)高級語言,經(jīng)常被用來與Python 比較。正則表達(dá)式的典范催生了CGI、PHP黑客最喜愛的語言Larry Wa
9、ll Perl語言之父,語言學(xué)家兩屆國際C語言混亂代碼大賽(IOCCC) 的冠軍第一屆自由軟件獎得主Python經(jīng)典入門教程A Pera Global Company 2009 PERA China程序員的三大美德程序員的三大美德懶惰:懶惰:能讓人盡量減少總能量支出的美德。它使你寫出節(jié)省腦力、可以重用的代碼;也督促你為程序?qū)懽⑨尯臀臋n,那樣你就不用回答各種問題。所以它是程序員的第一大美德。所以有了這本書。參見下兩條。不耐煩:不耐煩:當(dāng)電腦想偷懶時你爆發(fā)的怒氣. 它使你寫的代碼能主動預(yù)測、而非被動滿足用戶需求,至少裝作是這樣。所以它是程序員的第二大美德。 參見懶惰和傲慢。傲慢:傲慢:自傲到人神共
10、憤的程度,也是一種品質(zhì),能使你編寫(維護(hù))的程序讓人無可指摘。所以它是程序員的第三大美德. 參見前兩條。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China觀點(diǎn)觀點(diǎn)Perl之父Larry Wall:“做一件事有很多種方法”Python資深開發(fā)者Tim Peters:“做一件事,應(yīng)該有一種最直觀的方法,而且最好只有一種?!盤ython之父Guido Van Rossum: “做一件事情只有一種方法”Python經(jīng)典入門教程A Pera Global Company 2009 PERA Chinavs. RubyRuby:比Python更年輕的動態(tài)語言
11、完全面向?qū)ο笾С终齽t表達(dá)式整合了多種語言的優(yōu)勢Ruby on Rails 網(wǎng)站快速開發(fā)工具松本行弘松本行弘 (“Matz”)“不要重復(fù)自己”Python經(jīng)典入門教程A Pera Global Company 2009 PERA China國籍?國籍?語言語言作者作者作者國籍作者國籍編程風(fēng)格編程風(fēng)格PerlLarry Wall美國隨性自由PythonGuido van Rossum荷蘭優(yōu)雅統(tǒng)一Ruby松本行弘 (“Matz”)日本兼容并包Python經(jīng)典入門教程A Pera Global Company 2009 PERA China大綱大綱起源起源特性特性用途用途不足不足如何學(xué)習(xí)如何學(xué)習(xí)A P
12、era Global Company 2009 PERA ChinaPython經(jīng)典入門教程A Pera Global Company 2009 PERA China用途用途腳本程序大型程序的原型開發(fā)科學(xué)計算網(wǎng)絡(luò)應(yīng)用計算機(jī)圖形編程Python經(jīng)典入門教程A Pera Global Company 2009 PERA China知名的知名的Python應(yīng)用應(yīng)用Zope:一個應(yīng)用程序服務(wù)器,具有內(nèi)容管理、團(tuán)隊開發(fā)、XML、面向?qū)ο蟆OAP接口等一系先進(jìn)特性,開源。Gadfly:一個用Python寫的面向?qū)ο箨P(guān)系型數(shù)據(jù)庫,具有小巧、快速、可移植性好的特點(diǎn),具有大部分SQL語言特性。開源。Wallb
13、ase: Python編寫的圖片站點(diǎn)。uTorrent : BitTorrent下載軟件,主程序僅2Mb,支持ipv6地址解析。開源。Torchlight: Python編寫的大型3D游戲,原Blizzard公司人員制作發(fā)行,開源。Python經(jīng)典入門教程A Pera Global Company 2009 PERA ChinaGoogle Apps Engine“Google App Engine 可讓您在 Google 的基礎(chǔ)架構(gòu)上運(yùn)行您的網(wǎng)絡(luò)應(yīng)用程序。App Engine 應(yīng)用程序易于構(gòu)建和維護(hù),并可根據(jù)您的訪問量和數(shù)據(jù)存儲需要的增長輕松擴(kuò)展。使用 Google App Engine,將
14、不再需要維護(hù)服務(wù)器:您只需上傳您的應(yīng)用程序,它便可立即為您的用戶提供服務(wù)?!盤ython 為GAE的數(shù)據(jù)存儲區(qū)、Google 帳戶、網(wǎng)址抓取和電子郵件服務(wù)提供了豐富的 Python API。GAE還提供了一個稱為webapp的簡單 Python 網(wǎng)絡(luò)應(yīng)用程序框架,從而可以輕松開始構(gòu)建應(yīng)用程序。Python經(jīng)典入門教程A Pera Global Company 2009 PERA ChinaGAE的主要服務(wù)的主要服務(wù)動態(tài)網(wǎng)絡(luò)服務(wù),提供對常用網(wǎng)絡(luò)技術(shù)的完全支持持久存儲空間,支持查詢、分類和事務(wù)自動擴(kuò)展和負(fù)載平衡用戶身份驗證和使用 Google 帳戶發(fā)送電子郵件的 API一套在本地模擬 GAE的開發(fā)
15、環(huán)境用于在指定時間和定期觸發(fā)事件的計劃任務(wù)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China兩個例子兩個例子“集體智慧編程集體智慧編程”根據(jù)品味相似度進(jìn)行電影推薦(第2章)家族旅行問題的最優(yōu)化算法(第5章)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China根據(jù)品味相似度進(jìn)行電影推薦根據(jù)品味相似度進(jìn)行電影推薦基本思路:從一大群人中找出與我們品味相近的一小群人,對這些人所喜愛的其他內(nèi)容進(jìn)行考查,并把它們組合起來創(chuàng)建一個經(jīng)過排名的推薦列表。(協(xié)作過濾 Collaborative Filtering)步驟:
16、1.搜集偏好2.尋找相似的用戶3.推薦電影Python經(jīng)典入門教程A Pera Global Company 2009 PERA China搜集偏好搜集偏好首先找到一種表示不同人及其偏好的電影的方法??梢允褂萌藢撞侩娪暗脑u分來刻畫他們的偏好,評分從1到5,分?jǐn)?shù)越高,表示某人對該電影越喜歡。如何建立這種從人到電影的對應(yīng)關(guān)系?Python中有一個很簡單的方法來表示這種數(shù)據(jù)結(jié)構(gòu):使用嵌套的字典嵌套的字典。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China搜集偏好搜集偏好創(chuàng)建名為recommandations.py 的數(shù)據(jù)文件:critics=Lisa
17、 Rose: Lady in the Water: 2.5, Snakes on a Plane: 3.5,Just My Luck: 3.0, Superman Returns: 3.5, You, Me and Dupree: 2.5,The Night Listener: 3.0,Gene Seymour: Lady in the Water: 3.0, Snakes on a Plane: 3.5,Just My Luck: 1.5, Superman Returns: 5.0, The Night Listener: 3.0,You, Me and Dupree: 3.5Toby:
18、Snakes on a Plane:4.5,You, Me and Dupree:1.0,Superman Returns:4.0Python經(jīng)典入門教程A Pera Global Company 2009 PERA China搜集偏好搜集偏好我們可以使用交互控制臺對字典的數(shù)據(jù)進(jìn)行查詢和修改: from recommendations import critics criticsLisa RoseLady in the Water2.5 criticsTobySnakes on a Plane=4.5 criticsTobySnakes on a Plane:4.5,You, Me and D
19、upree:1.0Python經(jīng)典入門教程A Pera Global Company 2009 PERA China尋找相似的用戶尋找相似的用戶收集了人們的偏好數(shù)據(jù)后,我們需要方法來計算某兩個人電影品味的相似度。有兩種基本的方法可以實(shí)現(xiàn)這個目的:歐幾里得距離歐幾里得距離皮爾遜相關(guān)度皮爾遜相關(guān)度Python經(jīng)典入門教程A Pera Global Company 2009 PERA China歐幾里得距離評價歐幾里得距離評價以二維空間中的情形為例:設(shè)坐標(biāo)軸為人們都評價過的兩部電影,然后將參與評價的人根據(jù)他們對這兩部電影的評分繪制到圖上,并考察他們彼此間的距離,如圖:圖中的點(diǎn)距離越近,表明兩個人的偏
20、好越接近。推廣到多維向量空間,歐幾里得法可表示為:計算每一軸上兩點(diǎn)的差值求平方,再將各軸相加,最后取平方根。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China歐幾里得距離評價歐幾里得距離評價如計算Toby和LaSalle的距離: from math import sqrt sqrt(pow(5-4,2)+pow(4-1,2)3.1622776601683795為了給偏好接近的情況給出較大的值,可取該值的倒數(shù),并+1避免除數(shù)為0: 1/(1+sqrt(pow(5-4,2)+pow(4-1,2)0.24421Python經(jīng)典入門教程A Pera Gl
21、obal Company 2009 PERA China歐幾里得距離評價歐幾里得距離評價使用這種方法 構(gòu)造出如下相似度函數(shù):def sim_distance(prefs,person1,person2):# 得到共同的電影得到共同的電影si=for item in prefsperson1:if item in prefsperson2:siitem=1# 如果沒有共同的電影則返回如果沒有共同的電影則返回0if len(si)=0: return 0#計算歐幾里得距離,返回相似度計算歐幾里得距離,返回相似度 Sum_of_squares=sum(pow(prefsperson1item-pre
22、fsperson2item,2)for item in prefsperson1 if item in prefsperson2)return 1/(1+sum_of_squares)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China皮爾遜相關(guān)度皮爾遜相關(guān)度皮爾遜相關(guān)系數(shù)是一種更復(fù)雜的方法,它通過計算兩組數(shù)據(jù)與某一直線擬合的程度來判斷它們的相似程度。該方法有助于克服所謂的“夸大評價”現(xiàn)象對結(jié)果的影響。右圖中,雖然Jack對電影的評價比Lisa更為極端(更容易給出高分和低分),但這個坐標(biāo)系中的點(diǎn)都相當(dāng)靠近擬合曲線(圖中虛線),可以說兩人的品味較為相
23、近。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China皮爾遜相關(guān)度皮爾遜相關(guān)度使用如下函數(shù)計算皮爾遜相關(guān)度,該函數(shù)返回一個-1到1的值:def sim_pearson(prefs,p1,p2):# 得到共同評價的電影得到共同評價的電影si=for item in prefsp1:if item in prefsp2: siitem=1# 如果沒有共同評價的電影,返回如果沒有共同評價的電影,返回0if len(si)=0: return 0# 將兩人的偏好相加將兩人的偏好相加sum1=sum(prefsp1it for it in si)sum2=
24、sum(prefsp2it for it in si)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China皮爾遜相關(guān)度皮爾遜相關(guān)度# 計算平方和計算平方和sum1Sq=sum(pow(prefsp1it,2) for it in si)sum2Sq=sum(pow(prefsp2it,2) for it in si)# 計算對應(yīng)項的乘積和計算對應(yīng)項的乘積和pSum=sum(prefsp1it*prefsp2it for it in si)# 計算皮爾遜相關(guān)度計算皮爾遜相關(guān)度num=pSum-(sum1*sum2/n)den=sqrt(sum1Sq-
25、pow(sum1,2)/n)*(sum2Sq-pow(sum2,2)/n)if den=0: return 0r=num/denreturn rPython經(jīng)典入門教程A Pera Global Company 2009 PERA China皮爾遜相關(guān)度皮爾遜相關(guān)度在交互式控制臺中使用上述兩種計算方法: reload(recommendations) recommendations.sim_distance(recommendations.critics,. Lisa Rose,Gene Seymour)0.148148148148 recommendations.sim_pearson(re
26、commendations.critics,. Lisa Rose,Gene Seymour)0.396059017191Python經(jīng)典入門教程A Pera Global Company 2009 PERA China給評論者打分給評論者打分有了對兩個人進(jìn)行比較的函數(shù),下面就可以找出與某人品味最接近的人了,進(jìn)而,可以根據(jù)這些人的喜好來推薦電影。def topMatches(prefs,person,n=5,similarity=sim_pearson):scores=(similarity(prefs,person,other),other)for other in prefs if oth
27、er!=person# 對對list排序,相似度最高的人排在最前排序,相似度最高的人排在最前scores.sort( )scores.reverse( )return scores0:n在交互控制臺中使用該函數(shù): recommendations.topMatches(recommendations.critics,Toby,n=3)(0.991241, Lisa Rose), (0.92447345164190486, Mick LaSalle),(0.893405, Claudia Puig)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China推
28、薦電影推薦電影我們固然可以選擇只看那些和我們品味相近的人推薦的電影,但這樣做太武斷,也許某部電影大家普遍都覺得不錯,而恰好與我們最相近的那個人沒有看過。所以,我們需要一種對推薦人進(jìn)行加權(quán)的推薦,如下表:給Toby的電影推薦表Python經(jīng)典入門教程A Pera Global Company 2009 PERA China推薦電影推薦電影S.X打頭的列是經(jīng)過加權(quán)的電影評分。下面的代碼給出了上述過程的具體實(shí)現(xiàn):def getRecommendations(prefs,person,similarity=sim_pearson):totals=simSums=for other in prefs:#
29、 不和自己比不和自己比if other=person: continuesim=similarity(prefs,person,other)# 忽略小于等于忽略小于等于0的評分的評分if sim reload(recommendations) recommendations.getRecommendations(recommendations.critics,Toby)(3.3477895267131013, The Night Listener), (2.8325499182641614, Lady in theWater), (2.53645, Just My Luck) recommen
30、dations.getRecommendations(recommendations.critics,Toby,. similarity=recommendations.sim_distance)(3.55877, The Night Listener), (2.7561242939959363, Lady in theWater), (2.4619884860743739, Just My Luck)結(jié)果顯示,人們?yōu)門oby推薦了三部電影,而且用兩種相似度地算方法得到的列表是一樣的 。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China總結(jié)總結(jié)到
31、此為止,我們建立了一個完整的推薦系統(tǒng),它適用于任何的商品推薦以及基于相似度的數(shù)據(jù)關(guān)系挖掘。而這一切在Python中,僅僅是建立一個涉及人、商品以及評價值的字典,然后根據(jù)某些相似度算法得出的人與人的相似度,就可以進(jìn)行推薦了。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China家族旅行問題的最優(yōu)化算法家族旅行問題的最優(yōu)化算法問題描述:Glass一家住在美國不同的地方。他們希望在紐約相聚,在同一天從各地坐飛機(jī)到紐約,幾天后再一起離開。每天有許多往返的航班,起飛時間、價格以及飛行時間都不相同?,F(xiàn)在需要找到一種好的日程安排,使得大家的旅行花費(fèi)盡可能少、等待親
32、友的時間盡可能短、乘坐飛機(jī)的時間盡可能短。建立文件optimization.py,加入如下代碼:people = (Seymour,BOS),(Franny,DAL),(Zooey,CAK),(Walt,MIA),(Buddy,ORD),(Les,OMA)#目的地:紐約目的地:紐約LaGuardia機(jī)場機(jī)場destination=LGAPython經(jīng)典入門教程A Pera Global Company 2009 PERA China問題分析問題分析首先要找到一種通用的表示日程安排方案的方法。然后,為了描述某種方案的好壞,需要定義某種函數(shù)。在優(yōu)化問題中,這個函數(shù)叫做代價函數(shù)(cost funci
33、ton)。一個方案越好,它的代價函數(shù)值越小。這樣找最優(yōu)方案的問題轉(zhuǎn)化為找代價函數(shù)值最小的方案的問題。最后設(shè)法找出具有最小代價函數(shù)值的方案,完成優(yōu)化過程。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China導(dǎo)入數(shù)據(jù)導(dǎo)入數(shù)據(jù)從網(wǎng)址 可以下載到航班數(shù)據(jù),格式如下:LGA,MIA,20:27,23:42,169MIA,LGA,19:53,22:21,173LGA,BOS,6:39,8:09,86分別是起點(diǎn)、終點(diǎn)、起飛時間、到達(dá)時間和機(jī)票價格。將數(shù)據(jù)載入到以起止點(diǎn)為鍵、以航班詳情為值的字典中:flights=for line in file(schedule
34、.txt):origin,dest,depart,arrive,price=line.strip( ).split(,)flights.setdefault(origin,dest),)# 將航班詳情加入到航班字典的值中將航班詳情加入到航班字典的值中flights(origin,dest).append(depart,arrive,int(price)Python經(jīng)典入門教程A Pera Global Company 2009 PERA China描述方案描述方案如何描述各種方案呢?一個通用的方法是使用數(shù)字列表,它使得之后描述的優(yōu)化算法并不依賴于具體的問題。本例中,用數(shù)字表示某人乘坐當(dāng)天的第幾
35、趟航班,0代表第一趟,1代表第二趟,以此類推。由于每個人都要選擇往和返兩趟班機(jī),所以列表的總長是人數(shù)的兩倍。例如:1,4,3,2,7,3,6,3,2,4,5,3該方案表示Seymour坐第2趟航班去紐約,坐第5趟航班回波士頓Franny坐第4趟航班去紐約,坐第3趟回達(dá)拉斯。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China代價函數(shù)代價函數(shù)代價函數(shù)的選取是優(yōu)化算法的重要環(huán)節(jié)。本例中,可以綜合考慮如下因素來構(gòu)造代價函數(shù):價格:價格: 所有航班的總票價旅行時間旅行時間:所有人在飛機(jī)上度過的總時間等待時間等待時間: 在機(jī)場等待其他成員到達(dá)的總時間出發(fā)時間
36、出發(fā)時間: 早晨太早起飛的航班有額外的代價,因為旅行者睡眠不足汽車租用時間:汽車租用時間: 如果集體租車,那么他們最好在某個時間前將車歸還,否則會多付租金。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China代價函數(shù)代價函數(shù)限于篇幅,就不給出代價函數(shù)的全部代碼了,使用方法如下: reload(optimization) optimization.schedulecost(s)5285有了代價函數(shù),下面就是找到具有最小函數(shù)值的方案了。在這個例子中有16個航班、每個航班都有9種可能,所有的可能數(shù)為916,約3000億,所以窮舉是不現(xiàn)實(shí)的。下面使用兩種方
37、法實(shí)現(xiàn)優(yōu)化:隨機(jī)優(yōu)化隨機(jī)優(yōu)化爬山法爬山法Python經(jīng)典入門教程A Pera Global Company 2009 PERA China隨機(jī)優(yōu)化隨機(jī)優(yōu)化隨機(jī)生成一些方案,找出其中最好的方案。隨機(jī)生成一些方案,找出其中最好的方案。def randomoptimize(domain,costf):best=999999999bestr=Nonefor i in range(1000):#隨機(jī)生成一個方案隨機(jī)生成一個方案r=random.randint(domaini0,domaini1)for i in range(len(domain)# 計算代價計算代價cost=costf(r)# 與當(dāng)前最
38、優(yōu)方案的代價比較與當(dāng)前最優(yōu)方案的代價比較if costdomainj0:neighbors.append(sol0:j+solj+1+solj+1:)if solj reload(optimization) domain=(0,8)*(len(optimization.people)*2) s=optimization.randomoptimize(domain,optimization.schedulecost) optimization.schedulecost(s)3328 optimization.printschedule(s)Seymour Boston 12:34-15:02 $
39、109 12:08-14:05 $142Franny Dallas 12:19-15:25 $342 9:49-13:51 $229Zooey Akron 9:15-12:14 $247 15:50-18:45 $243Walt Miami 15:34-18:11 $326 14:08-16:09 $232Buddy Chicago 14:22-16:32 $126 15:04-17:23 $189Les Omaha 15:03-16:42 $135 6:19- 8:13 $239Python經(jīng)典入門教程A Pera Global Company 2009 PERA China查看結(jié)果查看結(jié)果
40、 s=optimization.hillclimb(domain,optimization.schedulecost) optimization.schedulecost(s)3063 optimization.printschedule(s)Seymour BOS 12:34-15:02 $109 10:33-12:03 $ 74Franny DAL 10:30-14:57 $290 10:51-14:16 $256Zooey CAK 10:53-13:36 $189 10:32-13:16 $139Walt MIA 11:28-14:40 $248 12:37-15:05 $170Budd
41、y ORD 12:44-14:17 $134 10:33-13:11 $132Les OMA 11:08-13:07 $175 18:25-20:34 $205Python經(jīng)典入門教程A Pera Global Company 2009 PERA China總結(jié)總結(jié)在本例中,首先使用Python的列表對不同的方案進(jìn)行了數(shù)學(xué)建模,然后根據(jù)一些指標(biāo)建立了代價函數(shù),最后使用兩種方法實(shí)現(xiàn)了優(yōu)化過程。在整個過程中,Python的簡單易用讓我們能夠集中精力解決實(shí)際的問題。而無需過多關(guān)注編程本身。此外,Python的交互控制臺使得編程與調(diào)試過程變得自然順暢。Python經(jīng)典入門教程A Pera Global
42、 Company 2009 PERA China大綱大綱起源起源特性特性用途用途不足不足如何學(xué)習(xí)如何學(xué)習(xí)A Pera Global Company 2009 PERA ChinaPython經(jīng)典入門教程A Pera Global Company 2009 PERA China硬幣的另一面硬幣的另一面限制限制Python發(fā)展的因素發(fā)展的因素缺乏預(yù)包裝的解決方案缺乏預(yù)包裝的解決方案數(shù)據(jù)庫訪問層的局限性數(shù)據(jù)庫訪問層的局限性文檔差距文檔差距缺乏缺乏GUI和團(tuán)隊協(xié)作工具和團(tuán)隊協(xié)作工具Python經(jīng)典入門教程A Pera Global Company 2009 PERA China限制限制Python發(fā)展
43、的因素發(fā)展的因素缺乏預(yù)包裝的解決方案缺乏預(yù)包裝的解決方案PHP 在企業(yè)軟件領(lǐng)域贏得了輝煌的成功,主要原因就在于其廣泛實(shí)用的產(chǎn)品門類,比如討論板、聊天服務(wù)器和分組日歷以及即時消息系統(tǒng)等。相比之下,Python提供的解決方案就少多了。Python語言的分發(fā)版中確實(shí)包含了一些擴(kuò)展的類庫,越來越多的程序員也在致力于開發(fā)等價PHP的Python工具,但是考慮到市場的時間緊迫性,而且你所面臨的問題已經(jīng)有現(xiàn)成的PHP解決方案可以對付,那么PHP自然會成為你的首選。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China限制限制Python發(fā)展的因素發(fā)展的因素數(shù)據(jù)庫訪問層的局限性數(shù)據(jù)庫訪問層的局限性相比現(xiàn)有的成熟技術(shù),比如ODBC和JDBC,Python的數(shù)據(jù)庫訪問層看起來就過于原始了。雖然這一方面也在發(fā)生變化,但是,開發(fā)部門需要平滑地接合現(xiàn)有的復(fù)雜遺留數(shù)據(jù),同時需要快速的SQL數(shù)據(jù)庫訪問,所有這一些使其在短時期內(nèi)難以對Python表現(xiàn)出什么太大的興趣。Python經(jīng)典入門教程A Pera Global Company 2009 PERA China限制限制Python發(fā)展的因素發(fā)展的因素文檔差距文檔差距相比其對手語言,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年文化旅游演藝項目策劃與運(yùn)營模式文化體驗設(shè)計創(chuàng)新報告
- 老年教育課程設(shè)置2025:生活化教學(xué)與個性化培養(yǎng)實(shí)踐報告
- 分布式能源系統(tǒng)2025年生物質(zhì)能源應(yīng)用能效提升與優(yōu)化分析報告
- 2025年醫(yī)養(yǎng)結(jié)合養(yǎng)老機(jī)構(gòu)養(yǎng)老地產(chǎn)開發(fā)與運(yùn)營策略報告
- 基于2025年視角的老舊街區(qū)改造社會穩(wěn)定風(fēng)險評估體系構(gòu)建報告001
- 2025年二手奢侈品市場鑒定標(biāo)準(zhǔn)與交易規(guī)范行業(yè)市場細(xì)分領(lǐng)域消費(fèi)趨勢研究報告
- 2025年社區(qū)心理健康服務(wù)社區(qū)參與度提升策略報告
- 互聯(lián)網(wǎng)金融服務(wù)平臺在金融科技人才培養(yǎng)中的應(yīng)用研究
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式藥物研發(fā)疫苗研發(fā)與生產(chǎn)報告
- 2025年醫(yī)藥企業(yè)研發(fā)外包(CRO)模式的成本效益分析與優(yōu)化路徑報告
- 2025-2030年中國高導(dǎo)磁芯行業(yè)深度研究分析報告
- 宣城市宣州區(qū)“政聘企培”人才引進(jìn)筆試真題2024
- 遠(yuǎn)程胎心監(jiān)護(hù)數(shù)據(jù)解讀
- 2025年 道路運(yùn)輸企業(yè)主要負(fù)責(zé)人考試模擬試卷(100題)附答案
- 2025至2030中國執(zhí)法系統(tǒng)行業(yè)經(jīng)營效益及前景運(yùn)行態(tài)勢分析報告
- 2025年全國法醫(yī)專項技術(shù)考試試題及答案
- 供應(yīng)鏈公司展會策劃方案
- 南通市崇川區(qū)招聘 社區(qū)工作者筆試真題2024
- 2025年寧夏銀川市中考?xì)v史三模試卷(含答案)
- 【藝恩】出游趨勢洞察報告
- 口腔診所規(guī)章管理制度
評論
0/150
提交評論