遺傳演算法初代
① 一道演算法題,要求用c++寫
如圖
typedefunsignedintUINT32;
typedefunsignedshortUINT16;
#defineFOR_ITER(iter,object)for(auto(iter)=(object).begin();(iter)!=(object).end();(iter)++)
classRandom{
private:
staticboolinit;
public:
Random(){
if(!init){
srand((int)time(0));init=true;
}
} //初始化隨機數種子
// staticintrand(){returnrand();}
staticdoublerand_df(constdouble&a=0,constdouble&b=1);
staticUINT32randUINT();
};
boolRandom::init=false;
doubleRandom::rand_df(constdouble&a,constdouble&b){
returna+(b-a)*rand()/RAND_MAX;
}
UINT32Random::randUINT(){
returnUINT32(((rand()%0x10000)<<16)|(rand()%0x10000));
}
classGrayCode{
private:
staticboolinit;
staticunsignedchargray2bi[512]; //查表法格雷碼轉二進制(0~255)第9位是進位標志
public:
GrayCode(){
if(!init)
for(UINT32bi=0;bi<512;bi++)
gray2bi[toGray(bi)]=bi%256;
}
//二進制轉格雷碼
staticUINT32toGray(constUINT32&bi){
returnbi^(bi>>1);
}
//格雷碼轉二進制★(難)
staticUINT32toBi(constUINT32&gray){
intshift=24;
UINT32 bi=0;
while(true){ //從gray高位到低位轉換
bi|=gray2bi[ //bi的最低位作為查表的進位標志
(bi|((gray>>shift)&0xff))%512];
if(shift>0){
bi<<=8; shift-=8;
}elsebreak;
}
returnbi;
}
//輸出為二進制字元。
staticvoidprintBi(constint&num){
for(UINT32p=0x80000000,count=8;p!=0;p>>=1){
if(num&p) putchar('1');
else putchar('0');
if(--count==0){
putchar('');count=8;
}
}
}
};
boolGrayCode::init=false;
unsignedcharGrayCode::gray2bi[512];
//遺傳演算法求最值
classIndiviality:Random,GrayCode{
private:
staticUINT32mutation_factor[32]; //突變因子{1,2,4,8,16,...}
staticboolinit;
UINT32gene; //基因(格雷碼)
UINT32transgenation_2(); //基因突變(非均勻,暫時棄用)
//求解函數值
doublef(){
doublex=get_x();
returnx+10*sin(5*x)+7*cos(4*x);//★用戶自定義,求解的函數。
}
doubley; //y值(生成gene馬上計算)
public:
Indiviality();
Indiviality(constUINT32&gene):gene(gene),y(f()){}
Indiviality(constIndiviality&a,constIndiviality&b); //交叉繁殖產生後代
Indivialitytransgenation(); //均勻基因突變1位
doubleget_y(){returny;}
doubleadaptability; //預留給用戶自定義
//gene(格雷碼要先轉二進制)映射到區間[0,9]的數
doubleget_x(){
return(double)toBi(gene)*((double)9/0xffffffff);
}
staticboolcmp_y(constIndiviality&a,constIndiviality&b){
returna.y<b.y;
}
};
boolIndiviality::init=false;
UINT32Indiviality::mutation_factor[32];
typedefvector<Indiviality>::iteratorIdv_Iter;
classNatrue{
private:
vector<Indiviality>idvs; //個體集合
intgeneration=0; //代0為初代
intmax_num; //max_num÷num-1為繁殖率
intnum; //每一代總群數量控制
//適應度函數(須具體問題具體定義),非負即可,可以不歸一化,值為0代表必被淘汰
voidcalculate_adaptability();
intstatistics_generation=-1;
doubleerror;
pair<Idv_Iter,Idv_Iter>min_max_idv;
//線程與安全
boolwooking=false;
Natrue(); //禁用默認構造
public:
//初始化產生num個隨機個體
Natrue(intnum,intmax_num):num(num),max_num(max_num){
idvs.reserve(max_num);
idvs.resize(num); //用默認構造num個。
}
//隨機交叉繁殖(基因突變概率);
voidreproce(doubleGM_Probability);
//輪盤賭選擇
voidroulette_wheel_selection();
//統計結果
voidstatistics_y(double&min_y);
// voidstatistics_y(Indiviality*&min_y,Indiviality*&max_y);
double&get_error();
constIdv_Iterget_max_idv();
intget_generation(){returngeneration;}
};
intmain()
{
Natrues(50,100);
for(inti=100;i>0;i--){
s.reproce(0.3);
s.roulette_wheel_selection();
printf("第%d代
",s.get_generation());
printf("error=%e ",s.get_error());
printf("x=%lf y=%lf
",s.get_max_idv()->get_x(),s.get_max_idv()->get_y());
}
system("pause");
return0;
}
② 遺傳演算法工具箱初代個體設置問題
核心函數:
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始種群的生成函數
【輸出參數】
pop--生成的初始種群
【輸入參數】
num--種群中的個體數目
bounds--代表變數的上下界的矩陣
eevalFN--適應度函數
eevalOps--傳遞給適應度函數的參數
options--選擇編碼形式(浮點編碼或是二進制編碼)[precision F_or_B],如
precision--變數進行二進制編碼時指定的精度
F_or_B--為1時選擇浮點編碼,否則為二進制編碼,由precision指定精度)
(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遺傳演算法函數
【輸出參數】
x--求得的最優解
endPop--最終得到的種群
bPop--最優種群的一個搜索軌跡
【輸入參數】
bounds--代表變數上下界的矩陣
evalFN--適應度函數
evalOps--傳遞給適應度函數的參數
startPop-初始種群
opts[epsilon prob_ops display]--opts(1:2)等同於initializega的options參數,第三個參數控制是否輸出,一般為0。如[1e-6 1 0]
termFN--終止函數的名稱,如['maxGenTerm']
termOps--傳遞個終止函數的參數,如[100]
selectFN--選擇函數的名稱,如['normGeomSelect']
selectOps--傳遞個選擇函數的參數,如[0.08]
xOverFNs--交叉函數名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps--傳遞給交叉函數的參數表,如[2 0;2 3;2 0]
mutFNs--變異函數表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--傳遞給交叉函數的參數表,如[4 0 0;6 100 3;4 100 3;4 0 0]
注意】matlab工具箱函數必須放在工作目錄下
【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08
【程序清單】
%編寫目標函數
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函數存儲為fitness.m文件並放在工作目錄下
initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代
運算借過為:x =
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553)
註:遺傳演算法一般用來取得近似最優解,而不是最優解。
你還是去圖書館找一下那本Matlab遺傳演算法工具箱教程的書看看吧。
遺傳演算法不一定可以在短時間內收斂的,要看你的適應度定義了,還有你的交叉、變異的參數都有關。
MATLAB遺傳演算法工具箱及應用
作者: 日期:
出版:西安電子科技大學出版社 精裝:膠版紙
開本: 版次:2005年4月第1版
頁數: ISBN:756061484
原價:26.0 元
③ 染色體遺傳概率演算法問題
首先我生物學知識已忘得差不多了。搞不太清遺傳的具體機理和過程。我想大概是這樣一個模式,第一代時,父代的細胞里的23對染色體的分裂成23條染色體進入生殖細胞。來自父親的23條染色體和母親的23條染色體組成子代的23對染色體,在分殖細胞里再隨機分裂出二十三條染色體。則來自父親或母親的染色體各有一半機會進入子代的生殖細胞里。性染色體也一樣,也是1/2概率進入子代,所以第二條就不需要考慮了。
我想這個問題是你自已想出來的吧,因為從邏輯上不是很嚴密。做些假定。把你的題變成這樣:一個先祖(0代)生殖細胞里有23條染色體。遺傳時每條染色體傳給子代,進入子代生殖細胞的概率為1/2,求經過N代繁殖後,N代後代的生殖細胞里有M條該先的染色體的概率。(0《M《23)我想這樣也應該很接近你的原意吧.
這樣的概率題就是一個很普通的概率題了。
經過N代,每一個細胞被遺傳下來進入子代生殖細胞的概率為(1/2)^N,沒有遺傳下來的概率就是1-(1/2)^N
有且只有M條染色體遺傳下來概率為
P1=C(M,23)*0.5^(N*M)*(1-0.5^N)^(23-M)
樓主的補充看了,那我也補充說明一下:
首先是公式里*0.5^(N*M)的M是和N相乘後才是0.5的指數,昨天忘了加括弧,導致誤解了.
把N=1,M=1代入公式,求得第一代里僅有1條來自父代的概率
P1=23*0.5*0.5^22=23*0.5^23(這是一個很小的數字,說明是一件小概率事件)
N=1,M=23代入得
P23=0.5^23(很小,同樣也是一個小概率事件)
另外我要說明的是,概率公式算出的不是子代普通細胞里有M條父代染色體的概率,而是子代生殖細胞里有M條染色體的概率.
正如你所說,第一代子代里肯定是有23條染色體來自父親,另二十三條來自母親的,但是我們知道生殖細胞的染色體是只有23條的,不是23對.子代的生殖細胞的23條染色體中的每一條染色體有可能來自父親和母親,概率各是1/2(我不知道生物學的遺傳是否是這樣概率隨機.但我們討論的就是這種情況,你也是這樣定義的)
如果一定要像你那樣定義,那麼前面公式算出來的其實就是N+1代的細胞里有M條先祖染色體概率,要算N代的公式,就把公式里的N用N-1代替就行了.(公式要補充規定N>1,;因為0^0次方沒有定義.N=1時,P=1)
④ 人類起源是什麼
起源過程
編輯
北京人復原像(4張)
「北京人」的發現不僅拯救了爪哇直立猿人,也使中亞起源說更加風靡一時。1887年,荷蘭解剖學家杜布哇,抱著尋找早期人類化石遺骸的熱望,來到印尼的爪哇島,居然找到了原始人的化石。1890年,在一個名叫垂尼爾的地方,先是找到下頜殘片,次年又發現一具頭蓋骨,這就是著名的「爪哇人」第一號頭蓋骨。1892年,又在不遠處找到一根大腿骨。杜布哇研究了這些材料後,認為它們屬於同一個體,而且正是人們要尋找的人與猿之間的「缺環」。
爪哇直立猿人的發現使南亞說為之一振。然而杜布哇的發現卻遭到許多人的反對,最強烈的反對來自教會。教會堅持說,人類的祖先應是亞當,怎麼可能是猿人呢?
1911年,古生物學家馬修在《氣候和演化》一書中,列舉種種理由鼓吹中亞高原是人類的搖籃。其理由,一是中亞因喜馬拉雅山的崛起,致使自然環境變得不適宜生存,但對動物演化來說,受刺激產生的反應最有益處,所以這些外界刺激可以促進人類的形成;二是哺乳動物的遷徙規律常常是最不進步的類型被排斥到散布中心之外,而最強盛的類型則留在發源地附近繼續發展,因此在離老家比較遠的地區反而能發現最原始的人類。當時發現的早期人類化石如海德堡人和爪哇直立猿人,與這一假說正好吻合。
1927年,中國發現「北京人」化石,之後相繼發現了「北京人」製作和使用的工具以及用火遺跡。
1930年,美國古生物學家劉易斯在印巴交界處的西瓦立克山到一塊上頜碎塊,該標本從形態上看有些接近人的特點,他便借用印度一個神的名字「拉瑪」把它命名為「拉瑪猿」。但由於當時他人微言輕,這一看法未被首肯。到了60年代,古生物學家皮爾賓姆和西蒙斯對林猿類26個屬50多個種作綜合研究時,注意到拉瑪猿形態上的似人特點,認為它可能是人類這一支系的祖先類型,並將它從猿科中轉到人科中,人類起源南亞說再度興起。然而隨著非洲早期人類化石和文化遺物的大量涌現,使人類起源非洲說重新嶄露頭角。
東非地區
正當人們左右徘徊時,東非的化石發現為解決這些問題提供了新的契機。從1931年起,英國考古學家路易斯·利基就在東非大裂谷一個名叫奧爾杜威峽谷的分支部分進行發掘,找到了不少非常原始的石器。它們是用河卵石或礫石簡單打製成的,年代是更新世早期。誰是這些工具的主人呢?利基夫婦在這里搜索了20多年,終於在1959年7月的一天發現了一具南猿頭骨。它比南非粗壯南猿還要粗壯,學名為「鮑氏南猿」,一般稱其為「東非人」。通過種種理化測年法測得他的生存年代為距今170萬年。料而言,人類的發祥地很可能在非洲,特別是東非地區據目前所擁有的化石材料。
「東非人」及「能人」的發現,不僅揭開了東非地區一系列重要發現的序幕,而且將作為「缺環」代表的南猿,由「最接近人的猿」,一下躍升為「最接近猿的人」或「人類的先驅者。」以利基夫婦為代表的一批學者據此認為人類起源於非洲。
進入70年代,世界范圍內古人類學的重要發現和研究獲得了長足的進展。首先是在巴基斯坦波特瓦高原,之後又在匈牙利、土耳其、希臘、肯亞和我國發現了大量的古猿化石。雖然它們名稱不一,但基本可分為大小兩種類型,大的屬西瓦猿型,小的為拉瑪猿型,而且往往兩者並存。經過各方專家的比較研究,發現它們並非不同的種屬,而是雌雄個體而已。既然拉瑪猿並不是一個獨立的種屬,焉有人類祖先之說?人類的直系祖先曾一度因「拉瑪猿」而明朗過,現在又迷茫了。
但日新月異的科技發展為人們了解自身起源的奧秘打開了一條新的途徑。分子生物學,特別是分子人類學的發展,不僅從微觀分子水平上展示了人與其他靈長動物,特別與大猿類密切的血緣關系,而且依據遺傳物質的變異度,可以推算出它們分化的大致時間跨度。原先認為人和猿分離的時間大約為距今2000—2500萬年間,而通過分子生物學方法的推算,只在距今400—500萬年間!
鑒於此,新的人類演化概念產生了,由此也決定了探索人類的發祥地不能再依據舊說行事。由於非洲大量涌現的南猿和早期人屬化石,人類早期階段的復雜圖景終於開始清晰地展現在人們面前。
學說理論
編輯
達爾文理論
在達爾文推測人類起源於非洲時,當時少見化石證據。這種情況在20世紀20年代發生了改變。在南非盛產金鋼石的小城金伯利附近,有一個名叫塔恩的地方,那裡有許多採石場,在採石時經常發現哺乳動物化石。1924年曾發現一具幼年猿類頭骨,後經解剖學教授達特的研究,認為它人形態介於人和猿之間,遂將其命名為「非洲南猿」。1936年,在德蘭士瓦地區斯特克方丹採石場發現一個成年個體的南猿化石,次年又在一名叫克羅姆特萊伊採石場找到完整的南猿下頜骨和頭骨碎片,南猿逐漸引起學術界的認同和重視。但就它是「最接近猿的人」還是「最接近人的猿」,學術界仍有爭議。解決爭議的關鍵是南猿能否製造工具。雖然人們曾在發現南猿化石的洞穴和裂隙中找到了石器,但同時還有進步類型的人化石伴生,因此南猿是否是工具的製造者很難取得一致意見。此外,由於南猿化石出土層位不清,故南猿確切的生存年代還一時無法搞清。
自1924年找到首個幼年南猿頭骨以來的70餘年,在非洲有不下20個地點發現了最早階段的人類化石。1974年,由美國古人類學家約翰遜領導的多國考察隊,在衣索比亞的阿法地區發現了一具保存40%遺骸的被稱為「露西少女」南猿骨架,其生存年代超過300萬年,以後被訂名為「阿法南猿」。在阿法地區還曾發現一處埋有13個阿法南猿個體的骨骸,為此有人將之稱為人類的「第一家庭」。
90年代,非洲的古人類化石重要發現接連不斷。1992年,在衣索比亞的阿拉米斯發現距今440萬年的南猿化石,最初被命名為「始祖南猿」,經過進一步發掘與研究,更名為「始祖地棲猿」。1996年,來自13個國家40多位科學家組成的考察隊在阿法盆地的中阿瓦什地區,找到了距今250萬年的南猿化石。由於它在形態上混雜著接近人和許多不同類型南猿的特點,被認為是連接阿法南猿和早期人屬之間的一個新種代表,被訂名為「驚奇南猿」。在肯亞圖爾卡納湖東岸的庫比福拉地點,則相繼發現了阿法南猿、鮑氏南猿,「能人」,以及曾被叫做「1470號人」的頭骨化石。後者最後被訂名為「盧道爾夫人」,距今年代為190萬年,並被認為是人屬中的最早成員;在湖西岸,1985年曾發現有一具距今250萬年的頭骨,被命名為「衣索比亞南猿」,他是粗壯型南猿的祖先;1995年在西岸的卡那坡地點發現的距今410萬年的原始類型南猿化石,被命名為「湖濱南猿」。令人矚目的是,它們的下肢骨顯示出直立行走的特點,而上肢骨卻仍保留著上攀援的特點。這表明分子生物學所推測的距今500萬年人與猿分道揚鑣可能是對的。據目前所擁有的化石材料而言,人類的發祥地很可能在非洲,特別是東非地區。
大概在距今200萬年至180萬年左右,非洲的「能人」甚至「匠人」走出非洲進入亞洲和歐洲。
早在1907年發現的海德堡人,曾一度被視作歐洲的猿人或是向尼安德特人過渡的類型。1994—1996年,在西班牙北部阿塔普卡地區,發現了80多件人類化石,古地磁年代測定為距今78萬年以上,被認為是海德堡人的祖先。而在之前的1991年9月,在喬治亞東南邊境一個名叫德瑪尼西的地方,發現了一具保存完整齒列的下頜骨,形態呈直立人型。以後又發現比較完整的頭蓋骨化石。據古地磁年代測定為距今180萬年,故德瑪尼西人被認為是非洲以外已發現的年代最古老的直立人化石之一,也是迄今歐洲最早的人化石。
以色列出土的尼人類型的古人類化石也很著名,最近又以早期石製品引人注目。在以色列境內有一條約旦河谷,是東非大裂谷的北延部分。
1959年在這里發現烏貝蒂亞舊石器時代遺址。從該地上新世至早更新世地層中出土了大量哺乳動物化石和石制器,據古地磁法測得距今年代約在150萬至100萬年間。有些學者認為這個遺址是非洲之外最早的直立人文化遺址之一,它的主人可能是剛從「能人」演化而來的早期直立人。
我國在近半個世紀也發現了大量有關人類演化的化石材料。自50年代在雲南開遠發現古猿以來,70年代和80年代在雲南祿豐和元謀又相繼發現古猿化石,可分大小兩種類型。有些學者認為大型者可謂西瓦猿型,小型者屬拉瑪猿型。拉瑪猿作為人類遠祖的論點其時在我國正風行一時,所以有的學者認為人類遠祖已在中國找到,便將小型古猿命名為「中國古猿」,以表達人類起源於中國的美好願望。然而隨著科學界對拉瑪猿屬性認識的變更,國內有些學者將雲南不同地區的古猿歸屬到一個新屬,即祿豐猿屬之內。不過也有學者認為,它們只是雲南西瓦猿中不同的亞種。
60年代,陝西藍田公王嶺和雲南元謀大那烏發現了直立人類型的藍田人和元謀人,他們距今年代超出100萬年,後者甚至達到170萬年,成為目前已知中國境內最早的人化石。但遺憾的是,元謀人化石目前僅限於2枚上內側門齒,以及年代稍晚的一段脛骨,而在非洲發現的年代大致相同的卻有完整的骨架。雖然曾經有人將湖北建始地區發現的幾顆化石牙齒看作是與南猿類型接近的材料,但因材料太少未獲得學術界的承認。
1989年在湖北鄖縣找到2具原始人頭骨化石,一開始又將其歸於南猿之列,修理後發現乃屬直立人型。1980年在安徽和縣及1993年在江蘇南京也發現了直立人型頭骨化石。雖然對於它們的年代說法很多,但均未超出50萬年。
自1985年起,在四川巫山縣龍骨坡出土了一批早更新世哺乳動物化石,其中包含像人的1枚門齒和一段下頜殘塊,同時還宣稱出土了有人工痕跡的石製品。一開始它們被部分學者鑒定為直立人型,後來國外學者介入,認為與直立人形態差異大,而與非洲的「能人」和「匠人」相近,並進一步測定了其年代為距今180萬年以上,甚至超過200萬年。
進入90年代,非洲出土大量早期人化石,並且這些化石構成了一個相當完整的演化體系,而亞洲地區出土的化石很難與它相提並論。相較而言,非洲似更有條件作為人類的發祥地。古人類學的研究還表明:能人/盧道爾夫人具有較大的軀體和較重的腦量,故具有較強的體能和較高的智能,不僅已能製造工具,很可能還有較緊密的群體關系。加上新世時期古氣候的變化,引起生態環境的變化和哺乳動物的遷移,由此帶動了古人類群的遷徙。這些研究成果在90年代後期匯成「走出非洲」的假說。部分學者提出:大概在距今200萬年至180萬年左右,非洲的「能人」,甚至「匠人」,走出非洲進入亞洲和歐洲。以色列的烏貝蒂亞、喬治亞的德瑪尼西、巴基斯坦的伯比山以及我國的「巫山人」諸遺址,均被看作是早期人類遷徙途中的遺跡。以後,非洲的能人/盧道爾夫人演化為匠人,而在亞洲則演化直立人。也有人構想出另一種過程,即非洲早期人類首先遷徙到亞洲,演化為直立人後,又返回到非洲,並遷徙到歐洲。不過「走出非洲」尚有另層意思,即現代類型的智人也是由非洲的智人遷移到各洲去的,時間大約在距今10多萬年前,即所謂「夏娃說」。
發現早於200萬年前的人類化石固然重要,但要使我國距今150—200萬年的古人類能站穩腳跟,更是當務之急。
20世紀80年代,我國有些學者在發掘和研究元謀西猿時,認為在元謀盆地小河地區豹子洞篝發現的古猿伴有石器。能製作石器,豈不是人?故將之訂名為「東方人」,並將其生存年代定在距今250萬年前。而在同一地區的蝴蝶梁子發現的一具幼年頭骨,鑒定為拉瑪猿型,認為是人類的祖先,後來宣稱在地層中也找到了「石器」,將之更名為「蝴蝶人」,其生存年代定為距今400多萬年前,並進而構築了「開遠拉瑪猿」——「祿豐拉瑪猿」——「蝴蝶拉瑪猿」(或「蝴蝶人」)——「東方人」——元謀猿人——昭通人(智人的早期代表)——西疇人、麗江人(智人的晚期代表)等相當完整的系列。鑒於此,有人提出滇中高原及其鄰區是人類起源的關鍵地區。但遺憾的是,早在70年代後期,學術界已拋棄拉瑪猿是人類遠祖的觀點。後經研究,所謂「蝴蝶人」的「石器」原來是天然石塊;而「東方人」的石器,後來被證明是地表上揀來的,而且時代甚晚。
1997年,我國啟動了尋找200萬年和更早時期人類的「攀登項目」,投入了不小力量,但迄今收獲甚微。後來在安徽繁昌發現了距今200—240萬年的石製品和骨器,發現物出自早更新世裂隙堆積中。但那到底是不是人工製品在學術界曾引起很大爭議。此外,光有石器還遠遠不夠,它只是間接證據,關鍵是找到人化石。
1999年在河北蔚縣上新世地層中找到了一件距今300萬年的石器,這遠遠超過了非洲發現的不超出260萬年的界限,並認為這是對人類非洲起源論的一次挑戰。但該標本發現於1990年,事隔9年後才公布於世令人費解。
⑤ 假面騎士水騎的外貌是致敬奧特曼嗎
我認為假面騎士水騎的外貌不是致敬奧特曼。說到奧特曼,許多人應該都熟悉它。巨型巨人正在保護地球免受入侵。這些巨人也有非凡的能力。他們大多數來自光之國,被地球人稱為阿爾特曼。當然,在地球上,除了奧特曼之外,還有另一個正義的化身,那就是假面騎士,和奧特曼一樣,但是沒有一個巨大的身體,能夠改造和擁有超人的力量,他們就是假面騎士。然而,在假面騎士之前,還有一個人不是假面騎士或奧特曼,而是假面騎士的祖先,也是比假面騎士更早的城市英雄。
劇中的女人是怪物,但她不知道自己已經變了。她經常夢見一個骷髏男試圖殺死她。起初我們想,這個骷髏男怎麼能殺人呢?只有當她最終變成一個怪物時,這個謎才被解開。這個女人的丈夫,也是科學的角度,在欺騙了這個女人的幫助後偷走了遺傳演算法計劃,並想把它交給一個神秘的組織,但最終他失敗了,沒有殺死它。當女主看到丈夫死了,她很生氣,把項鏈握在手中。當項鏈掉到地上時,她變成了一個怪物。所以我覺得假面騎士水騎的外貌不是致敬奧特曼。