########################### 遺伝子計算 ########################### 遺伝子概要 ===================================== ARCANA, EGG, SHARDはトークン1つ1つが固有の「遺伝子情報」を持つ。遺伝子情報は、SHARD→EGG→ARCANA→SHARDとトークンが変化する過程で、変化しつつ継承される。 .. csv-table:: :header-rows: 1 :align: center "プロセス", "遺伝子の変化" "SHARD → EGG", "2種類のSHARDが持つ遺伝子を「合成」したものがEGGの遺伝子となる" "EGG → ARCANA", "EGGの持つ遺伝子がそのままARCANAの遺伝子として継承される" "ARCANA → SHARD", "ARCANAが持つ遺伝子がそのままSHARDの遺伝子として継承される" ----------------------------------------------------------------------------------- 遺伝子情報のデータ構造 ===================================== 遺伝子情報は32次元のベクトルとして表現され、各ベクトルは8bitの値域(-128〜+127)を持つ。 コントラクト上では、256bitの1つのフィールドに保持される。:: |-------------------------256bit[hex]--------------------------| 0xffeeddccbbaa99887766554433221100ffeeddccbbaa99887766554433221100 ^^ ^^ 1次元目 32次元目 ----------------------------------------------------------------------------------- SHARDからEGG生成する際の遺伝子計算 ===================================== 合成の元となる2種類のSHARD X, Yの遺伝子ベクトルをGX, GYとする。 Xの個数をa, Yの個数をbとする。 新たに生成されるEGGの遺伝子ベクトルをGZとする。 遺伝子ベクトルの各次元をGXn, GYn, GZn (n = 1〜32)とする。 遺伝子は以下の式で計算される。:: GZi = (aGXi + bGYi) / (a+b) ※ a + b は常に100 ----------------------------------------------------------------------------------- 突然変異について ===================================== 同じ種類、同じ個数のSHARD同士によるEGG生成でも、必ずしも同じ遺伝子を持つEGGが生成されるとは限らない。 遺伝子計算には、一定の「突然変異」ロジックが存在する。 32個の各次元につき、それぞれ5%ずつの確率で、継承された値とはまったく異なる新しい値に上書きされる。