遺傳算法--GA

????????遺傳算法(GA)屬于人工智能啟發(fā)式算法豹爹,啟發(fā)式算法的目標(biāo)就是尋找原始問題的最優(yōu)解,該算法的定義為

????????人類通過直觀常識(shí)和生活經(jīng)驗(yàn)摊求,設(shè)計(jì)出一種以搜索最優(yōu)解為目的毡泻,通過仿真大自然規(guī)律的算法,該算法在可以在接受的花銷(計(jì)算時(shí)間和存儲(chǔ)空間)范圍內(nèi)找到問題實(shí)例的一個(gè)可行解媳瞪,且該可行解和真實(shí)最優(yōu)解的誤差一般不可以被估計(jì)

????????當(dāng)下主要有的啟發(fā)式算法包括遺傳算法骗炉、退火法,蟻群算法蛇受、人工神經(jīng)網(wǎng)絡(luò)等句葵,這篇文章主要介紹遺傳算法

????????遺傳算法的基本原理是模擬達(dá)爾文進(jìn)化論"物競(jìng)天擇,適者生存"的自然法則龙巨,其核心思想為

(1)將原始問題的參數(shù),抽象為基因編碼

(2)將原始問題的可行解熊响,抽象為基因排列的染色體組合

(3)將原始問題的解集規(guī)模旨别,抽象為一定數(shù)量染色體組成的種群

(4)尋找可行解的過程,抽象為種群的進(jìn)化過程(染色體選擇汗茄、交叉秸弛、變異等)

(5)比較可行解的優(yōu)劣,抽象為量化比較不同種群對(duì)當(dāng)前環(huán)境的適應(yīng)程度

(6)逼近最優(yōu)解的過程洪碳,抽象為淘汰適應(yīng)度差的種群递览,保留適應(yīng)度高的種群進(jìn)行下一次進(jìn)化

(7)問題的最優(yōu)解,抽象為經(jīng)過多次進(jìn)化后瞳腌,最終生存下來(lái)的精英種群

????????理論上绞铃,通過有限次種群進(jìn)化,生存下來(lái)的種群都是精英染色體嫂侍,是最適合當(dāng)前環(huán)境條件的種群儿捧,也就可以無(wú)限逼近原始問題的最優(yōu)解

相關(guān)生物學(xué)術(shù)語(yǔ):

????為了大家更好了解遺傳算法荚坞,在此之前先簡(jiǎn)單介紹一下相關(guān)生物學(xué)術(shù)語(yǔ),大家了解一下即可菲盾。

基因型(genotype):性狀染色體的內(nèi)部表現(xiàn)颓影;

表現(xiàn)型(phenotype):染色體決定的性狀的外部表現(xiàn),或者說懒鉴,根據(jù)基因型形成的個(gè)體的外部表現(xiàn)诡挂;

進(jìn)化(evolution):種群逐漸適應(yīng)生存環(huán)境,品質(zhì)不斷得到改良临谱。生物的進(jìn)化是以種群的形式進(jìn)行的璃俗。

適應(yīng)度(fitness):度量某個(gè)物種對(duì)于生存環(huán)境的適應(yīng)程度。

選擇(selection):以一定的概率從種群中選擇若干個(gè)個(gè)體吴裤。一般旧找,選擇過程是一種基于適應(yīng)度的優(yōu)勝劣汰的過程。

復(fù)制(reproduction):細(xì)胞分裂時(shí)麦牺,遺傳物質(zhì)DNA通過復(fù)制而轉(zhuǎn)移到新產(chǎn)生的細(xì)胞中钮蛛,新細(xì)胞就繼承了舊細(xì)胞的基因。

交叉(crossover):兩個(gè)染色體的某一相同位置處DNA被切斷剖膳,前后兩串分別交叉組合形成兩個(gè)新的染色體魏颓。也稱基因重組或雜交;

