運用模糊集理論和比例原則模擬小車剎車

運用模糊集理論和比例原則模擬小車剎車

模糊理論、 高斯型隸屬函數、模糊集這些之前的文章已經說明過了。

已知小車速度和離危險距離,使用高斯型隸屬函數求得模糊集合,進行乘法運算,運用比例原則進而推導出小車應設的阻力。
這是目前要解決的問題。

分析

假設一輛行駛速度爲v米/秒的汽車前方d米有一個障礙物,設阻力爲速度的程度和距離的程度的聯合,設計並求出該聯合。

①劃分v、d的程度區間,這裏只是假設,就將它們都劃分成(0, 50, 100)三個程度;
②在v和d區間內隨機地產生一定數量的隨機數x, y;
③使用高斯型隸屬函數,求得v,d各自的模糊集X, Y;
在這裏插入圖片描述
④將兩個模糊集相乘,得到三維矢量集:Z = X + Y;
也就是下面這張圖:
在這裏插入圖片描述
⑤設置比例原則的規則,這裏通過經驗按照原設計設置了下面9個規則:

在這裏插入圖片描述
⑥按照比例原則公式進行小車阻力推理演算

在這裏插入圖片描述
⑦先展示一下上面思路的最終效果:
在這裏插入圖片描述

⑧思路的結果與高斯隸屬函數設置的σ有關,如果增加σ的值的話,則會得到:
在這裏插入圖片描述

實現

# python-模糊數乘積運算
# coding: utf-8
import numpy as np
import matplotlib.pyplot as plt
import math
import mpl_toolkits.mplot3d
def GMF(x, y,c1, c2):
    return np.exp(((x - c1) ** 2 + (y - c2) ** 2) / (-2 * 24 ** 2))
hc = [ 50, 25,  5,
       75, 50, 25,
      100, 75, 50]
v = [0,50,100]
d = [0,50,100]
x, y = np.mgrid[0:100:500j, 0:100:500j]
z = [0]*500
for i in range(0,3):
    for j in range(0,3):
        n = GMF(x, y, v[i], d[j]) * hc[i * 3 + j]
        z = z + n

ax = plt.subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='rainbow', alpha=1)
ax.invert_xaxis()
ax.set_xlabel('v')
ax.set_ylabel('d')
ax.set_zlabel('stop')
plt.grid(True)
plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章