一,簡介
鳳岡網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。退火算法不言而喻,就是鋼鐵在淬煉過程中失溫而成穩(wěn)定態(tài)時的過程,熱力學上溫度(內(nèi)能)越高原子態(tài)越不穩(wěn)定,而溫度有一個向低溫區(qū)輻射降溫的物理過程,當物質(zhì)內(nèi)能不再降低時候該物質(zhì)原子態(tài)逐漸成為穩(wěn)定有序態(tài),這對我們從隨機復雜問題中找出最優(yōu)解有一定借鑒意義,將這個過程化為算法,具體參見其他資料。
二,計算方程
我們所要計算的方程是f(x) = (x - 2) * (x + 3) * (x + 8) * (x - 9),是一個一元四次方程,我們稱為高次方程,當然這個函數(shù)的開口是向上的,那么在一個無限長的區(qū)間內(nèi)我們可能找不出大值點,因此我們嘗試在較短區(qū)間內(nèi)解最小值點,我們成為最優(yōu)解。
解法1:
毫無疑問,數(shù)學方法多次求導基本可以解出,但是這個過程較復雜,還容易算錯,我就不贅述了,讀者有時間自己可以嘗試解一下。
解法二:
這個解法就是暴力解決了,我們這里只求解區(qū)間[-10,10]上的最優(yōu)解,直接隨機200個點,再除以10(這樣可以得到非整數(shù)橫坐標),再依此計算其縱坐標f(x),min{f(x)}一下,用list的index方法找出最小值對應(yīng)位置就行了,然后畫出圖形大致瞄一瞄。
直接貼代碼:
import random import matplotlib.pyplot as plt list_x = [] # for i in range(1): # #print(random.randint(0,100)) # for i in range(0,100): # print("sss",i) # # list_x.append(random.randint(0,100)) for i in range(-100,100): list_x.append(i/10) print("橫坐標為:",list_x) print(len(list_x)) list_y = [] for x in list_x: # print(x) #y = x*x*x - 60*x*x -4*x +6 y = (x - 2) * (x + 3) * (x + 8) * (x - 9) list_y.append(y) print("縱坐標為:",list_y) #經(jīng)驗證,這里算出來的結(jié)果6.5和最優(yōu)解1549都是對的 print("最小值為:",min(list_y)) num = min(list_y) print("最優(yōu)解:",list_y.index(num)/10) print("第",list_y.index(num)/10-10,"個位置取得最小值") plt.plot(list_x, list_y, label='NM') #plt.plot(x2, y2, label='Second Line') plt.xlabel('X') #橫坐標標題 plt.ylabel('Y') #縱坐標標題 #plt.title('Interesting Graph\nCheck it out',loc="right") #圖像標題 #plt.title('Interesting Graph\nCheck it out') plt.legend() #顯示Fisrt Line和Second Line(label)的設(shè)置 plt.savefig('C:/Users/zhengyong/Desktop/1.png') plt.show()