變異(mutation):復(fù)制時(shí)可能(很小的概率)產(chǎn)生某些復(fù)制差錯(cuò)吱晒,變異產(chǎn)生新的染色體甸饱,表現(xiàn)出新的性狀。

編碼(coding):DNA中遺傳信息在一個(gè)長(zhǎng)鏈上按一定的模式排列仑濒。遺傳編碼可看作從表現(xiàn)型到基因型的映射叹话。

解碼(decoding):基因型到表現(xiàn)型的映射。

個(gè)體(individual):指染色體帶有特征的實(shí)體墩瞳;

種群(population):個(gè)體的集合驼壶,該集合內(nèi)個(gè)體數(shù)稱為種群

大體實(shí)現(xiàn)過程

遺傳算法中每一條染色體,對(duì)應(yīng)著遺傳算法的一個(gè)解決方案喉酌,一般我們用適應(yīng)性函數(shù)(fitness function)來(lái)衡量這個(gè)解決方案的優(yōu)劣热凹。所以從一個(gè)基因組到其解的適應(yīng)度形成一個(gè)映射。遺傳算法的實(shí)現(xiàn)過程實(shí)際上就像自然界的進(jìn)化過程那樣泪电。

基本遺傳算法概述

????1.[開始]生成n個(gè)染色體的隨機(jī)群體(適合該問題的解決方案)

????2.[適應(yīng)度]評(píng)估群體中每個(gè)染色體x的適應(yīng)度f(wàn)(x)

????3.[新種群]通過重復(fù)以下來(lái)創(chuàng)建新種群直到新種群完成的步驟

????????3.1 [選擇]根據(jù)種群的適合度選擇兩個(gè)親本染色體(更好的適應(yīng)性般妙,更大的選擇機(jī)會(huì))

????????3.2 [交叉]以交叉概率跨越父母形成新的后代(兒童) )。如果沒有進(jìn)行交叉相速,后代就是父母的確切副本碟渺。

????????3.3 [突變]突變概率突變每個(gè)基因座(染色體中的位置)的新后代。

????4.[接受]在新種群中放置新后代[替換]使用新生成的種群進(jìn)一步運(yùn)行算法

????5.[測(cè)試]如果滿足結(jié)束條件突诬,則停止并返回當(dāng)前種群中的最佳解

????6止状。[循環(huán)]轉(zhuǎn)到步驟2

影響GA的因素

????從遺傳算法概述可以看出烹棉,交叉和變異是遺傳算法中最重要的部分。性能主要受這兩個(gè)因素的影響怯疤。在我們解釋有關(guān)交叉和變異的更多信息之前浆洗,我們將給出一些有關(guān)染色體的信息。

染色體編碼

染色體應(yīng)該以某種方式包含它所代表的解決方案的信息集峦。最常用的編碼方式是二進(jìn)制字符串伏社。然后染色體看起來(lái)像這樣:

每個(gè)染色體由二進(jìn)制字符串表示。字符串中的每個(gè)位都可以表示解決方案的一些特征塔淤。另一種可能性是整個(gè)字符串可以表示一個(gè)數(shù)字 - 這已在基本的GA小程序中使用摘昌。當(dāng)然,還有許多其他的編碼方式高蜂。編碼主要取決于解決的問題聪黎。例如,可以直接編碼整數(shù)或?qū)崝?shù)备恤,有時(shí)對(duì)某些排列等進(jìn)行編碼很有用稿饰。

染色體交叉

在我們確定了將使用的編碼之后,我們可以繼續(xù)進(jìn)行交叉操作露泊。 Crossover對(duì)來(lái)自親本染色體的選定基因進(jìn)行操作并產(chǎn)生新的后代喉镰。最簡(jiǎn)單的方法是隨機(jī)選擇一些交叉點(diǎn),并在此點(diǎn)之前從第一個(gè)父項(xiàng)復(fù)制所有內(nèi)容惭笑,然后在交叉點(diǎn)之后復(fù)制另一個(gè)父交叉點(diǎn)之后的所有內(nèi)容侣姆。交叉可以說明如下:( |是交叉點(diǎn)):

