螞蟻源代碼
『壹』 誰有螞蟻信息分類網的源碼 最好是最新的 給個地址下載也行 謝謝了
網羅九百技術論壇 這個論壇里有很多源碼,你說的螞蟻分類網也有,還是VIP源碼呢 免費的
『貳』 螞蟻 螞蟻
螞蟻
螞蟻(ant)屬節肢動物門,昆蟲綱,膜翅目,蟻科。
目前有21亞科283屬(after Bolton 2003)(主流沿用的是16亞科的分類系統和21亞科的系統相比,新的系統從猛蟻亞科中分出了若干亞科)。螞蟻是人們常見的一類昆蟲,很容易識別。一般體小(0.5mm-3cm),顏色有黑、褐、黃、紅等,體壁具彈性,光滑或有毛。口器咀嚼式,上顎發達。觸角膝狀,4~13節,柄節很長,末端2~3節膨大。腹部第1節或1、2節呈結狀。有翅或無翅。前足的距大,梳狀,為凈角器(清理觸角用)。為多態型的社會昆蟲據估計,僅有大約半數的螞蟻——目前約為11700種——被描述了。一個更大范圍的螞蟻區系研究也有待進行。常見的有小家蟻Monomorium pharaonis L.等。
螞蟻的型與分工
發育為完全變態。所有的蟻科都過社會性群體生活。一般在一個群體里有四種不同的蟻型。
l、蟻後:有生殖能力的雌性,或稱母蟻,在群體中體型最大,特別是腹部大,生殖器官發達,觸角短,胸足小,有翅、脫翅或無翅。主要職責是產卵、繁殖後代和統管這個群體大家庭。
2.雄蟻:或稱父蟻。頭圓小,上顎不發達,觸角細長。有發達的生殖器官和外生殖器,主要職能是與蟻後交配。
3.工蟻:又稱職蟻。無翅,一般為群體中最小的個體,但數量最多。復眼小,單眼極微小或無。上顎、觸角和三對胸足都很發達,善於步行奔走。工蟻是沒有生殖能力的雌性。工蟻的主要職責是建造和擴大巢穴、採集食物、伺喂幼蟻及蟻後等。
4.兵蟻:頭大,上顎發達,可以粉碎堅硬食物,在保衛群體時即成為戰斗的武器。
螞蟻建立群體,也是以通過婚飛方式兩性相識結交為起點。相識後一見鍾情,在飛行中或飛行後交尾。「新郎」壽命不長,交尾後不久死亡留下「遺孀」蟻後獨自過著孤單生活。蟻後脫掉翅膀,在地下選擇適宜的土質和場所築巢。她「孤家寡人」,力量有限,只能暫時造一小室,作為安身之地,並使已「受孕」的身體有個產房。待體內的卵發育成熟產出後,小幼蟲孵化出世,蟻後就忙碌起來。每個幼蟻的食物都由她嘴對嘴地喂給,直到這些幼蟻長大發育為成蟻,並可獨立生活時為止。當第一批工蟻長成時,它們便挖開通往外界的洞口去尋找食物,隨後又擴大巢穴建築面積,為越來越多的家族成員提供住房。自此以後,飽受艱苦的蟻後就坐享清福,成為這個群體大家族的統帥。撫育幼蟻和喂養蟻後的工作均由工蟻承擔。但蟻後還要繼續交配,不斷產生受精卵,以繁殖大家族。她的壽命可長達15年。蟻巢有各種形式,大多數種類在地下土中築巢,挖有隧道、小室和住所,並將掘出的物質及葉片堆積在入口附近,形成小丘狀,起保護作用。也有的蟻用植物葉片、莖稈、葉柄等築成紙樣巢掛在樹上或岩石間。還有的蟻生活在林區朽木中。更為特殊的是,有的蟻將自己的巢築在別的種類蟻巢之中或旁邊;而兩「家」並不發生糾紛,能夠做到和睦相處。這種蟻巢叫做混合性蟻巢,實為異種共棲。無論不同的蟻類或同種的蟻,其一個巢內蟻的數目均可有很大的差別。最小的群體只有幾十隻或近百隻蟻,也有的幾千隻蟻,而大的群體可以有幾萬只,甚至更多的蟻。
在我國華南一帶的闊葉林中,還有一種翹尾蟻,顧名思義,就是它那帶有螯針的尾端常翹起來,像是躍躍欲試,隨時准備進攻的樣子。它有種怪脾氣,經常與樹打交道。它喜歡用叼來的腐質物以及從樹上啃下來的老樹皮,再攙雜上從嘴裡吐出來的粘性汁液,在樹上築成足球大的巢,巢內分成許多層次,分別住著雄蟻、蟻後和工蟻,並在巢中生兒育女,成為一個"獨立王國"。開始時一樹一巢,當群體過大,而且又有新的蟻後出生時,新蟻後便帶領部分工蟻另造新居。有時為爭奪領域,常展開一場惡斗。為了在樹上捕捉其他小蟲為食,它可用細長而有力的足在樹冠的枝葉上奔跑。如兩樹相距較近,為免去長途奔波之勞,它們能巧妙地互相咬住後足,垂吊下來,借風飄盪,搖到另一棵樹上去,搭成一條"蟻索橋"。為了能較長久地連接兩樹之間的通途,承擔搭橋任務的工蟻還能不斷替換。樹上的食物捕盡,又結隊順樹而下,長途奔襲,捕捉地面上的小動物。獵物一旦被擒獲,翅尾蟻便會用螯針注入麻醉液,使獵物處於昏迷狀態,然後拉的拉,拽的拽,即使是一隻超過它們體重百倍的螳螂或蚯蚓,也能被它們輕而易舉地拖回巢中。
人們從有這種蟻巢的樹下經過,可要十分小心。如驚動了它們,會傾巢出動,順樹而下或從空而降,進行攻擊,使你遭受挨蜇之苦。大家可要小心螞蟻!!
蟻類的食性在不同亞科和不同種類之間有很大的差別。一般可分為肉食性、植食性和雜食性。螞蟻在一年中的大部分時間里都在辛勤地勞動。那麼到了嚴寒的冬天它們又到哪裡去覓食呢?它們是如何過冬的呢?原來聰明的螞蟻在入冬之前早有準備。它們首先搬運雜草種子,准備明年播種用;同時搬運蚜蟲、介殼蟲、角蟬和灰蝶幼蟲等到自己巢內過冬,從這些昆蟲身上吸取排泄物做為食料(奶蜜)。螞蟻為什麼知道冬天快來了呢?從現代科學的觀點看,螞蟻的這種本能是受它們體內的年生物鍾控制而起作用的,換句話說,它們是按照年生物鍾的運行規律做好越冬期食物儲備的。
與螞蟻互動形成的生物達到了驚人的程度。與螞蟻共生(symbiosis)的生物,或專性或間性,植物超過了52科465種(Jolivet 1996),動物則達到了數千種(Kistner 1982; Hölldobler & Wilson 1990),還有大量未知的真菌和微生物(Schultz & McGlynn 2000; Mueller et al. 2001)。
螞蟻正在使用著非凡的生存策略——種植真菌,收獲種子,放牧產蜜昆蟲,編制巢穴,合作捕食,社會性寄生,蓄奴——這些都極大地刺激著科學家和公眾的好奇心。
螞蟻在世界各個角落都能存活,其秘訣就在於它們生活在一個非常有組織的群體中。它們一起工作,一起建築巢穴,使它們的卵與後代能在其中安全成長。
螞蟻有不同的類型,每一類都有其專門的職責。蟻後產卵,大部分卵將發育成雌性,它們被稱為工蟻。它們負責建築並保衛巢穴,照顧蟻後、卵和幼蟲,以及搜尋食物。到了一定的時候,雄蟻與新的蟻後會產生出來。它們有翅膀,從巢穴里集群飛出。交配以後,雄蟻即死去,新的蟻後則開始領導起又一個群體的生活。
在群體中,蟻後是最重要的成員。它是唯一能產卵的。這意味著它是這一群體中所有螞蟻的母親。工蟻喂養它,替它清潔身體,並將它的卵帶到另一處去照料。
某些澳大利亞螞蟻將它們的工蟻作為一種活的儲藏罐。當工蟻採集了大量的花蜜,即一種源自花中的甜甜的液體,將它吞進體內、身體變得膨大起來之後,它們就將自身掛在巢穴的天花板上,一直到有別的螞蟻需要食用它們體內儲藏的那些花蜜為止。
兵蟻正在林地上覓食。為搜尋食物,它們有時會在林地上排成長隊。它們總是很飢餓,因此幾乎會向任何東西發起進攻,有時甚至是大的哺乳動物。
不同的螞蟻吃不同的食物。收獲蟻吃種子,它們將種子收藏在地窖里;而割葉蟻吃蘑茹,它們將葉片搬運到地下,用來培植蘑茹。有些螞蟻則貯存一種叫蚜蟲的昆蟲,它們人蚜蟲體內抽取一種含糖的物質作為食物,這同人類從母牛身上擠奶的方式非常相似。
根據科學家的研究證明,螞蟻在洞穴里缺少糖份,對自己的生長發育很不好,為了能夠找到充分的糖份,所以螞蟻一旦發現甜的東西,觸角就會自主的硬起來,這是螞蟻的一個天性。
摘抄中科院爬行動物研究室
螞蟻是社會性很強的昆蟲,彼此通過身體發出的信息素來進行交流溝通,當螞蟻找到食物時,會在食物上撒布那樣的信息素,別的螞蟻就會本能地把有信息素的東西拖回洞里去。
當螞蟻死掉後,它身上的信息素依然存在,當有別的螞蟻路過時,會被信息素吸引,但是死螞蟻不會像活的螞蟻那樣跟對方交流信息(互相觸碰觸角),於是它帶有信息素的屍體就會被困惑的同伴當成食物運回去。
通常情況下,那樣的屍體不會被當成食物吃掉,因為除了信息素以外,每一窩的螞蟻都有自己特定的識別氣味,有相同氣味的東西不會受到攻擊,這就是同窩的螞蟻可以很好協作的基礎。
【關於螞蟻搬家】
在一些介紹自然常識的書上,螞蟻搬家,燕子低飛,蛇過道等現象,都被認為是即將下雨的先兆。事實果真如此嗎?
如果說螞蟻能夠憑借本能准確地感覺出即將下雨,甚至能准確地感覺出下雨量的大小,都是完全有可能的,但螞蟻是一種低智慧生物,其視力范圍很短,主要依靠嗅覺感知周圍的事物,測量自己的家與周圍較大區域地勢的相對高低,是一項較復雜的工作,必須依靠很好的視覺,鼠目寸光,螞蟻的目光比老鼠還短,因此,螞蟻不大可能會有測量自己的家與周圍較大區域地勢相對高低的本能。至於根據預測未來幾天的雨量來判斷自己的家是否會被雨水淹沒,其判斷難度更大,就連人類目前也很難准確做到這點,難道螞蟻比人還厲害,可以准確的計算自己的家是否會被雨水淹沒?是否需要通過搬家迴避雨水淹沒?
螞蟻窩幾乎無處不在,在我家的附近就有很多,我發現,每當連續下大雨的時候,茫茫大地一片汪洋,一連好幾天積存著很深(相對於螞蟻來講)的雨水,放眼望去,那些螞蟻的家也不乏有被水完全淹沒的,那末,在那深深的水下被一連浸泡了好幾天的那一窩窩螞蟻,是否都遭到了滅頂之災呢?根本沒有,只要雨過天晴,積水一退,那些螞蟻窩的洞口又迅速地出現了一隻只繁忙的螞蟻,只見它們忙裡忙外,絲毫沒有死傷慘重的跡象。這表明螞蟻的窩根本不怕雨水短時間的浸泡,當雨水的浸泡使得螞蟻窩上部沒有空氣時,窩內的螞蟻可採用堵住通道,向窩內下面較深處轉移的方法避免雨水浸泡的傷害,土壤的疏水作用,以及螞蟻窩內部較深處的結構特徵,使得螞蟻根本沒有必要一感覺到要下雨就開始考慮是否搬家。
為了驗證被水完全淹沒的螞蟻窩內的螞蟻是否會被水全部淹死,還可以通過水淹實驗加以驗證,試驗表明:受到水淹4個小時,沒有看出對窩內螞蟻的生命產生影響。既然被水淹的螞蟻窩內的螞蟻不會被水淹死,則在生物進化的過程中,螞蟻就沒有必要進化出在即將下雨前選擇搬家的本能。生物進化的選擇往往是最科學的選擇,為了防止螞蟻窩被水淹,更科學的選擇應該是在開始建螞蟻窩時就將其建在可防水淹的地方,而不是一次次地採取「勞民傷財」的搬家行動。難道螞蟻在建窩時沒有服從生物進化的選擇?
由此看來,螞蟻搬家不一定是螞蟻擔心自己的家是否會被水淹沒採取的行動,完全有可能是另有原因。比如,由於蟻群數量增加造成在螞蟻窩附近的食物短缺,需要尋找新的食物來源,由於在螞蟻窩附近出現別的蟻群造成一種威脅,需要迴避危險,或者是每群螞蟻本身就有一種建立多個蟻窩的習慣等等。至於螞蟻選擇在陰天或夜晚搬家,主要是為了防止太陽的暴曬對蟻卵可能造成的傷害,由於在夜晚人們不注意螞蟻的行動,但常常能夠在陰天看見螞蟻搬家,於是,就將螞蟻搬家與下雨聯系了起來。
有時人們會把「螞蟻」用來比喻草根、團結,比如「螞蟻精神」、「螞蟻社區」等等。
我只告訴你什麼是螞蟻演算法: 蟻群演算法(ant colony optimization, ACO),又稱螞蟻演算法,是一種用來在圖中尋找優化路徑的機率型技術。它由Marco Dorigo於1992年在他的博士論文中引入,其靈感來源於螞蟻在尋找食物過程中發現路徑的行為。
為什麼小小的螞蟻能夠找到食物?他們具有智能么?設想,如果我們要為螞蟻設計一個人工智慧的程序,那麼這個程序要多麼復雜呢?首先,你要讓螞蟻能夠避開障礙物,就必須根據適當的地形給它編進指令讓他們能夠巧妙的避開障礙物,其次,要讓螞蟻找到食物,就需要讓他們遍歷空間上的所有點;再次,如果要讓螞蟻找到最短的路徑,那麼需要計算所有可能的路徑並且比較它們的大小,而且更重要的是,你要小心翼翼的編程,因為程序的錯誤也許會讓你前功盡棄。這是多麼不可思議的程序!太復雜了,恐怕沒人能夠完成這樣繁瑣冗餘的程序。
然而,事實並沒有你想得那麼復雜,上面這個程序每個螞蟻的核心程序編碼不過100多行!為什麼這么簡單的程序會讓螞蟻干這樣復雜的事情?答案是:簡單規則的涌現。事實上,每隻螞蟻並不是像我們想像的需要知道整個世界的信息,他們其實只關心很小范圍內的眼前信息,而且根據這些局部信息利用幾條簡單的規則進行決策,這樣,在蟻群這個集體里,復雜性的行為就會凸現出來。這就是人工生命、復雜性科學解釋的規律!那麼,這些簡單規則是什麼呢?下面詳細說明:
1、范圍:
螞蟻觀察到的范圍是一個方格世界,螞蟻有一個參數為速度半徑(一般是3),那麼它能觀察到的范圍就是3*3個方格世界,並且能移動的距離也在這個范圍之內。
2、環境:
螞蟻所在的環境是一個虛擬的世界,其中有障礙物,有別的螞蟻,還有信息素,信息素有兩種,一種是找到食物的螞蟻灑下的食物信息素,一種是找到窩的螞蟻灑下的窩的信息素。每個螞蟻都僅僅能感知它范圍內的環境信息。環境以一定的速率讓信息素消失。
3、覓食規則:
在每隻螞蟻能感知的范圍內尋找是否有食物,如果有就直接過去。否則看是否有信息素,並且比較在能感知的范圍內哪一點的信息素最多,這樣,它就朝信息素多的地方走,並且每隻螞蟻多會以小概率犯錯誤,從而並不是往信息素最多的點移動。螞蟻找窩的規則和上面一樣,只不過它對窩的信息素做出反應,而對食物信息素沒反應。
4、移動規則:
每隻螞蟻都朝向信息素最多的方向移,並且,當周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,並且,在運動的方向有一個隨機的小的擾動。為了防止螞蟻原地轉圈,它會記住最近剛走過了哪些點,如果發現要走的下一點已經在最近走過了,它就會盡量避開。
5、避障規則:
如果螞蟻要移動的方向有障礙物擋住,它會隨機的選擇另一個方向,並且有信息素指引的話,它會按照覓食的規則行為。
7、播撒信息素規則:
每隻螞蟻在剛找到食物或者窩的時候撒發的信息素最多,並隨著它走遠的距離,播撒的信息素越來越少。
根據這幾條規則,螞蟻之間並沒有直接的關系,但是每隻螞蟻都和環境發生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關聯起來了。比如,當一隻螞蟻找到了食物,它並沒有直接告訴其它螞蟻這兒有食物,而是向環境播撒信息素,當其它的螞蟻經過它附近的時候,就會感覺到信息素的存在,進而根據信息素的指引找到了食物。
說了這么多,螞蟻究竟是怎麼找到食物的呢?
在沒有螞蟻找到食物的時候,環境沒有有用的信息素,那麼螞蟻為什麼會相對有效的找到食物呢?這要歸功於螞蟻的移動規則,尤其是在沒有信息素時候的移動規則。首先,它要能盡量保持某種慣性,這樣使得螞蟻盡量向前方移動(開始,這個前方是隨機固定的一個方向),而不是原地無謂的打轉或者震動;其次,螞蟻要有一定的隨機性,雖然有了固定的方向,但它也不能像粒子一樣直線運動下去,而是有一個隨機的干擾。這樣就使得螞蟻運動起來具有了一定的目的性,盡量保持原來的方向,但又有新的試探,尤其當碰到障礙物的時候它會立即改變方向,這可以看成一種選擇的過程,也就是環境的障礙物讓螞蟻的某個方向正確,而其他方向則不對。這就解釋了為什麼單個螞蟻在復雜的諸如迷宮的地圖中仍然能找到隱蔽得很好的食物。
當然,在有一隻螞蟻找到了食物的時候,其他螞蟻會沿著信息素很快找到食物的。
螞蟻如何找到最短路徑的?這一是要歸功於信息素,另外要歸功於環境,具體說是計算機時鍾。信息素多的地方顯然經過這里的螞蟻會多,因而會有更多的螞蟻聚集過來。假設有兩條路從窩通向食物,開始的時候,走這兩條路的螞蟻數量同樣多(或者較長的路上螞蟻多,這也無關緊要)。當螞蟻沿著一條路到達終點以後會馬上返回來,這樣,短的路螞蟻來回一次的時間就短,這也意味著重復的頻率就快,因而在單位時間里走過的螞蟻數目就多,灑下的信息素自然也會多,自然會有更多的螞蟻被吸引過來,從而灑下更多的信息素……;而長的路正相反,因此,越來越多地螞蟻聚集到較短的路徑上來,最短的路徑就近似找到了。也許有人會問局部最短路徑和全局最短路的問題,實際上螞蟻逐漸接近全局最短路的,為什麼呢?這源於螞蟻會犯錯誤,也就是它會按照一定的概率不往信息素高的地方走而另闢蹊徑,這可以理解為一種創新,這種創新如果能縮短路途,那麼根據剛才敘述的原理,更多的螞蟻會被吸引過來。
引申:
跟著螞蟻的蹤跡,你找到了什麼?通過上面的原理敘述和實際操作,我們不難發現螞蟻之所以具有智能行為,完全歸功於它的簡單行為規則,而這些規則綜合起來具有下面兩個方面的特點:
1、多樣性
2、正反饋
多樣性保證了螞蟻在覓食的時候不置走進死胡同而無限循環,正反饋機制則保證了相對優良的信息能夠被保存下來。我們可以把多樣性看成是一種創造能力,而正反饋是一種學習強化能力。正反饋的力量也可以比喻成權威的意見,而多樣性是打破權威體現的創造性,正是這兩點小心翼翼的巧妙結合才使得智能行為涌現出來了。
引申來講,大自然的進化,社會的進步、人類的創新實際上都離不開這兩樣東西,多樣性保證了系統的創新能力,正反饋保證了優良特性能夠得到強化,兩者要恰到好處的結合。如果多樣性過剩,也就是系統過於活躍,這相當於螞蟻會過多的隨機運動,它就會陷入混沌狀態;而相反,多樣性不夠,正反饋機制過強,那麼系統就好比一潭死水。這在蟻群中來講就表現為,螞蟻的行為過於僵硬,當環境變化了,螞蟻群仍然不能適當的調整。
既然復雜性、智能行為是根據底層規則涌現的,既然底層規則具有多樣性和正反饋特點,那麼也許你會問這些規則是哪裡來的?多樣性和正反饋又是哪裡來的?我本人的意見:規則來源於大自然的進化。而大自然的進化根據剛才講的也體現為多樣性和正反饋的巧妙結合。而這樣的巧妙結合又是為什麼呢?為什麼在你眼前呈現的世界是如此栩栩如生呢?答案在於環境造就了這一切,之所以你看到栩栩如生的世界,是因為那些不能夠適應環境的多樣性與正反饋的結合都已經死掉了,被環境淘汰了!
參數說明:
最大信息素:螞蟻在一開始擁有的信息素總量,越大表示程序在較長一段時間能夠存在信息素。信息素消減的速度:隨著時間的流逝,已經存在於世界上的信息素會消減,這個數值越大,那麼消減的越快。
錯誤概率表示這個螞蟻不往信息素最大的區域走的概率,越大則表示這個螞蟻越有創新性。
速度半徑表示螞蟻一次能走的最大長度,也表示這個螞蟻的感知范圍。
記憶能力表示螞蟻能記住多少個剛剛走過點的坐標,這個值避免了螞蟻在本地打轉,停滯不前。而這個值越大那麼整個系統運行速度就慢,越小則螞蟻越容易原地轉圈。
-----例子-----
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>蟻群演算法js版</title>
<style>
.ant{
position:absolute;
background-color:#000000;
overflow:hidden;
width:2px;
height:2px;
}
.food{
position:absolute;
background-color:#0000ff;
overflow:hidden;
width:2px;
height:2px;
}
.nest{
position:absolute;
background-color:#ff0000;
overflow:hidden;
width:2px;
height:2px;
}
</style>
<script type="text/javaScript">
//============================
//系統參數初始化
//----------------------------
//生命體數量與軌跡長度
Unit=10;Path=30;
//生命體速度上下限
v0=2;vM=10;
//生命體加速度變化范圍
Kr=0.1;Kv=0.1*(vM-v0);
//生命體運動范圍
x0=0;xM=document.documentElement.clientWidth;
y0=0;yM=document.documentElement.clientHeight;
//生命體出生地(巢穴)
xi0=x0+(xM-x0)*Math.random();
yi0=y0+(yM-y0)*Math.random();
str0='<div class="ant" style="left:'+xi0+';top:'+yi0+';"></div>';
//食物所在地
xf=x0+(xM-x0)*Math.random();
yf=y0+(yM-y0)*Math.random();
//氣味感知范圍
R_2=5*5;
//============================
var r=new Array();
var v=new Array();
var dr=new Array();
var dv=new Array();
var x=new Array();
var y=new Array();
var life=new Array();
//單擊暫停
var xi0,yi0,xf,yf;
var Time0,str0;
window.status='pause';
function document.onclick(){
if(window.status=='pause'){
window.status=0;
nest.style.left=xi0;
nest.style.top=yi0;
food.style.left=xf;
food.style.top=yf;
//測試初始化時間用
Time0=(new Date()).getTime();
init(0);
}else{
window.status='pause';
}
}
//窗口大小調整後刷新頁面以調整系統參數
function window.onresize(){
// window.location.href=document.location;
}
//初始化函數
function init(i){
if(window.status!='pause'&&i<Unit){
if(!life){
document.body.appendChild(life=document.createElement(str0));
x=xi0;
y=yi0;
r=Math.random();
v=1/Math.random();
dr=Kr*Math.random();
dv=Kv*Math.random();
}
Move(i);
window.status=i+1;
setTimeout('init('+(i+1)+')',i);
// }else{
// alert('生成耗時:'+((new Date()).getTime()-Time0)+'ms');
}
}
//運動函數
Total=Unit*Path;
P2=2*Math.PI;
function Move(i){
if(window.status!='pause'){
k=i%Unit;
X=x[k];
Y=y[k];
R=r[k];
V=v[k];
if(!life){
str='<div class="ant" style="left:'+X+';top:'+Y+';"></div>';
document.body.appendChild(life=document.createElement(str));
}
obj=life;
R+=dr[k]*(2*Math.random()-1);
V+=dv[k]*(2*Math.random()-1);
X+=Math.sin(P2*R)*V;
Y+=Math.cos(P2*R)*V;
//遇到食物原路返回並減小角度變化
distance=(X-xf)*(X-xf)+(Y-yf)*(Y-yf);
if(distance<R_2){
R+=0.5;
r/=2;
v*=2;
}
distance=(X-xi0)*(X-xi0)+(Y-yi0)*(Y-yi0);
if(distance<R_2){
R+=0.5;
r/=2;
v*=2;
}
/*----------------------------------
/*================================*/
//碰撞邊界反彈
R=(X<x0||X>xM)?-R:R;
R=(Y<y0||Y>yM)?0.5-R:R;
X=x[k]+Math.sin(P2*R)*V;
Y=y[k]+Math.cos(P2*R)*V;
/*================================*/
//溢出邊界重生(類似流星效果)
if(X<x0||X>xM||Y<y0||Y>yM){
X=xi0;
Y=yi0;
}
/*----------------------------------
/*================================*/
//邊界限制
x[k]=X=(X<x0)?x0:(X>xM)?xM-2:X;
y[k]=Y=(Y<y0)?y0:(Y>yM)?yM-2:Y;
r[k]=R>1?R-1:R<0?R+1:R;
v[k]=V=(V<v0)?v0:((V<vM)?V:vM);
/*================================*/
obj.style.left=x[k]=X;
obj.style.top=y[k]=Y;
setTimeout('Move('+(i+Unit)%Total+')',Unit);
}
}
//根據瀏覽器自動載入動畫
switch(navigator.appName.toLowerCase()){
case "netscape":
window.addEventListener("load",document.onclick,false);
break;
case "microsoft internet explorer":
default:
window.attachEvent("onload",document.onclick);
break;
}
</script>
</head>
<body scroll="no">
<div id="food" class="food"></div>
<div id="nest" class="nest"></div>
</body>
</html>
『肆』 用螞蟻源碼建站有法律風險嗎
如果是開放的源碼,注意點就可以了
『伍』 如何安裝仿58同城螞蟻分類信息系統網站程序源碼
下載到可以使用的網站源碼,上傳到伺服器空間,安裝就是了呀
『陸』 打開網路螞蟻安裝程序文件的程序應該選哪個程序
zip的是壓縮程序 你去華軍下個winrar解壓縮軟體 先把下載的那個解壓縮
然後運行裡面的安裝程序按提示安裝就行了
給你個軟體下載地址
華軍的 放心下載
『柒』 求Pareto蟻群演算法的源代碼 Java的
說明:信息素權重,路徑權重和信息素蒸發率對最後的結果影響很大,需要微調。
目前發現2 / 5 / 0.5 能達到稍微讓人滿意的效果。本程序離完美的ACO還差很遠,僅供參考。
本蟻群演算法為AS演算法。
用法:
1.new一個對象
ACOforTSP tsp = new ACPforTSP(tsp數據文件名,迭代次數,螞蟻數量,信息素權重,路徑權重,信息素蒸發率);
2.用go()方法運行
tsp.go();
ACOforTSP.java
___________________________________________________________________
import java.io.File;
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
import static java.lang.Math.random;
import java.util.HashMap;
import java.io.FileReader;
import java.io.BufferedReader;
/**
*
* @author dvdface
*/
public class ACOforTSP {
//城市的距離表
private double[][] distance;
//距離的倒數表
private double[][] heuristic;
//啟發信息表
private double[][] pheromone;
//權重
private int alpha, beta;
//迭代的次數
private int iterationTimes;
//螞蟻的數量
private int numbersOfAnt;
//蒸發率
private double rate;
ACOforTSP (String file, int iterationTimes, int numbersOfAnt, int alpha, int beta, double rate) {
//載入文件
this.initializeData(file);
//初始化參數
this.iterationTimes = iterationTimes;
//設置螞蟻數量
this.numbersOfAnt = numbersOfAnt;
//設置權重
this.alpha = alpha;
this.beta = beta;
//設置蒸發率
this.rate = rate;
}
private void initializeData(String filename) {
//定義內部類
class City {
int no;
double x;
double y;
City(int no, double x, double y) {
this.no = no;
this.x = x;
this.y = y;
}
private double getDistance(City city) {
return sqrt(pow((x - city.x), 2) + pow((y - city.y), 2));
}
}
try {
//定義HashMap保存讀取的坐標信息
HashMap<Integer, City> map = new HashMap<Integer, City>();
//讀取文件
BufferedReader reader = new BufferedReader(new FileReader(new File(filename)));
for (String str = reader.readLine(); str != null; str = reader.readLine()) {
//將讀到的信息保存入HashMap
if (str.matches("([0-9]+)(\\s*)([0-9]+)(.?)([0-9]*)(\\s*)([0-9]+)(.?)([0-9]*)")) {
String[] data = str.split("(\\s+)");
City city = new City(Integer.parseInt(data[0]),
Double.parseDouble(data[1]),
Double.parseDouble(data[2]));
map.put(city.no, city);
}
}
//分配距離矩陣存儲空間
distance = new double[map.size() + 1][map.size() + 1];
//分配距離倒數矩陣存儲空間
heuristic = new double[map.size() + 1][map.size() + 1];
//分配信息素矩陣存儲空間
pheromone = new double[map.size() + 1][map.size() + 1];
for (int i = 1; i < map.size() + 1; i++) {
for (int j = 1; j < map.size() + 1; j++) {
//計算城市間的距離,並存入距離矩陣
distance[i][j] = map.get(i).getDistance(map.get(j));
//計算距離倒數,並存入距離倒數矩陣
heuristic[i][j] = 1 / distance[i][j];
//初始化信息素矩陣
pheromone[i][j] = 1;
}
}
} catch (Exception exception) {
System.out.println("初始化數據失敗!");
}
}
class Ant {
//已訪問城市列表
private boolean[] visited;
//訪問順序表
private int[] tour;
//已訪問城市的個數
private int n;
//總的距離
private double total;
Ant() {
//給訪問順序表分配空間
tour = new int[distance.length+1];
//已存入城市數量為n,剛開始為0
n = 0;
//將起始城市1,放入訪問結點順序表第一項
tour[++n] = 1;
//給已訪問城市結點分配空間
visited = new boolean[distance.length];
//第一個城市為出發城市,設置為已訪問
visited[tour[n]] = true;
}
private int chooseCity() {
//用來random的隨機數
double m = 0;
//獲得當前所在的城市號放入j,如果和j相鄰的城市沒有被訪問,那麼加入m
for (int i = 1, j = tour[n]; i < pheromone.length; i++) {
if (!visited[i]) {
m += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);
}
}
//保存隨機到的數
double p = m * random();
//尋找被隨機到的城市
double k = 0;
//保存找到的城市
int q = 0;
for (int i = 1, j = tour[n]; k < p; i++) {
if (!visited[i]) {
k += pow(pheromone[j][i], alpha) * pow(heuristic[j][i], beta);
q = i;
}
}
return q;
}
private void constructSolution () {
while (n != (distance.length-1) ) {
//選取下一個城市
int p = chooseCity();
//計算總的距離
total += distance[tour[n]][p];
//將選取到的城市放入已訪問列表
tour[++n] = p;
//將選取到的城市標記為已訪問
visited[p] = true;
}
//回到起點
total += distance[tour[1]][tour[n]];
//將起點加入訪問順序表的最後
tour[++n] = tour[1];
}
private void releasePheromone() {
//釋放信息素的大小
double t = 1/total;
//釋放信息素
for (int i=1;i<tour.length-1;i++) {
pheromone[tour[i]][tour[i+1]] += t;
pheromone[tour[i+1]][tour[i]] += t;
}
}
}
public void go() {
//保存最好的路徑和路徑長度
double bestTotal = Double.MAX_VALUE;
int[] bestTour = new int[distance.length+1];
//新建螞蟻數組,用來引用所創建的螞蟻
Ant[] ant = new Ant[numbersOfAnt];
//進行iterationTimes次迭代
while (iterationTimes != 0) {
//初始化新的一批螞蟻(這里用構造新的螞蟻代替重置螞蟻狀態)
for (int i=0; i<numbersOfAnt; i++) {
ant[i] = new Ant();
}
//進行一次迭代(即讓所有的螞蟻構建一條路徑)
for (int i=0; i<numbersOfAnt; i++) {
ant[i].constructSolution();
//如果螞蟻構建的路徑長度比上次最好的還好,那麼保存這個長度和它所走的路徑
if (ant[i].total<bestTotal) {
bestTotal = ant[i].total;
System.array(ant[i].tour, 1, bestTour, 1, bestTour.length-1);
}
}
//蒸發信息素
evaporatePheromone();
//釋放信息素
for (int i=0; i<numbersOfAnt; i++) {
ant[i].releasePheromone();
}
//報告本次迭代的信息
System.out.format("本次為倒數第%d次迭代,當前最優路徑長度為%10.2f\n",iterationTimes,bestTotal);
//迭代總數減去1,進行下次迭代
iterationTimes--;
}
//輸出最好的路徑長度
System.out.format("得到的最優的路徑長度為:%10.2f\n",bestTotal);
//輸出最好的路徑
System.out.println("最優路徑如下:");
for (int i=1; i<bestTour.length; i++) {
System.out.print("→"+bestTour[i]);
}
}
private void evaporatePheromone() {
for (int i = 1; i < pheromone.length; i++)
for (int j = 1; j < pheromone.length; j++) {
pheromone[i][j] *= 1-rate;
}
}
}
『捌』 淘寶賣的螞蟻分類信息網站源碼能用么
可以使用.但是有好多問題的!
『玖』 請問一下螞蟻金服集團股票上市代碼
截止2020年8月螞蟻金服集團沒有上市,沒有股票上市代碼。2020年7月20日,支付寶母公司螞蟻集團(螞蟻金融服務集團)宣布,啟動在上海證券交易所科創板和香港聯合交易所有限公司主板尋求同步發行上市的計劃。
有媒體報道稱,螞蟻集團據悉尋求IPO估值至少2000億美元。2019年12月16日,中國工商銀行與阿里巴巴、螞蟻金服在京簽署全面深化戰略合作,加快構建數字金融的合作發展新生態。
(9)螞蟻源代碼擴展閱讀:
螞蟻金融服務集團起步於2004年成立的支付寶。2013年3月支付寶的母公司宣布將以其為主體籌建小微金融服務集團,小微金融成為螞蟻金服的前身。2014年10月螞蟻金服正式成立。螞蟻金服以「讓信用等於財富」為願景,致力於打造開放的生態系統。
通過「互聯網推進器計劃」助力金融機構和合作夥伴加速邁向「互聯網+」,為小微企業和個人消費者提供普惠金融服務。依靠移動互聯、大數據、雲計算為基礎,為中國踐行普惠金融的重要實踐。
『拾』 螞蟻金服基金代碼是多少
阿里巴巴(09988.HK)旗下螞蟻集團早前宣布啟動A+H上市計劃,螞蟻集團計劃兩地上市集資300億美元(約2340億港元)。
螞蟻金服計劃最早於今年在港交所上市,目標估值為2000億美元。路透社同時還披露了螞蟻金服去年的業績,2019年螞蟻金服實現營業收入1200億元,凈利潤為170億元。
若按照100億美元-200億美元的募資金額來計算,螞蟻集團的這個總額不僅將超過科創板剛剛上市的中芯國際的募資額,而農業銀行募集資金685億,為A股的募資王。
(10)螞蟻源代碼擴展閱讀:
螞蟻金服基金注意事項:
對於支付寶基金的風險體現在兩個方面:一個是作為代銷平台支付寶本身的風險,另一個是其所銷售的基金產品的風險。
我國對基金代銷公司和平台有嚴格要求,需要擁有第三方基金代銷牌照才能夠代銷市場上的各種基金。在沒有牌照的情況下代銷基金,屬於違法行為。
在支付寶進行基金購買,其風險主要來源於基金產品的本身。對於初級理財用戶,建議參與風險等級低的產品購買。而對於有一定投資經驗的中高級用戶,可以選擇中高風險的產品進行購買。