重新發明輪子:用PyTorch發現最佳的滾動形狀
知識
06-01
人們普遍認為輪子是五千多年前發明的,然而現代機器學習工具則只是在過去幾十年才發展起來的。在某種程度上,我們都對這個悖論感到困惑。沒有現代的計算機和軟體,古代蘇美爾人的車輪製造者是怎樣計算出理想的形狀呢? 我們可能永遠不會知道。幸運的是,以今天的技術,重新發現車輪的最佳形狀是相對容易的。我來告訴你我是怎麼做的。
這個愚蠢的項目的目標是找到一個輪子的最佳形狀,很可能是一個圓。我把輪子參數化為一個20邊的多邊形,每個頂點的半徑都是可變的,用 ri 表示。輪子的性能是基於一個加速的虛擬汽車所達到的最終速度,用vf表示。輪子由一個恆定轉矩驅動,用T 表示,沒有滑動。我使用PyTorch來模擬一個輪子的效果,並計算最終速度相對於半徑的梯度,即dvf /dri 。我使用這些梯度通過梯度下降演算法來更新半徑。在上面,你可以看到一個最初隨機生成的輪子的形狀,這個輪子隨著目標函數的不斷變化而進化。
我使用了一個相對簡單的模型來表示車輪。在每一次的時間步長中,我根據車輪的作用力來更新汽車的速度,然後根據速度來旋轉車輪。車輪的最低頂點與地面接觸時車輪被固定在空中。車輪會在汽車上產生一個力T/r i , 其中,ri,是最低頂點的半徑。這個力的一個分量,如下圖所示,使汽車加速並增加了速度。
接下來,我認為嘗試一下表面不平整的形狀會很有趣。如果我用正方形作為滾動的初始值,那最理想的形狀會是正方形嗎?
英文原文:http://blog.benwiener.com/programming/2019/04/29/reinventing-the-wheel.html
譯者:測試


TAG:Python部落 |