還有其他方法可以進(jìn)行交叉,例如我們可以選擇更多的交叉點(diǎn)沉噩。交叉可能非常復(fù)雜捺宗,主要取決于染色體的編碼。針對(duì)特定問題進(jìn)行的特定交叉可以改善遺傳算法的性能川蒙。

4.染色體突變

在執(zhí)行交叉之后蚜厉,發(fā)生突變。突變旨在防止群體中的所有解決方案落入解決問題的局部最優(yōu)中派歌。突變操作隨機(jī)改變由交叉引起的后代弯囊。在二進(jìn)制編碼的情況下痰哨,我們可以將一些隨機(jī)選擇的位從1切換到0或從0切換到1.突變可以如下所示:

突變(以及交叉)技術(shù)主要取決于染色體的編碼胶果。例如,當(dāng)我們編碼排列時(shí)斤斧,可以將突變作為兩個(gè)基因的交換來(lái)進(jìn)行早抠。

GA的參數(shù)

????1.交叉和突變概率

????GA有兩個(gè)基本參數(shù) - 交叉概率和變異概率。

????交叉概率:交叉的頻率撬讽。如果沒有交叉蕊连,后代就是父母的精確副本悬垃。如果存在交叉,則后代由父母染色體的部分組成甘苍。如果交叉概率為100%尝蠕,那么所有后代都是由交叉產(chǎn)生的。如果它是0%载庭,那么全新一代都是從舊種群的染色體的精確拷貝制成的(但這并不意味著新一代是相同的?幢恕)。交叉是希望新染色體將包含舊染色體的良好部分囚聚,因此新染色體將更好靖榕。但是,將舊人口的一部分留給下一代是好的顽铸。

????突變概率:染色體部分突變的頻率茁计。如果沒有突變,則在交叉(或直接復(fù)制)后立即生成后代而不進(jìn)行任何更改谓松。如果進(jìn)行突變星压,則改變?nèi)旧w的一個(gè)或多個(gè)部分。如果突變概率為100%毒返,則整個(gè)染色體發(fā)生變化租幕,如果是0%,則沒有變化拧簸。突變通常會(huì)阻止GA陷入局部極端劲绪。突變不應(yīng)該經(jīng)常發(fā)生,因?yàn)镚A實(shí)際上會(huì)改變?yōu)殡S機(jī)搜索盆赤。

????2.其他參數(shù)

????種群規(guī)模:種群中有多少染色體(一代)贾富。如果染色體太少,GA幾乎沒有可能進(jìn)行交叉牺六,只探索了一小部分搜索空間颤枪。另一方面,如果染色體太多淑际,GA會(huì)減慢畏纲。研究表明,經(jīng)過一定的限制(主要取決于編碼和問題)春缕,使用非常大的種群是沒有用的盗胀,因?yàn)樗荒鼙戎械纫?guī)模的種群更快地解決問題。

????3????選擇

正如您從GA概述中已經(jīng)知道的那樣锄贼,從群體中選擇染色體作為交叉的父母票灰。問題是如何選擇這些染色體。根據(jù)達(dá)爾文的進(jìn)化論,最好的進(jìn)化能夠創(chuàng)造出新的后代屑迂。選擇最佳染色體的方法有很多種浸策。例如輪盤賭選擇,Boltzman選擇惹盼,錦標(biāo)賽選擇庸汗,等級(jí)選擇,穩(wěn)態(tài)選擇和其他一些選擇手报。

1.輪盤賭選擇

父母根據(jù)他們的健康狀況選擇夫晌。染色體越好,它們被選擇的機(jī)會(huì)就越多昧诱。想象一下輪盤賭輪晓淀,人口中的所有染色體都放在那里。輪盤中截面的大小與每條染色體的適應(yīng)度函數(shù)的值成比例 - 值越大盏档,截面越大凶掰。有關(guān)示例,請(qǐng)參見下圖蜈亩。

