老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

使用python如何實現粒子群算法-創新互聯

使用python如何實現粒子群算法?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

創新互聯主打移動網站、成都網站建設、網站設計、網站改版、網絡推廣、網站維護、域名注冊、等互聯網信息服務,為各行業提供服務。在技術實力的保障下,我們為客戶承諾穩定,放心的服務,根據網站的內容與功能再決定采用什么樣的設計。最后,要實現符合網站需求的內容、功能與設計,我們還會規劃穩定安全的技術方案做保障。

粒子群算法

粒子群算法源于復雜適應系統(Complex Adaptive System,CAS)。CAS理論于1994年正式提出,CAS中的成員稱為主體。比如研究鳥群系統,每個鳥在這個系統中就稱為主體。主體有適應性,它能夠與環境及其他的主體進行交流,并且根據交流的過程“學習”或“積累經驗”改變自身結構與行為。整個系統的演變或進化包括:新層次的產生(小鳥的出生);分化和多樣性的出現(鳥群中的鳥分成許多小的群);新的主題的出現(鳥尋找食物過程中,不斷發現新的食物)。

PSO初始化為一群隨機粒子(隨機解)。然后通過迭代找到最優解。在每一次的迭代中,粒子通過跟蹤兩個“極值”(pbest,gbest)來更新自己。
在找到這兩個最優值后,粒子通過下面的公式來更新自己的速度和位置。

使用python如何實現粒子群算法

使用python如何實現粒子群算法

i 表示第 i 個粒子, d 表示粒子的第 d 個維度。r1, r2 表示兩個位于 [0, 1] 的隨機數(對于一個粒子的不同維度,r1, r2 的值不同)。pbest[i] 是指粒子取得最高(低)適應度時的位置,gbest[i] 指的是整個系統取得最高(低)適應度時的位置。

實踐

我們用 PSO 算法求解如下函數的最小值

使用python如何實現粒子群算法

可以在空間畫出圖像

使用python如何實現粒子群算法

下圖是使用 5 個粒子的收斂情況

使用python如何實現粒子群算法

可以看到,fitness 在第 12 輪就幾乎收斂到 -10.0。

下面是完整代碼

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


INF = 1e5

def plot_cost_func():
  """畫出適應度函數"""
  fig = plt.figure()
  ax = Axes3D(fig)
  X = np.arange(-4, 4, 0.25)
  Y = np.arange(-4, 4, 0.25)
  X, Y = np.meshgrid(X, Y)
  Z = (X**2 + Y**2) - 10
  ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
  plt.show()

def fitness(x):
  return x[0]**2 + x[1]**2 - 10

class PSOSolver(object):
  def __init__(self, n_iter, weight=0.5, c1=2, c2=2, n_particle=5):
    self.n_iter = n_iter
    self.weight = weight
    self.c1 = c1
    self.c2 = c2
    self.n_particle = n_particle
    self.gbest = np.random.rand(2)
    # gbest 對應的函數值
    self.gbest_fit = fitness(self.gbest)
    # 將位置初始化到 [-5, 5]
    self.location = 10 * np.random.rand(n_particle, 2) - 5
    # 將速度初始化到 [-1, 1]
    self.velocity = 2 * np.random.rand(n_particle, 2) - 1
    self.pbest_fit = np.tile(INF, n_particle)
    self.pbest = np.zeros((n_particle, 2))
    # 記錄每一步的最優值
    self.best_fitness = []
  
  def new_velocity(self, i):
    r = np.random.rand(2, 2)
    v = self.velocity[i]
    x = self.location[i]
    pbest = self.pbest[i]
    return self.weight * v + self.c1 * r[0] * (pbest - x) + \
        self.c2 * r[1] * (self.gbest - x)

  def solve(self):
    for it in range(self.n_iter):
      for i in range(self.n_particle):
        v = self.new_velocity(i)
        x = self.location[i] + v
        fit_i = fitness(x)
        if fit_i < self.pbest_fit[i]:
          self.pbest_fit[i] = fit_i
          self.pbest[i] = x
          if fit_i < self.gbest_fit:
            self.gbest_fit = fit_i
            self.gbest = x
        self.velocity[i] = v
        self.location[i] = x
      self.best_fitness.append(self.gbest_fit)

  
if __name__ == '__main__':
  plot_cost_func()
  n_iter = 20
  s = PSOSolver(n_iter)
  s.solve()
  print(s.gbest_fit)
  plt.title("Fitness Curve")
  plt.xlabel("iter")
  plt.ylabel("fitness")
  plt.plot(np.arange(n_iter), np.array(s.best_fitness))
  plt.show()

名稱欄目:使用python如何實現粒子群算法-創新互聯
URL分享:http://www.xueling.net.cn/article/djiooj.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 91se在线| a毛片在线观看 | 黄a大片 | 国产成人亚洲综合一区 | 西欧FREE性满足HD老熟妇 | 亚洲日本久久 | 欧美国产伦久久久久久 | 色噜噜品一区二区三区孕妇 | 少妇AAA级久久久无码精品片 | 奇米7777狠狠狠琪琪视频 | 欧美牲交a欧美牲交aⅴ一 | 一本一本久久a久久精品国产 | 92福利视频1000免费 | 日韩a级毛片免费观看久久 国产一级网站视频在线 | 亚洲精品一区二区三区精品 | 国内精品久久久久影院优 | 日本午夜免费视频 | 日本三级免费片 | 欧美性猛交╳XXX富婆 | 99亚洲 | 亚洲精品99久久久久久 | 日本美国大片免费视频播放器 | 网站啪啪 | WWW.AV天堂.COM| 成人网站网址在线观看播放 | 久久视频免费看 | 性爱在线免费视频 | 色资源AV中文无码先锋 | 日韩欧美一级大片 | 久久午夜视频 | AV不卡在线永久免费观看 | 亚洲国产综合人成综合网站 | 欧美不卡在线观看一区 | a视频免费观看 | 国产成人拍精品视频午夜网站 | 国产精品成人免费视频 | 另类zoofilia杂交videos | 亚洲精品久久久9婷婷中文字幕 | 性色av一区太久av19 | 一级毛片免费完整视频 | 国产在线精品一区二区不卡了 |