SOURCE-ALIGNED · SIX MODEL FAMILIES · SO + MO

COIN
ทีละขั้น

ติดตามหนึ่ง generation ตั้งแต่ประเมิน permutation เลือกกลุ่มที่ดีและแย่ นับ coincidence ปรับน้ำหนักจำนวนเต็ม และสุ่มประชากรรุ่นใหม่ พร้อมแยกให้เห็นว่า Edge, NB, CNB, SNE-COIN และ Hybrid สองแบบเรียนรู้อะไรต่างกัน

01 · GENERATION LOOP

COIN เรียนอะไรในหนึ่งรอบ

ประเมิน

ส่งทุก permutation เข้า evaluator เดียวกัน ได้ scalar fitness หรือ objective vector

เลือก

เลือก reward จากด้านดี และ punishment จากด้านแย่

นับ

แปลง permutation เป็น edge หรือ position events ตาม variant

เรียน

Conservative ย้ายมวลน้ำหนัก; Reconstruction สร้าง matrix ใหม่

สุ่ม

roulette เฉพาะ item ที่ยังไม่ใช้ จึงถูกต้องโดย construction

หน่วยเปรียบเทียบ: ใช้ objective evaluations = population × effective generations ไม่ใช่ generation อย่างเดียว
02 · EVIDENCE SNAPSHOT

Reward/Punishment ratio คือสัดส่วนประชากรที่ถูกเลือกไปเรียน

ตัวอย่าง minimization: population 8 และ ratio 25:25 เลือกคำตอบดีที่สุด 2 ตัวเป็นหลักฐานบวก และแย่ที่สุด 2 ตัวเป็นหลักฐานลบ ตัวกลางยังถูกประเมินและอาจเป็น best-so-far แต่ไม่เขียนลง model ในรอบนี้

f=19 · REWARD[1,3,5,0,4,2]
f=22 · REWARD[1,5,3,0,2,4]
f=31[3,1,0,5,2,4]
f=35[4,0,2,1,5,3]
f=38[0,4,1,3,2,5]
f=41[5,2,0,4,3,1]
f=50 · PUNISH[2,4,5,1,0,3]
f=57 · PUNISH[4,2,1,5,3,0]

ไม่ใช่จำนวนรอบ selection. Reward 10% หมายถึงประมาณ 10% ของ population ถูกใช้เป็นหลักฐานบวกในแต่ละ generation

03 · EDGE COIN

เรียนว่าอะไรควรตามหลังอะไร

Edge COIN เก็บ H[a,b] ขนาด n×n สำหรับน้ำหนักที่ b ตามหลัง a คำตอบ [1,3,5,0,4,2] ให้เหตุการณ์ 1→3, 3→5, 5→0, 0→4, 4→2 และ closing edge 2→1

STARTสุ่มสมาชิกแรก
1 → ?H[1, unused]
1 → 3roulette
3 → ?H[3, unused]
COMPLETE[1,3,5,0,4,2]
used = {start}
while len(order) < n:
  candidates = items - used
  p(j) ∝ H[previous,j]
  next = roulette(candidates,p)
  append(next)

H[i,i] = 0
H[i,j] ≥ 1 for i ≠ j
CONSERVATIVE

ย้ายมวลน้ำหนัก

น้ำหนัก off-diagonal เริ่มที่ round(n×100/training rate) Punishment ลดช่องที่พบในกลุ่มแย่แล้วกระจายให้คู่แข่งในแถว; reward ดึงจากคู่แข่งเข้าช่องที่พบในกลุ่มดี ทุก legal edge ยังเป็นบวก

RECONSTRUCTION

H[i,j] = 10R[i,j] + 1

สร้างใหม่จาก reward count ของรอบล่าสุด ช่องที่ไม่พบยังมีน้ำหนัก 1 จึงไม่ปิด exploration โหมดนี้ตอบสนองไวแต่ลืมประวัติมากกว่า

initial_weight = round(n × 100 / training_rate) · p(j|i) = H[i,j] / Σ H[i,eligible]
04 · NODE/POSITION FAMILY

NB-COIN · CNB-COIN · SNE-COIN

NB-COIN

สุ่มตำแหน่งก่อน แล้วสุ่มค่า

เก็บ W[position,item] ก่อนสร้างคำตอบจะ shuffle ลำดับตำแหน่ง แล้วสุ่ม item ที่ยังไม่ใช้จากแถวของตำแหน่งนั้น จึงลดอคติจากการเติมซ้ายไปขวา

positions=shuffle(0..n-1)
for p in positions:
  x[p] ~ W[p,unused]
CNB-COIN

ตำแหน่ง 0→n แล้วสุ่มค่า

ใช้ matrix และ learner เดียวกับ NB แต่เติมตำแหน่ง 0,1,…,n−1 ตามลำดับ จึงเป็น Chained Node-Based COIN

for p in range(n):
  x[p] ~ W[p,unused]
START-NODE EDGE

แยกจุดเริ่มจาก transition