輪盤賭中放入一塊大理石懦窘,并選擇停止的染色體。顯然稚配,具有較大適應(yīng)值的染色體將被選擇更多次畅涂。

該過程可以通過以下算法來(lái)描述。

[Sum]計(jì)算總體中所有染色體擬合度的總和 - 總和S.

[Select]從區(qū)間(0道川,S)-r生成隨機(jī)數(shù)午衰。

[循環(huán)]遍歷總體并從0 - 總和中求和。當(dāng)總和s大于r時(shí)冒萄,停止并返回您所在的染色體臊岸。當(dāng)然,對(duì)于每個(gè)群體尊流,步驟1僅執(zhí)行一次帅戒。

2.排名選擇

當(dāng)健身值之間存在很大差異時(shí),先前的選擇類型會(huì)出現(xiàn)問題崖技。例如逻住,如果最佳染色體適應(yīng)度是所有擬合度總和的90%,那么其他染色體將很少被選擇的機(jī)會(huì)迎献。等級(jí)選擇首先對(duì)群體進(jìn)行排序瞎访,然后每個(gè)染色體接收由該等級(jí)確定的適合度值。最差的將是健身1忿晕,第二個(gè)最差的2等等装诡,最好的將具有適應(yīng)度N(人口中的染色體數(shù)量)。您可以在下面的圖片中看到践盼,在更改適應(yīng)性與排名確定的數(shù)字后情況如何變化鸦采。

排名前的情況(適合度圖)

排名后的情況(訂單號(hào)圖)

現(xiàn)在所有染色體都有機(jī)會(huì)被選中。然而咕幻,這種方法會(huì)導(dǎo)致收斂速度變慢渔伯,因?yàn)樽詈玫娜旧w與其他染色體的差別不大。

3.穩(wěn)態(tài)選擇

這不是選擇父母的特定方法肄程。這種選擇新種群的主要思想是染色體的很大一部分可以存活到下一代锣吼。穩(wěn)態(tài)選擇GA以下列方式工作。在每一代中蓝厌,選擇一些好的(具有更高適應(yīng)性)染色體來(lái)創(chuàng)建新的后代玄叠。然后去除一些不好的(具有較低適合度)染色體并將新的后代放置在它們的位置。其余人口幸存下來(lái)拓提。

4.精英

精英主義的想法已經(jīng)被引入读恃。當(dāng)通過交叉和變異創(chuàng)建新的種群時(shí),我們有很大的機(jī)會(huì)代态,我們將失去最好的染色體寺惫。精英主義是首先將最佳染色體(或少數(shù)最佳染色體)復(fù)制到新種群的方法的名稱。其余人口以上述方式構(gòu)建蹦疑。精英主義可以迅速提高GA的性能西雀,因?yàn)樗梢苑乐箒G失最佳找到的解決方案。

交叉(Crossover)和突變 (Mutation)

交叉和變異是GA的兩個(gè)基本運(yùn)算符歉摧。 GA的表現(xiàn)非常依賴于它們艇肴。運(yùn)算符的類型和實(shí)現(xiàn)取決于編碼以及問題。有多種方法可以執(zhí)行交叉和變異叁温。在本章中豆挽,我們將簡(jiǎn)要介紹一些如何執(zhí)行多個(gè)編碼的示例和建議。

1.二進(jìn)制編碼

交叉

單點(diǎn)交叉 - 選擇一個(gè)交叉點(diǎn)券盅,從第一個(gè)父項(xiàng)復(fù)制從染色體開始到交叉點(diǎn)的二進(jìn)制字符串帮哈,其余從另一個(gè)父項(xiàng)復(fù)制

選擇兩點(diǎn)交叉 - 兩個(gè)交叉點(diǎn),從第一個(gè)父節(jié)點(diǎn)復(fù)制從染色體開始到第一個(gè)交叉點(diǎn)的二進(jìn)制字符串锰镀,從第一個(gè)父節(jié)點(diǎn)復(fù)制從第一個(gè)交叉點(diǎn)到第二個(gè)交叉點(diǎn)的部分娘侍,其余的是再次從第一個(gè)父級(jí)復(fù)制

