




已閱讀5頁(yè),還剩76頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序開(kāi)發(fā),信息管理部王輝,Python背景介紹,課程導(dǎo)航,起源,作者:GuidoVanRossum(GvR)/guido/名字的讀法“仁慈的終身獨(dú)裁者”BenevolentDictatorForLife他持續(xù)關(guān)注Python的開(kāi)發(fā)進(jìn)程,指導(dǎo)支持Python開(kāi)源社區(qū)的活動(dòng),并在必要的時(shí)刻做出決定。目前在Google工作,得名,“1989年12月,我在尋找一門(mén)“課余”編程項(xiàng)目來(lái)打發(fā)圣誕節(jié)前后的時(shí)間。我的辦公室會(huì)關(guān)門(mén),但我有一臺(tái)家用電腦,而且沒(méi)有太多其它東西。我決定為當(dāng)時(shí)我正構(gòu)思的一個(gè)新的腳本語(yǔ)言寫(xiě)一個(gè)解釋器,它是ABC語(yǔ)言的后代,對(duì)UNIX/C程序員會(huì)有吸引力。作為一個(gè)略微有些無(wú)關(guān)想法的人,和一個(gè)蒙提派森(MontyPython)的飛行馬戲團(tuán)的狂熱愛(ài)好者,我選擇了Python作為項(xiàng)目的標(biāo)題?!?每個(gè)人都會(huì),ComputerProgrammingforEverybody1999年,Guido向DARPA闡述Python語(yǔ)言的特性:簡(jiǎn)單、直觀、強(qiáng)大開(kāi)源,以便任何人都可以為它做貢獻(xiàn)代碼像純英語(yǔ)那樣容易理解適用于短期開(kāi)發(fā)的日常任務(wù)這些想法中的一些已經(jīng)成為現(xiàn)實(shí)。Python已經(jīng)成為一門(mén)流行的編程語(yǔ)言,尤其是在互聯(lián)網(wǎng)環(huán)境下。,Python啟示錄,Python崇尚優(yōu)美、清晰、簡(jiǎn)單,是一個(gè)優(yōu)秀并廣泛使用的語(yǔ)言。TIOBE語(yǔ)言排行第八,Google的第三大開(kāi)發(fā)語(yǔ)言,Dropbox的基礎(chǔ)語(yǔ)言,豆瓣的服務(wù)器語(yǔ)言。,Python背景介紹,課程導(dǎo)航,特性,交互式命令行(Interactiveconsole)不只是腳本強(qiáng)大易用的標(biāo)準(zhǔn)庫(kù)膠水語(yǔ)言(gluelanguage)收放自如(scalability)不要括號(hào)vsPerlvsRuby,交互式命令行(Interactiveconsole),Python可以單步直譯運(yùn)行。運(yùn)行Python解釋器進(jìn)入交互式命令行的環(huán)境,你可以在提示符號(hào)旁輸入代碼,按Enter鍵輸出結(jié)果:print(Hello,Python!)Hello,Python!有點(diǎn)像Shell腳本的執(zhí)行方式。,不只是腳本,原因是“腳本語(yǔ)言”泛指僅作簡(jiǎn)單編程任務(wù)的語(yǔ)言,如Linuxshellscript、JavaScript等,它們只能處理簡(jiǎn)單的任務(wù)而Python是面向?qū)ο缶幊蹋∣OP)的,支持異常處理和類型檢查Python的支持者較喜歡稱它為一種高階動(dòng)態(tài)編程語(yǔ)言,強(qiáng)大易用的標(biāo)準(zhǔn)庫(kù),核心庫(kù)不超過(guò)10MbHtml、Xml解析:BeautifulSoup,Expat字符串處理:字典、數(shù)組切片、正則表達(dá)式re單元測(cè)試:PyUnit代碼版本控制:PySVN網(wǎng)絡(luò)訪問(wèn):urllib2圖形模塊:Tkinter、PyTCL、WxPython串行化、多線程等擴(kuò)展標(biāo)準(zhǔn)庫(kù)十分容易,膠水語(yǔ)言(gluelanguage),Python經(jīng)常用作將不同語(yǔ)言編寫(xiě)的程序“粘”在一起的膠水語(yǔ)言。Google內(nèi)部的很多項(xiàng)目使用C+編寫(xiě)性能要求極高的部分,然后用Python調(diào)用相應(yīng)的模塊。C/C+:Boost.Python使得Python和C+的類庫(kù)能互相調(diào)用(.pyc)Java:Jython是用Java實(shí)現(xiàn)的Python,可同時(shí)使用二者的類庫(kù).NET:IronPython是Python在.NET平臺(tái)上的版本。,收放自如(scalability),Python內(nèi)建的數(shù)據(jù)結(jié)構(gòu)(variable,list和dict)以及對(duì)多線程分布式操作的支持,使得程序可以用相同的代碼處理不同規(guī)模的數(shù)據(jù),以及并發(fā)的用戶需求。GoogleAppEngine,不要括號(hào),Python使用縮進(jìn)而不是括號(hào)來(lái)進(jìn)行代碼段標(biāo)識(shí),減少了視覺(jué)上的混亂,并且使程序變短,從而提高了程序的可讀性。,vs.Perl,Perl是另一種廣泛使用(濫用)的動(dòng)態(tài)高級(jí)語(yǔ)言,經(jīng)常被用來(lái)與Python比較。正則表達(dá)式的典范催生了CGI、PHP黑客最喜愛(ài)的語(yǔ)言LarryWallPerl語(yǔ)言之父,語(yǔ)言學(xué)家/larry/兩屆國(guó)際C語(yǔ)言混亂代碼大賽(IOCCC)的冠軍第一屆自由軟件獎(jiǎng)得主,程序員的三大美德,懶惰:能讓人盡量減少總能量支出的美德。它使你寫(xiě)出節(jié)省腦力、可以重用的代碼;也督促你為程序?qū)懽⑨尯臀臋n,那樣你就不用回答各種問(wèn)題。所以它是程序員的第一大美德。所以有了這本書(shū)。參見(jiàn)下兩條。不耐煩:當(dāng)電腦想偷懶時(shí)你爆發(fā)的怒氣.它使你寫(xiě)的代碼能主動(dòng)預(yù)測(cè)、而非被動(dòng)滿足用戶需求,至少裝作是這樣。所以它是程序員的第二大美德。參見(jiàn)懶惰和傲慢。傲慢:自傲到人神共憤的程度,也是一種品質(zhì),能使你編寫(xiě)(維護(hù))的程序讓人無(wú)可指摘。所以它是程序員的第三大美德.參見(jiàn)前兩條。,觀點(diǎn),Perl之父LarryWall:“做一件事有很多種方法”P(pán)ython資深開(kāi)發(fā)者TimPeters:“做一件事,應(yīng)該有一種最直觀的方法,而且最好只有一種?!盤(pán)ython之父GuidoVanRossum:“做一件事情只有一種方法”,vs.Ruby,Ruby:比Python更年輕的動(dòng)態(tài)語(yǔ)言完全面向?qū)ο笾С终齽t表達(dá)式整合了多種語(yǔ)言的優(yōu)勢(shì)RubyonRails網(wǎng)站快速開(kāi)發(fā)工具松本行弘(“Matz”)“不要重復(fù)自己”,國(guó)籍,用途,腳本程序大型程序的原型開(kāi)發(fā)科學(xué)計(jì)算網(wǎng)絡(luò)應(yīng)用計(jì)算機(jī)圖形編程,知名的Python應(yīng)用,Zope:一個(gè)應(yīng)用程序服務(wù)器,具有內(nèi)容管理、團(tuán)隊(duì)開(kāi)發(fā)、XML、面向?qū)ο蟆OAP接口等一系先進(jìn)特性,開(kāi)源。Gadfly:一個(gè)用Python寫(xiě)的面向?qū)ο箨P(guān)系型數(shù)據(jù)庫(kù),具有小巧、快速、可移植性好的特點(diǎn),具有大部分SQL語(yǔ)言特性。開(kāi)源。Wallbase:Python編寫(xiě)的圖片站點(diǎn)。uTorrent:BitTorrent下載軟件,主程序僅2Mb,支持ipv6地址解析。開(kāi)源。Torchlight:Python編寫(xiě)的大型3D游戲,原Blizzard公司人員制作發(fā)行,開(kāi)源。,GoogleAppsEngine,“GoogleAppEngine可讓您在Google的基礎(chǔ)架構(gòu)上運(yùn)行您的網(wǎng)絡(luò)應(yīng)用程序。AppEngine應(yīng)用程序易于構(gòu)建和維護(hù),并可根據(jù)您的訪問(wèn)量和數(shù)據(jù)存儲(chǔ)需要的增長(zhǎng)輕松擴(kuò)展。使用GoogleAppEngine,將不再需要維護(hù)服務(wù)器:您只需上傳您的應(yīng)用程序,它便可立即為您的用戶提供服務(wù)?!盤(pán)ython為GAE的數(shù)據(jù)存儲(chǔ)區(qū)、Google帳戶、網(wǎng)址抓取和電子郵件服務(wù)提供了豐富的PythonAPI。GAE還提供了一個(gè)稱為webapp的簡(jiǎn)單Python網(wǎng)絡(luò)應(yīng)用程序框架,從而可以輕松開(kāi)始構(gòu)建應(yīng)用程序。,GAE的主要服務(wù),動(dòng)態(tài)網(wǎng)絡(luò)服務(wù),提供對(duì)常用網(wǎng)絡(luò)技術(shù)的完全支持持久存儲(chǔ)空間,支持查詢、分類和事務(wù)自動(dòng)擴(kuò)展和負(fù)載平衡用戶身份驗(yàn)證和使用Google帳戶發(fā)送電子郵件的API一套在本地模擬GAE的開(kāi)發(fā)環(huán)境用于在指定時(shí)間和定期觸發(fā)事件的計(jì)劃任務(wù),Python背景介紹,課程導(dǎo)航,HelloWorld例子,在hello.py中寫(xiě)入如下,并保存:print(HelloWorld!)退出文本編輯器,然后在命令行輸入:pythonhello.py可以看到Python隨后輸出:HelloWorld!,基本數(shù)據(jù)類型,a=10#int整數(shù)a=1.3#float浮點(diǎn)數(shù)a=True#真值(True/False)a=Hello!#字符串。字符串也可以用雙引號(hào)。,for循環(huán),for元素in序列:statement例子:forain3,4.4,life:printa,while循環(huán),while條件:statement舉例:whilei=0次+重復(fù)=1次?重復(fù)0或者1次m重復(fù)m次。比如說(shuō)a4相當(dāng)于aaaa,再比如說(shuō)1-32相當(dāng)于1-31-3m,n重復(fù)m到n次。比如說(shuō)a2,5表示a重復(fù)2到5次。小于m次的重復(fù),或者大于n次的重復(fù)都不符合條件。,正則表達(dá)式,正則表達(dá)相符的字符串舉例0-93,59678a?bba+baaaaab,正則表達(dá)式,正則表達(dá)式的常用語(yǔ)法:1)單個(gè)字符:.任意的一個(gè)字符a|b字符a或字符bafga或者f或者g的一個(gè)字符0-40-4范圍內(nèi)的一個(gè)字符a-fa-f范圍內(nèi)的一個(gè)字符m不是m的一個(gè)字符s一個(gè)空格S一個(gè)非空格d0-9D0-9w0-9a-zA-ZW0-9a-zA-Z,2)重復(fù)緊跟在單個(gè)字符之后,表示多個(gè)這樣類似的字符*重復(fù)=0次+重復(fù)=1次?重復(fù)0或者1次m重復(fù)m次。比如說(shuō)a4相當(dāng)于aaaa,再比如說(shuō)1-32相當(dāng)于1-31-3m,n重復(fù)m到n次。比如說(shuō)a2,5表示a重復(fù)2到5次。小于m次的重復(fù),或者大于n次的重復(fù)都不符合條件。,正則表達(dá)相符的字符串舉例0-93,59678a?bba+baaaaab,兩個(gè)例子,“集體智慧編程”根據(jù)品味相似度進(jìn)行電影推薦(第2章)家族旅行問(wèn)題的最優(yōu)化算法(第5章),根據(jù)品味相似度進(jìn)行電影推薦,基本思路:從一大群人中找出與我們品味相近的一小群人,對(duì)這些人所喜愛(ài)的其他內(nèi)容進(jìn)行考查,并把它們組合起來(lái)創(chuàng)建一個(gè)經(jīng)過(guò)排名的推薦列表。(協(xié)作過(guò)濾CollaborativeFiltering)步驟:1.搜集偏好2.尋找相似的用戶3.推薦電影,搜集偏好,首先找到一種表示不同人及其偏好的電影的方法??梢允褂萌藢?duì)幾部電影的評(píng)分來(lái)刻畫(huà)他們的偏好,評(píng)分從1到5,分?jǐn)?shù)越高,表示某人對(duì)該電影越喜歡。如何建立這種從人到電影的對(duì)應(yīng)關(guān)系?Python中有一個(gè)很簡(jiǎn)單的方法來(lái)表示這種數(shù)據(jù)結(jié)構(gòu):使用嵌套的字典。,搜集偏好,創(chuàng)建名為recommandations.py的數(shù)據(jù)文件:critics=LisaRose:LadyintheWater:2.5,SnakesonaPlane:3.5,JustMyLuck:3.0,SupermanReturns:3.5,You,MeandDupree:2.5,TheNightListener:3.0,GeneSeymour:LadyintheWater:3.0,SnakesonaPlane:3.5,JustMyLuck:1.5,SupermanReturns:5.0,TheNightListener:3.0,You,MeandDupree:3.5Toby:SnakesonaPlane:4.5,You,MeandDupree:1.0,SupermanReturns:4.0,搜集偏好,我們可以使用交互控制臺(tái)對(duì)字典的數(shù)據(jù)進(jìn)行查詢和修改:fromrecommendationsimportcriticscriticsLisaRoseLadyintheWater2.5criticsTobySnakesonaPlane=4.5criticsTobySnakesonaPlane:4.5,You,MeandDupree:1.0,尋找相似的用戶,收集了人們的偏好數(shù)據(jù)后,我們需要方法來(lái)計(jì)算某兩個(gè)人電影品味的相似度。有兩種基本的方法可以實(shí)現(xiàn)這個(gè)目的:歐幾里得距離皮爾遜相關(guān)度,歐幾里得距離評(píng)價(jià),以二維空間中的情形為例:設(shè)坐標(biāo)軸為人們都評(píng)價(jià)過(guò)的兩部電影,然后將參與評(píng)價(jià)的人根據(jù)他們對(duì)這兩部電影的評(píng)分繪制到圖上,并考察他們彼此間的距離,如圖:圖中的點(diǎn)距離越近,表明兩個(gè)人的偏好越接近。推廣到多維向量空間,歐幾里得法可表示為:計(jì)算每一軸上兩點(diǎn)的差值求平方,再將各軸相加,最后取平方根。,歐幾里得距離評(píng)價(jià),如計(jì)算Toby和LaSalle的距離:frommathimportsqrtsqrt(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.2402530733520421,歐幾里得距離評(píng)價(jià),使用這種方法構(gòu)造出如下相似度函數(shù):defsim_distance(prefs,person1,person2):#得到共同的電影si=foriteminprefsperson1:ifiteminprefsperson2:siitem=1#如果沒(méi)有共同的電影則返回0iflen(si)=0:return0#計(jì)算歐幾里得距離,返回相似度Sum_of_squares=sum(pow(prefsperson1item-prefsperson2item,2)foriteminprefsperson1ifiteminprefsperson2)return1/(1+sum_of_squares),皮爾遜相關(guān)度,皮爾遜相關(guān)系數(shù)是一種更復(fù)雜的方法,它通過(guò)計(jì)算兩組數(shù)據(jù)與某一直線擬合的程度來(lái)判斷它們的相似程度。該方法有助于克服所謂的“夸大評(píng)價(jià)”現(xiàn)象對(duì)結(jié)果的影響。右圖中,雖然Jack對(duì)電影的評(píng)價(jià)比Lisa更為極端(更容易給出高分和低分),但這個(gè)坐標(biāo)系中的點(diǎn)都相當(dāng)靠近擬合曲線(圖中虛線),可以說(shuō)兩人的品味較為相近。,皮爾遜相關(guān)度,使用如下函數(shù)計(jì)算皮爾遜相關(guān)度,該函數(shù)返回一個(gè)-1到1的值:defsim_pearson(prefs,p1,p2):#得到共同評(píng)價(jià)的電影si=foriteminprefsp1:ifiteminprefsp2:siitem=1#如果沒(méi)有共同評(píng)價(jià)的電影,返回0iflen(si)=0:return0#將兩人的偏好相加sum1=sum(prefsp1itforitinsi)sum2=sum(prefsp2itforitinsi),皮爾遜相關(guān)度,#計(jì)算平方和sum1Sq=sum(pow(prefsp1it,2)foritinsi)sum2Sq=sum(pow(prefsp2it,2)foritinsi)#計(jì)算對(duì)應(yīng)項(xiàng)的乘積和pSum=sum(prefsp1it*prefsp2itforitinsi)#計(jì)算皮爾遜相關(guān)度num=pSum-(sum1*sum2/n)den=sqrt(sum1Sq-pow(sum1,2)/n)*(sum2Sq-pow(sum2,2)/n)ifden=0:return0r=num/denreturnr,皮爾遜相關(guān)度,在交互式控制臺(tái)中使用上述兩種計(jì)算方法:reload(recommendations)recommendations.sim_distance(recommendations.critics,.LisaRose,GeneSeymour)0.148148148148recommendations.sim_pearson(recommendations.critics,.LisaRose,GeneSeymour)0.396059017191,給評(píng)論者打分,有了對(duì)兩個(gè)人進(jìn)行比較的函數(shù),下面就可以找出與某人品味最接近的人了,進(jìn)而,可以根據(jù)這些人的喜好來(lái)推薦電影。deftopMatches(prefs,person,n=5,similarity=sim_pearson):scores=(similarity(prefs,person,other),other)forotherinprefsifother!=person#對(duì)list排序,相似度最高的人排在最前scores.sort()scores.reverse()returnscores0:n在交互控制臺(tái)中使用該函數(shù):recommendations.topMatches(recommendations.critics,Toby,n=3)(0.99124070716192991,LisaRose),(0.92447345164190486,MickLaSalle),(0.89340514744156474,ClaudiaPuig),推薦電影,我們固然可以選擇只看那些和我們品味相近的人推薦的電影,但這樣做太武斷,也許某部電影大家普遍都覺(jué)得不錯(cuò),而恰好與我們最相近的那個(gè)人沒(méi)有看過(guò)。所以,我們需要一種對(duì)推薦人進(jìn)行加權(quán)的推薦,如下表:給Toby的電影推薦表,推薦電影,S.X打頭的列是經(jīng)過(guò)加權(quán)的電影評(píng)分。下面的代碼給出了上述過(guò)程的具體實(shí)現(xiàn):defgetRecommendations(prefs,person,similarity=sim_pearson):totals=simSums=forotherinprefs:#不和自己比ifother=person:continuesim=similarity(prefs,person,other)#忽略小于等于0的評(píng)分ifsimreload(recommendations)recommendations.getRecommendations(recommendations.critics,Toby)(3.3477895267131013,TheNightListener),(2.8325499182641614,LadyintheWater),(2.5309807037655645,JustMyLuck)recommendations.getRecommendations(recommendations.critics,Toby,.similarity=recommendations.sim_distance)(3.5002478401415877,TheNightListener),(2.7561242939959363,LadyintheWater),(2.4619884860743739,JustMyLuck)結(jié)果顯示,人們?yōu)門(mén)oby推薦了三部電影,而且用兩種相似度地算方法得到的列表是一樣的。,總結(jié),到此為止,我們建立了一個(gè)完整的推薦系統(tǒng),它適用于任何的商品推薦以及基于相似度的數(shù)據(jù)關(guān)系挖掘。而這一切在Python中,僅僅是建立一個(gè)涉及人、商品以及評(píng)價(jià)值的字典,然后根據(jù)某些相似度算法得出的人與人的相似度,就可以進(jìn)行推薦了。,Python背景介紹,課程導(dǎo)航,家族旅行問(wèn)題的最優(yōu)化算法,問(wèn)題描述:Glass一家住在美國(guó)不同的地方。他們希望在紐約相聚,在同一天從各地坐飛機(jī)到紐約,幾天后再一起離開(kāi)。每天有許多往返的航班,起飛時(shí)間、價(jià)格以及飛行時(shí)間都不相同?,F(xiàn)在需要找到一種好的日程安排,使得大家的旅行花費(fèi)盡可能少、等待親友的時(shí)間盡可能短、乘坐飛機(jī)的時(shí)間盡可能短。建立文件optimization.py,加入如下代碼:people=(Seymour,BOS),(Franny,DAL),(Zooey,CAK),(Walt,MIA),(Buddy,ORD),(Les,OMA)#目的地:紐約LaGuardia機(jī)場(chǎng)destination=LGA,問(wèn)題分析,首先要找到一種通用的表示日程安排方案的方法。然后,為了描述某種方案的好壞,需要定義某種函數(shù)。在優(yōu)化問(wèn)題中,這個(gè)函數(shù)叫做代價(jià)函數(shù)(costfunciton)。一個(gè)方案越好,它的代價(jià)函數(shù)值越小。這樣找最優(yōu)方案的問(wèn)題轉(zhuǎn)化為找代價(jià)函數(shù)值最小的方案的問(wèn)題。最后設(shè)法找出具有最小代價(jià)函數(shù)值的方案,完成優(yōu)化過(guò)程。,導(dǎo)入數(shù)據(jù),從網(wǎng)址origin,dest,depart,arrive,price=line.strip().split(,)flights.setdefault(origin,dest),)#將航班詳情加入到航班字典的值中flights(origin,dest).append(depart,arrive,int(price),描述方案,如何描述各種方案呢?一個(gè)通用的方法是使用數(shù)字列表,它使得之后描述的優(yōu)化算法并不依賴于具體的問(wèn)題。本例中,用數(shù)字表示某人乘坐當(dāng)天的第幾趟航班,0代表第一趟,1代表第二趟,以此類推。由于每個(gè)人都要選擇往和返兩趟班機(jī),所以列表的總長(zhǎng)是人數(shù)的兩倍。例如:1,4,3,2,7,3,6,3,2,4,5,3該方案表示Seymour坐第2趟航班去紐約,坐第5趟航班回波士頓Franny坐第4趟航班去紐約,坐第3趟回達(dá)拉斯。,代價(jià)函數(shù),代價(jià)函數(shù)的選取是優(yōu)化算法的重要環(huán)節(jié)。本例中,可以綜合考慮如下因素來(lái)構(gòu)造代價(jià)函數(shù):價(jià)格:所有航班的總票價(jià)旅行時(shí)間:所有人在飛機(jī)上度過(guò)的總時(shí)間等待時(shí)間:在機(jī)場(chǎng)等待其他成員到達(dá)的總時(shí)間出發(fā)時(shí)間:早晨太早起飛的航班有額外的代價(jià),因?yàn)槁眯姓咚卟蛔闫?chē)租用時(shí)間:如果集體租車(chē),那么他們最好在某個(gè)時(shí)間前將車(chē)歸還,否則會(huì)多付租金。,代價(jià)函數(shù),限于篇幅,就不給出代價(jià)函數(shù)的全部代碼了,使用方法如下:reload(optimization)optimization.schedulecost(s)5285有了代價(jià)函數(shù),下面就是找到具有最小函數(shù)值的方案了。在這個(gè)例子中有16個(gè)航班、每個(gè)航班都有9種可能,所有的可能數(shù)為916,約3000億,所以窮舉是不現(xiàn)實(shí)的。下面使用兩種方法實(shí)現(xiàn)優(yōu)化:隨機(jī)優(yōu)化爬山法,隨機(jī)優(yōu)化,隨機(jī)生成一些方案,找出其中最好的方案。defrandomoptimize(domain,costf):best=999999999bestr=Noneforiinrange(1000):#隨機(jī)生成一個(gè)方案r=random.randint(domaini0,domaini1)foriinrange(len(domain)#計(jì)算代價(jià)cost=costf(r)#與當(dāng)前最優(yōu)方案的代價(jià)比較ifcostdomainj0:neighbors.append(sol0:j+solj+1+solj+1:)ifsoljreload(optimization)domain=(0,8)*(len(optimization.people)*2)s=optimization.randomoptimize(domain,optimization.schedulecost)optimization.schedulecost(s)3328optimization.printschedule(s)SeymourBoston12:34-15:02$10912:08-14:05$142FrannyDallas12:19-15:25$3429:49-13:51$229ZooeyAkron9:15-12:14$24715:50-18:45$243WaltMiami15:34-18:11$32614:08-16:09$232BuddyChicago14:22-16:32$12615:04-17:23$189LesOmaha15:03-16:42$1356:19-8:13$239,查看結(jié)果,s=optimization.hillclimb(domain,optimization.schedulecost)optimization.schedulecost(s)3063optimization.printschedule(s)SeymourBOS12:34-15:02$10910:33-12:03$74FrannyDAL10:30-14:57$29010:51-14:16$256ZooeyCAK10:53-13:36$18910:32-13:16$139WaltMIA11:28-14:40$24812:37-15:05$170BuddyORD12:44-14:17$13410:33-13:11$132LesOMA11:08-13:07$17518:25-20:34$205,總結(jié),在本例中,首先使用Python的列表對(duì)不同的方案進(jìn)行了數(shù)學(xué)建模,然后根據(jù)一些指標(biāo)建立了代價(jià)函數(shù),最后使用兩種方法實(shí)現(xiàn)了優(yōu)化過(guò)程。在整個(gè)過(guò)程中,Python的簡(jiǎn)單易用讓我們能夠集中精力解決實(shí)際的問(wèn)題。而無(wú)需過(guò)多關(guān)注編程本身。此外,Python的交互控制臺(tái)使得編程與調(diào)試過(guò)程變得自然順暢。,硬幣的另一面,限制Python發(fā)展的因素缺乏預(yù)包裝的解決方案數(shù)據(jù)庫(kù)訪問(wèn)層的局限性文檔差距缺乏GUI和團(tuán)隊(duì)協(xié)作工具,限制Python發(fā)展的因素,缺乏預(yù)包裝的解決方案PHP在企業(yè)軟件領(lǐng)域贏得了輝煌的成功,主要原因就在于其廣泛實(shí)用的產(chǎn)品門(mén)類,比如討論板、聊天服務(wù)器和分組日歷以及即時(shí)消息系統(tǒng)等。相比之下,Python提供的解決方案就少多了。Python語(yǔ)言的分發(fā)版中確實(shí)包含了一些擴(kuò)展的類庫(kù),越來(lái)越多的程序員也在致力于開(kāi)發(fā)等價(jià)PHP的Python工具,但是考慮到市場(chǎng)的時(shí)間緊迫性,而且你所面臨的問(wèn)題已經(jīng)有現(xiàn)成的PHP解決方案可以對(duì)付,那么PHP自然會(huì)成為你的首選。,限制Python發(fā)展的因素,數(shù)據(jù)庫(kù)訪問(wèn)層的局限性相比現(xiàn)有的成熟技術(shù),比如ODBC和JDBC,Python的數(shù)據(jù)庫(kù)訪問(wèn)層看起來(lái)就過(guò)于原始了。雖然這一方面也在發(fā)生變化,但是,開(kāi)發(fā)部門(mén)需要平滑地接合現(xiàn)有的復(fù)雜遺留數(shù)據(jù),同時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 清明上河圖的歷史背景與藝術(shù)價(jià)值:八年級(jí)美術(shù)教案
- 時(shí)間極限皮秒課件
- 關(guān)于夢(mèng)想的中考作文(12篇)
- 早期發(fā)現(xiàn)課件
- 商業(yè)智能咨詢及服務(wù)合同條款
- 500字左右的教師節(jié)作文14篇
- 產(chǎn)品采購(gòu)供應(yīng)合同及質(zhì)量保證條款
- 工地混凝土輸送泵車(chē)出租合同
- 紀(jì)念七七事變課件
- 2025年磨工(中級(jí))考試試卷:磨削加工教育與培訓(xùn)體系
- 2025-2026秋季學(xué)年第一學(xué)期教導(dǎo)處工作安排表
- 2025山東菏澤鄆城縣人民醫(yī)院招聘合同制護(hù)理人員60人筆試備考試題及答案解析
- 2025四川綿陽(yáng)市建設(shè)工程質(zhì)量檢測(cè)中心有限責(zé)任公司市場(chǎng)部業(yè)務(wù)拓展員崗招聘1人筆試備考試題及答案解析
- 廣東省東莞市2024-2025學(xué)年七年級(jí)下學(xué)期期末語(yǔ)文試題(含答案)
- 項(xiàng)目成本預(yù)算管理制度
- 2025年成都教師招聘考試教育公共基礎(chǔ)知識(shí)真題及答案
- 中學(xué)語(yǔ)文教學(xué)資源開(kāi)發(fā)與利用指南
- 2025年材料管理崗位考試題庫(kù)
- 年級(jí)主任職責(zé)詳解及管理要點(diǎn)
- 儲(chǔ)能項(xiàng)目投資測(cè)算方案
- 【25秋】統(tǒng)編版小學(xué)語(yǔ)文二年級(jí)上冊(cè)-《第八單元大單元設(shè)計(jì)》課件
評(píng)論
0/150
提交評(píng)論