เก็บ S[item] สำหรับตำแหน่งแรก และ H[a,b] สำหรับตำแหน่งต่อไป เหมาะเมื่อ start/depot/seed มีความหมาย

x[0] ~ S[unused]
x[p] ~ H[x[p-1],unused]
05 · TWO HYBRIDS

ผสม Node กับ Edge สองพฤติกรรมที่ไม่ซ้ำกัน

HYBRID TEMPLATE COIN

Node วางหมุด · Edge เติมช่องว่าง

  1. สร้าง template จาก Node model
  2. เก็บตำแหน่งกระจาย 30–70%; ตำแหน่ง 0 เก็บเสมอ
  3. กันค่าที่ template อนาคตต้องใช้
  4. เติมช่องว่างด้วย Edge จากค่าก่อนหน้า
  5. ให้ทั้งสอง model เรียนจากคำตอบเต็ม
template [1,_,3,_,_,6,_,7,_]
result   [1,9,3,5,4,6,8,7,2]
HYBRID CHAIN COIN

เลือก Node หรือ Edge ทุก link

ตำแหน่ง 0 มาจาก Node จากนั้นทุกตำแหน่งสุ่มเลือกแหล่ง W[position] หรือ H[previous] แบบอิสระ และบันทึก source mask ไว้วิเคราะห์

x[0] ~ W[0,unused]
for p=1..n-1:
  if Bernoulli(.5): x[p]~W[p,unused]
  else:             x[p]~H[x[p-1],unused]

ต่างกันตรง schema: HNE-COIN ตรึง partial schema ก่อน reconstruct; Chain เลือก model ทีละ link และไม่มี template ล่วงหน้า

06 · COMPLETE TAXONOMY

ทุก variant และรุ่น Multi-objective

Variantความรู้วิธีสุ่มMO
Edge COINH[previous,next]edge chainMO Edge COIN
NB-COINW[position,item]random position firstMO NB-COIN
CNB-COINW[position,item]position 0→nMO CNB-COIN
SNE-COINS[start]+H[edge]start then edgeMO SNE-COIN
HNE-COINW+HNode template→Edge fillMO HNE-COIN
CNE-COINW+HNode/Edge per linkMO CNE-COIN

MO เปลี่ยนส่วน selection ไม่เปลี่ยน representation

ใช้ nondominated rank/Pareto depth ร่วมกับ diversity score สร้าง reward/punishment evidence และเก็บ external archive ส่วน matrix และ sampler ของแต่ละ variant เหมือนเดิม

F(x)=[f₁(x),…,fₘ(x)]
rank 0 = nondominated
reward ← strong Pareto evidence
punish ← weak/deep-rank evidence
archive ← nondominated union
Multi-objectivization: แตก fitness เป็นหลายสัญญาณเพื่อช่วยนำทางได้ แต่ objective ที่คงที่หรือซ้ำซ้อนไม่ให้ learning signal
07 · PARAMETERS & COST

ความหมายที่ใช้ปรับจริง

Reward selection (%)

ค่าน้อยเลือกเข้มแต่ noisy; ค่าสูงนิ่งกว่าแต่อาจเฉลี่ยหลาย basin

Punishment selection (%)

สัดส่วนกลุ่มแย่ที่ใช้ลดน้ำหนัก ไม่ใช่ mutation rate

Training rate

กำหนดน้ำหนักเริ่มต้น round(n×100/rate); rate สูงทำให้หลักฐานใหม่มีผลเร็ว

Learning mode

Conservative สะสมและย้ายมวล; Reconstruction สร้างจาก reward ล่าสุด.

FamilyMemoryCountSample
Edge / NB / CNBΘ(n²)Θ(Pn)Θ(Pn²)
SNE-COINΘ(n²+n)Θ(Pn)Θ(Pn²)
HybridsΘ(2n²)Θ(Pn)Θ(Pn²)

Invariants

ไม่มี item ซ้ำ/หาย; Edge diagonal=0; legal weight≥1; seed เดิม reproduce ได้

Diagnostics

best-so-far ทุก objective, diversity, weight concentration, Pareto depth, archive size และ evaluations-to-solution

08 · IMPLEMENTATION MAP

คำอธิบายทุกส่วนโยงกลับไปยัง library

ส่วนSourceหน้าที่
Edgemodels/edge_reference.py
models/edge_optimized.py
อ่านง่าย + NumPy/Numba ที่ทดสอบ equivalence
Learninglearning/reward_punishment.pykernel ปรับ integer weights
NB / CNBmodels/position.py
models/cnb_position.py
position samplers สองแบบ
Compositemodels/start_node_edge.py
models/hybrid.py
models/hybrid_chain.py
start และ hybrid variants
Multi-objectivecore/multiobjective.pyPareto selection · archive · progress

ใช้ชื่อ variant ปัจจุบันของ reusable library และไม่เพิ่ม Legacy Hybrid ที่ซ้ำซ้อนกลับมา