均勻交叉 - 從第一個(gè)父項(xiàng)或第二個(gè)父項(xiàng)中隨機(jī)復(fù)制位

image.png

算術(shù)交叉 - 執(zhí)行一些算術(shù)運(yùn)算以產(chǎn)生新的后代

image.png

突變

位反轉(zhuǎn) - 選擇的位被反轉(zhuǎn)

image.png

2.置換編碼

交叉

單點(diǎn)交叉 - 選擇一個(gè)交叉點(diǎn),將排列從第一個(gè)父項(xiàng)復(fù)制到交叉點(diǎn)泳炉,然后掃描另一個(gè)父項(xiàng)憾筏,如果該數(shù)字還沒有在后代中,則添加它注意:還有更多方法如何在交叉點(diǎn)之后產(chǎn)生休息

(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) = (1 2 3 4 5 6 8 9 7)

變異

順序更改 - 選擇并交換兩個(gè)數(shù)字

(1 2 3 4 5 6 8 9 7) => (1 8 3 4 5 6 2 9 7)

3.值編碼

交叉

可以使用來(lái)自二進(jìn)制編碼的所有交叉

變異

添加一個(gè)小數(shù)字(用于實(shí)數(shù)值編碼) - 將一個(gè)小數(shù)字添加到(或減去)所選值

(1.29 5.68 2.86 4.11 5.55)=>(1.29 5.68 2.73 4.22 5.55)

4.樹編碼

交叉

樹交叉 - 在父母雙方中選擇一個(gè)交叉點(diǎn)花鹅,父母在該點(diǎn)被分割氧腰,交換點(diǎn)下面的部分被交換以產(chǎn)生新的后代

變異

更改運(yùn)算符,數(shù)字 - 選定節(jié)點(diǎn)已更改


補(bǔ)充:

疑惑點(diǎn):

初始種群是啥:

利用二進(jìn)制(一般)表示最終解

例如:需要求解z=x^2+y^2的最大值,x={1古拴,5箩帚,3,8}黄痪,y={5紧帕,4,0桅打,6}

用六位二進(jìn)制數(shù)表示由x是嗜,y組成的解,例如:001100 表示x=1挺尾,y=4

001100 稱為一條基因序列鹅搪,表示的是該問題的一種解決方案

種群是包含多個(gè)基因序列(解決方案/個(gè)體)的集合

適應(yīng)度函數(shù)是啥,有什么作用:

適應(yīng)度函數(shù)可以理解成“游戲規(guī)則”遭铺,如果問題較為復(fù)雜涩嚣,需要自定義適應(yīng)度函數(shù),說明如何區(qū)分優(yōu)秀與不優(yōu)秀的個(gè)體; 如果問題比較簡(jiǎn)單掂僵,例如上述求最大值的問題航厚,則直接用此函數(shù)式作為適應(yīng)度函數(shù)即可。作用:評(píng)定個(gè)體的優(yōu)劣程度锰蓬,從而決定其遺傳機(jī)會(huì)的大小幔睬。

怎么選擇:

定義“適者生存不適者淘汰”的規(guī)則,例如:定義適應(yīng)度高的被選擇的概率更大

怎么交叉:

利用循環(huán)芹扭,遍歷種群中的每個(gè)個(gè)體麻顶,挑選另一個(gè)體進(jìn)行交叉。例如舱卡,通過遍歷為基因序列A挑選出B配對(duì)辅肾,則取A的前半部分,B的后半部分轮锥,組合成新的個(gè)體(基因序列)C

如何變異:

隨機(jī)挑選基因序列上的某一位置矫钓,進(jìn)行0-1互換


建議 GA的參數(shù)

