廣義智慧集理論實踐——智慧集構建
以下Python程式碼構建廣義智慧集中的智慧集。
#! /usr/bin/python
# Code segment 1: import library
import numpy as np
import cv2
import time
import random
# Code segment 2: Configure
SCREEN_SIZE = (400, 400)
DELAY_SIZE = 0.1
EVOLUTION_SPEED = 8
VARIATION_SPEED = 7
# Code segment 3: IntelligenceElement_A
def FuncA_1(X):
F = X + np.array([EVOLUTION_SPEED] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), np.uint8)
I = np.array(np.random.randint(0, VARIATION_SPEED, size=(SCREEN_SIZE[0] * SCREEN_SIZE[1])), dtype=np.uint8)
L = F + I
return L
def FuncA_2(L, M=128, N=16):
while True:
t = L.mean() - M
if abs(t) < N:
return t, L
else:
SS = int(N * 0.618)
L += [SS, -SS][t > 0]
def FuncA(X, M=128):
L = FuncA_1(X)
T, O = FuncA_2(L, M)
return T, O
# Code segment 4: IntelligenceElement_B
def FuncB_1(X):
F = X + np.array([EVOLUTION_SPEED] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), np.uint8)
I = np.array(np.random.randint(0, VARIATION_SPEED, size=(SCREEN_SIZE[0] * SCREEN_SIZE[1])), dtype=np.uint8)
L = F + I
return L
def FuncB_2(L, M=128, N=16):
while True:
t = L.mean() - M
if abs(t) < N:
return t, L
else:
SS = int(N * 0.618)
L += [SS, -SS][t > 0]
def FuncB(X, M=128):
L = FuncB_1(X)
T, O = FuncB_2(L, M)
return T, O
# Code segment 5: IntelligenceSet
def main():
X_A = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
X_B = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
M_A = M_B = 128
LIMIT = 0.618 * 32
while True:
for i in range(64):
time.sleep(DELAY_SIZE)
T_A, X_A = FuncA(X_A, M_A)
T_B, X_B = FuncB(X_B, M_B)
T = T_A + T_B
if abs(T) <= LIMIT:
# Print data
print 'T:', T
print "T_A: %f, T_B: %f" % (T_A,T_B)
print '--------------------------------'
print "M_A: %f, M_B: %f" % (M_A,M_B)
print '--------------------------------'
print 'Set array:'
print X_A
print X_B
print '--------------------------------'
print '================================\n'
break
print 'The abs(T) more than LIMIT'
if T > 0:
if T_A > 0: M_A += random.random()
if T_B > 0: M_B += random.random()
else:
if T_A < 0: M_A -= random.random()
if T_B < 0: M_B -= random.random()
else:
print '\n================================\n'
print 'END OF WORLD'
print '\n================================\n'
X_A = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
X_B = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
# Show data
img = np.zeros((SCREEN_SIZE[0], SCREEN_SIZE[1] * 3, 3), dtype=np.uint8)
OA = X_A.reshape((SCREEN_SIZE[0], SCREEN_SIZE[1]))
OB = X_B.reshape((SCREEN_SIZE[0], SCREEN_SIZE[1]))
img[:,:SCREEN_SIZE[1],0] = OA
img[:,SCREEN_SIZE[1] * 2:,1] = OB
img[:,SCREEN_SIZE[1]:SCREEN_SIZE[1] * 2,0] = OA
img[:,SCREEN_SIZE[1]:SCREEN_SIZE[1] * 2,1] = OB
cv2.imshow('Intelligence Set Simulation...', img)
KEY = cv2.waitKey(1) & 0xFF
if 27 == KEY: break
elif 32 == KEY: cv2.waitKey(0)
cv2.destroyAllWindows()
if __name__ == '__main__':
main()
# End of code
程式碼說明
Code segment 1-4:
其中的FuncA_1(X)、FuncA_2(L, M=128, N=16)、FuncB_1(X)、FuncB_2(zL, M=128, N=16)都是前面用於構建智慧元的函式,值得注意的是除卻之前的功能,在這裡FuncA_2(L, M=128, N=16)和FuncB_2(L, M=128, N=16)還多反饋一個引數——差值 t,FuncA與FuncB用以整合前面的FuncA_1(X)、FuncA_2(L, M=128, N=16)、FuncB_1(X)、FuncB_2(zL, M=128, N=16),有點類似前面的程式碼中的main函式的功能。
Code segment 5:
X_A = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
X_B = np.array([128,] * (SCREEN_SIZE[0] * SCREEN_SIZE[1]), dtype=np.uint8)
M_A = M_B = 128
LIMIT = 0.618 * 32
初始化兩個不同的集合X_A、X_B,兩個智慧元定義公式中的M_A, M_B,LIMIT相當於智慧集定義公式中的N。
while True:
for i in range(64):
time.sleep(DELAY_SIZE)
T_A, X_A = FuncA(X_A, M_A)
T_B, X_B = FuncB(X_B, M_B)
T = T_A + T_B
if abs(T) <= LIMIT:
# Print data
print 'T:', T
print "T_A: %f, T_B: %f" % (T_A,T_B)
print '--------------------------------'
print "M_A: %f, M_B: %f" % (M_A,M_B)
print '--------------------------------'
print 'Set array:'
print X_A
print X_B
print '--------------------------------'
print '================================\n'
break
print 'The abs(T) more than LIMIT'
if T > 0:
if T_A > 0: M_A += random.random()
if T_B > 0: M_B += random.random()
else:
if T_A < 0: M_A -= random.random()
if T_B < 0: M_B -= random.random()
相當於智慧集定義公式中的 | K(L) - M | < N 用以修正引數M_A、 M_B,起到反饋的作用。
相關文章
- 廣義智慧集理論實踐——智慧元構建
- 廣義智慧集思路構建
- 廣義智慧集基本定義公式公式
- 廣義智慧集能做什麼?
- TKE 叢集組建最佳實踐
- Kubernetes 叢集升級指南:從理論到實踐
- 集團商務智慧建設探討
- 【智慧製造】首鋼智造的理論探索與實踐
- Flutter 自定義 Widget(理論+實踐)Flutter
- 核心概念——智慧元與智慧集
- redis 叢集構建Redis
- 通過人工智慧構建智慧集錦服務在央視世界盃期間的應用人工智慧
- 滴滴 Elasticsearch 多叢集架構實踐Elasticsearch架構
- 集體智慧導言
- 如何構建自定義人臉識別資料集
- 福建石化集團:踐行數字福建 建設智慧工廠 | 愛分析精選
- 三層架構--理論與實踐架構
- 構建MHA實現MySQL高可用叢集架構MySql架構
- 談理論與實踐
- Docker構建redis叢集環境DockerRedis
- 在智慧工廠建設中,資料採集閘道器可以實現哪些功能?
- Docker Swarm 叢集搭建實踐DockerSwarm
- influxDB叢集模式實踐UX模式
- RabbitMQ叢集運維實踐MQ運維
- 構建真“智慧”的智慧社群解決方案
- 長水教育集團:智慧教育體系下的「資訊保安」建設
- 集體智慧程式設計-原始碼程式設計原始碼
- AI人工智慧專業詞彙集AI人工智慧
- vivo 容器叢集監控系統架構與實踐架構
- 信創雲安全建設實踐|構建更加智慧、安全的政務雲服務體系
- Gradle理論與實踐四:自定義Gradle外掛Gradle
- 【帶權並查集】理論和應用並查集
- 程式集載入與反射(一):理論篇反射
- 智慧安全3.0實踐 | 中臺賦能安全建設
- 嚴建兵 | 玉米基因組育種的理論與實踐
- 智慧客服API最佳實踐—智慧物流客服API
- 宜信智慧監控平臺建設實踐|分享實錄
- Mac 下 利用 docker 構建 MySQL 叢集MacDockerMySql