如果您決定實(shí)施遺傳算法,本章應(yīng)該為您提供一些基本建議舍杜。這些建議非承履龋籠統(tǒng)。您可能希望嘗試使用自己的GA來(lái)解決特定問題既绩,因?yàn)闆]有一般理論可以幫助您針對(duì)任何問題調(diào)整GA參數(shù)概龄。

建議通常是對(duì)GA的經(jīng)驗(yàn)研究的結(jié)果,這些研究通常僅在二進(jìn)制編碼上進(jìn)行饲握。

交叉率

交叉率一般應(yīng)高私杜,約為80%-95%蚕键。 (但是有些結(jié)果表明,對(duì)于某些問題衰粹,交叉率約為60%是最好的锣光。)

突變率

另一方面,突變率應(yīng)該非常低寄猩。最佳利率似乎約為0.5%-1%。

人口規(guī)模

可能令人驚訝的是骑疆,非常大的人口規(guī)模通常不會(huì)改善GA的性能(從找到解決方案的速度的意義上說)田篇。良好的人口規(guī)模約為20-30,但有時(shí)大小為50-100是最好的箍铭。一些研究還表明泊柬,最佳種群規(guī)模取決于編碼字符串(染色體)的大小。這意味著如果你有32位染色體诈火,那么人口應(yīng)該高于16位染色體兽赁。

選擇

可以使用基本的輪盤賭選擇,但有時(shí)排名選擇可以更好冷守。查看有關(guān)選擇優(yōu)缺點(diǎn)的章節(jié)刀崖。還有一些更復(fù)雜的方法可以在GA運(yùn)行期間更改選擇參數(shù)∨囊。基本上亮钦,這些表現(xiàn)類似于模擬退火。如果您不使用其他方法來(lái)保存最佳找到的解決方案充活,則應(yīng)確保使用精英主義蜂莉。您也可以嘗試穩(wěn)態(tài)選擇。

編碼

編碼取決于問題以及問題實(shí)例的大小混卵。查看有關(guān)編碼的章節(jié)以獲取一些建議或查看其他資源映穗。

交叉和變異

運(yùn)算符取決于所選的編碼和問題。查看有關(guān)操作員的章節(jié)以獲取一些建議幕随。您還可以查看其他網(wǎng)站蚁滋。

搜索空間

????如果我們正在解決問題,我們通常會(huì)尋找一些最好的解決方案赘淮。所有可行解決方案的空間(所需解決方案所在的解決方案集)稱為搜索空間(也稱為狀態(tài)空間)枢赔。搜索空間中的每個(gè)點(diǎn)代表一種可能的解決方案。每個(gè)可能的解決方案可以通過其對(duì)問題的值(或適應(yīng)度)進(jìn)行“標(biāo)記”拥知。通過GA踏拜,我們?cè)诒姸嗫赡艿慕鉀Q方案中尋找最佳解決方案 - 以搜索空間中的一個(gè)點(diǎn)為代表。然后尋找解決方案等于在搜索空間中尋找一些極值(最小值或最大值)低剔。有時(shí)可以很好地定義搜索空間速梗,但通常我們只知道搜索空間中的幾個(gè)點(diǎn)肮塞。在使用遺傳算法的過程中,隨著進(jìn)化的進(jìn)行姻锁,尋找解決方案的過程會(huì)產(chǎn)生其他點(diǎn)(可能的解決方案)枕赵。

????問題是搜索可能非常復(fù)雜。人們可能不知道在哪里尋找解決方案或從哪里開始位隶。有許多方法可用于尋找合適的解決方案拷窜,但這些方法不一定能提供最佳解決方案。這些方法中的一些是爬山涧黄,禁忌搜索篮昧,模擬退火和遺傳算法。通過這些方法找到的解決方案通常被認(rèn)為是很好的解決方案笋妥,因?yàn)橥ǔ2豢赡茏C明最佳方案懊昨。

NP-hard Problems

NP問題是一類無(wú)法用“傳統(tǒng)”方式解決的問題。我們可以快速應(yīng)用許多任務(wù)(多項(xiàng)式)算法春宣。還存在一些無(wú)法通過算法解決的問題酵颁。有很多重要問題很難找到解決方案,但是一旦有了解決方案月帝,就很容易檢查解決方案躏惋。這一事實(shí)導(dǎo)致了NP完全問題。 NP代表非確定性多項(xiàng)式嚷辅,它意味著可以“猜測(cè)”解決方案(通過一些非確定性算法)其掂,然后檢查它。如果我們有一臺(tái)猜測(cè)機(jī)器潦蝇,我們或許可以在合理的時(shí)間內(nèi)找到解決方案款熬。為簡(jiǎn)單起見,研究NP完全問題僅限于答案可以是或否的問題攘乒。由于存在輸出復(fù)雜的任務(wù)贤牛,因此引入了一類稱為NP難問題的問題。這個(gè)類并不像NP完全問題那樣受限则酝。 NP問題的一個(gè)特征是殉簸,可以使用一個(gè)簡(jiǎn)單的算法,可能是第一眼看到的沽讹,可用于找到可用的解決方案般卑。但是這種方法通常提供了許多可能的解決方案 - 只是嘗試所有可能的解決方案是非常緩慢的過程(例如O(2 ^ n))。對(duì)于這些類型問題的更大的實(shí)例爽雄,這種方法根本不可用蝠检。今天沒有人知道是否存在一些更快的算法來(lái)提供NP問題的確切答案。對(duì)于研究人員來(lái)說挚瘟,發(fā)現(xiàn)這樣的算法仍然是一項(xiàng)重大任務(wù)(也許你叹谁!:-))饲梭。今天許多人認(rèn)為這種算法不存在,因此他們正在尋找替代方法焰檩。替代方法的一個(gè)例子是遺傳算法憔涉。 NP問題的例子是可滿足性問題,旅行商問題或背包問題析苫《颠叮可以獲得NP問題匯編。

參考:

????????http://www.reibang.com/p/ae5157c26af9

????????http://www.reibang.com/p/b36b520bd187

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末衩侥,一起剝皮案震驚了整個(gè)濱河市国旷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顿乒,老刑警劉巖议街,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泽谨,死亡現(xiàn)場(chǎng)離奇詭異璧榄,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)吧雹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門骨杂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人雄卷,你說我怎么就攤上這事搓蚪。” “怎么了丁鹉?”我有些...
    開封第一講書人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵妒潭,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我揣钦,道長(zhǎng)雳灾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任冯凹,我火速辦了婚禮谎亩,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宇姚。我一直安慰自己匈庭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開白布浑劳。 她就那樣靜靜地躺著阱持,像睡著了一般。 火紅的嫁衣襯著肌膚如雪魔熏。 梳的紋絲不亂的頭發(fā)上紊选,一...
    開封第一講書人閱讀 51,754評(píng)論 1 307
  • 那天啼止,我揣著相機(jī)與錄音,去河邊找鬼兵罢。 笑死献烦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卖词。 我是一名探鬼主播巩那,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼此蜈!你這毒婦竟也來(lái)了即横?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤裆赵,失蹤者是張志新(化名)和其女友劉穎东囚,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體战授,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡页藻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了植兰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片份帐。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖楣导,靈堂內(nèi)的尸體忽然破棺而出废境,到底是詐尸還是另有隱情,我是刑警寧澤筒繁,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布噩凹,位于F島的核電站,受9級(jí)特大地震影響毡咏,放射性物質(zhì)發(fā)生泄漏驮宴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一血当、第九天 我趴在偏房一處隱蔽的房頂上張望幻赚。 院中可真熱鬧,春花似錦臊旭、人聲如沸落恼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佳谦。三九已至,卻和暖如春滋戳,著一層夾襖步出監(jiān)牢的瞬間钻蔑,已是汗流浹背啥刻。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咪笑,地道東北人可帽。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像窗怒,于是被迫代替她去往敵國(guó)和親映跟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355