魔方機器人的心路歷程連載(Part11-再談算法)

2021-02-06 魔方機器人

在整個魔方機器人的設計過程,經歷了反反覆覆的驗證和推倒重來,最終呈現出來的樣子,遠不是最開始設計的樣子。這是由於創作過程中,我們學到更多新的技能,摸索到更多提升的方向,同時走出了原有的思維定勢。

正因為如此,我嘗試整理一下整個設計和製造歷程,供大家參考。希望大家參考思維方式,提升自己的思維模型,並不建議大家直接參考設計,因為設計本身還存在很多不合理的地方,因此在文中和文外並不提供設計原檔。

如果你還沒讀過上一篇的話,因為內容之間的強關聯性,強烈建議先閱讀:

魔方機器人的心路歷程連載(Part10-伺服)

上一章提到,我們伺服器的執行速度相比 Kollmorgen 的電機相比還是有相當的差距,希望單純從伺服速度的提升,超越MIT的成績還是有相當困難的。但如果成績遠比MIT的慢的話,咱們就產生不了新聞價值了,有可能就導致前功盡棄了。這可如何是好呢?

機械上嘗試各種搶時間的方法,做最後的掙扎,希望還能擠出一點性能處理,但最終還是收效甚微,甚至影響穩定性。一籌莫展之際,只能通過觀察分析競品視頻來擴展下思路。

無意中,發現英飛凌的Sub1 Reload視頻中魔方還原的步驟好像與平常算法結果不太一樣。居然在20步的還原步驟中,出現了其中5步是兩個相對的面一起旋轉的。這個現象非常有意思,因為前面做過數千萬次級別的測試,kociemba的算法本身並沒有為這個方面做優化,大部分情況下最多只能有0~3個雙面轉,出現4個雙面轉的序列已經是少概率事件,能出現5個雙面轉的序列可謂是百裡挑一。為確認,我專門做了個隨機分布統計:

數百萬次的對轉比例

考慮到英飛凌申請吉尼斯紀錄,不太可能錄數百次視頻,然後取其中最好的情況來錄入成績。所以把他們視頻中的還原序列逆向,將一個已還原的魔方還原到英飛凌創造吉尼斯紀錄的魔方打亂狀態,然後將該狀態丟進所有kociemba公開工具中,測試能不能得到同樣的還原序列。結果不出所料,確實得不到一樣的還原序列。

這說明了一個問題,他們一定是針對二階段算法進行了對應的優化而得到的結果。那到底怎麼實現優化呢?

於是,深入研究了二階段算法(Two Phase Algorithm),分析算法整個基本邏輯,算法流程,以及每個階段的推演依據以及結束條件判斷,經過了一周的潛心鑽研,最終發現確實有優化空間;

首先需要了解算法本身設計的緣由,最主要是為了驗證魔方的上帝之數:是否所有魔方狀態都能在20步以內還原。算法的目的並非找到機器人的最優解,因為魔方狀態簡直是天文數字。

為了查找這個問題,動用了谷歌的超級計算機資源,花了幾周時間,貢獻出35個CPU年,才給找到所有通過群論降群後魔方狀態的解。因此,算法設計的目的其實是為了在最短運行時間內找到解,而並非找到機械執行時間最短的解。

對於同一個魔方狀態,解法一定不是唯一的,就像人手還原,以不同顏色為底面,都可以將魔方還原,所以二階段算法的解也一定不是唯一的。

到此咱們清晰了需求,那就開幹吧,首先放開結束條件的限制,先從求解的結果分析。運行驗證確實如咱們所料,算法不停地輸出可復原的解,延綿不斷,運行了兩天還沒有停下來的欲望。

確認了可以得到非常龐大的解集,也許可以從解集中找到適合咱們機器人的方法。不過需要一個估計算法,基於咱們機器人兩個相對的面可以同時旋轉,意味著雖然做了兩個機械旋轉的步驟,但機械運轉時間只消耗了一次。所以初步最簡單的估算算法就是判斷如果出現一次相對面同時旋轉,只記為一次機械運動(mechanic move)。上圖中可以看到其中有跳動的情況,就是發現了相同魔方狀態下,比較短的還原序列。

所以咱們尋找目標並非最終序列最短,而是機械動作最短;比如說還原序列需要19步,對應機械步數19步,而另一個還原序列需要21步,但對應機械步數隻要18步,則最終會挑選21步的還原序列,物理還原時間更短。

到此,咱們的思路就非常清晰了,只要把結束條件更換為找到最短的機械還原步數就好了,就可以囖。

從上圖可以看到算法找到最優解的過程,關鍵信息整理如下表:

時間
序列步驟計數機械步驟計數
5ms
211712ms21
1924ms
20
15
36ms
18
16
2612ms
15
13
4183ms
15
136604ms
15
13

但到底13步機械是否最短?咱們不清楚,算法仍一直往下搜索,也許過一天後會找到12步機械解。

雖然算法確實能夠延綿不斷的輸出解,但想要枚舉完所有的解,以咱們電腦性能,可能需要按年做單位,咱們希望找到最短的序列是不太可能的。同時,我們機器人計算時間也包含在整個還原時間內,所以不可能在這個階段耗費大量的時間進行搜索,咱們需要做出一定的取捨。

我們必須限制在一定時間內,如果找不到更短的解,就採用該時間段內能找到的最短解,但如果該時間段內沒有找到解,則等找到第一個解就立馬返回。雖然說這樣做能夠保證算法時間的耗用,但搜索步驟比較短的解法的耗時長的情況下,優化程度不大,還需要另闢蹊徑。

咱們前面在 魔方機器人的心路歷程連載(Part4-魔方算法) 文中提到過,第一層有18種旋轉,後面每層都有15種可能性,層數越深,運行時間越長;所以如果能夠縮少層數,將有可能大幅縮短搜索時間。

但如何縮少層數呢?我們知道第一步是針對6個面實現每個面3種旋轉,而如果我們針對每個可能性開啟一條線程,則對於每個線程來說,第一層都是確定的,等同於枚舉層級少了一層。對於6個面來說就有18種可能性,意味著需要開啟18條線程進行搜索。這對於當代 Intel i9,8核16線程的CPU,處理起來都不成問題。

但是固定一層對於最終成績的提升有多大提升?有時候能提升一兩個數量級,因為可能有的面先旋轉會更快得到最短解;但有時候提升效果不太明顯,因為藏在第二層比較深的情況。

為此,喪心病狂的我,嘗試將第二層甚至第三層都固定下來,但這意味著需要開啟 (二層)270,甚至(三層)4050條線程共同工作。可物理CPU核心是有限的,開再多的線程,也只能是分開時間片段來跑,對最終成績的提升非常有限;甚至有時候比開啟18條線程時間還要長,因為資源調度同步耗時非常嚴重,導致大量時間浪費在同步和競爭CPU資源上。

對於非伺服器CPU來說,超過了二十條線程需要同時全速跑的情況下,已經開始吃力了,要同時全速跑數百上千條線程簡直是巧婦難為無米之炊。那市面上有沒有什麼東西可以的跑成百上千條線程呢?咱們把目光轉向到顯卡的GPU上,具體如何實現?咱們下回分解~

以上,是製作魔方機器人過程中算法優化相關的內容。還想了解更多魔方機器人的其他製作過程,請多多關注我們公眾號連載系列喔。如果同學們集中留言對某個部分感興趣,後面考慮出個專題喲~

既然讀到這裡了,怎麼忍心不點個呢?

喜歡內容的你,動動手指頭分享一下吧

別忘了關注公眾號,及時收到最新文章喲

使用喜歡作者作為鼓勵也是非常推薦的喲

你們的支持是對我們最大的鼓勵!

如果有疑問歡迎同學們在文章下方留言告訴我,有提議想了解其他方面內容也歡迎留言,新朋友們還不趕緊掃描下方二維碼關注?

未經許可禁止轉載!

延伸閱讀:

魔方機器人心路歷程系列

飛思卡爾回憶專輯

魔方機器人DIY教程系列專輯

[ 種草好物 ] 系列專輯

神馬? 解魔方只要 3 秒?簡直不敢相信我的眼睛!

幕後花絮 : 3秒解魔方機器人的幕後精選

0.337秒就能解魔方!!! Master P 第三代超高速魔方機器人面世 全球最快的魔方機器人

玩魔方居然還要用上超高速相機???

相關焦點

  • 魔方機器人的心路歷程連載(Part12-CUDA入門)
    如果你還沒讀過上一篇的話,因為內容之間的強關聯性,強烈建議先閱讀:魔方機器人的心路歷程連載(Part11-再談算法)上回咱們提到,算法上可以通過預置搜索層,開啟多線程可以實現優化計算時間,在更快時間內得到更短的解法。但CPU內資源有限,不可能無節制地開啟線程,同時全速運行線程過多可能導致調度產生更多的時間消耗使得性能下降嚴重。
  • 魔方機器人的心路歷程連載(Part13-CUDA加速)
    如果你還沒讀過上一篇的話,因為內容之間的強關聯性,強烈建議先閱讀:魔方機器人的心路歷程連載(Part12-CUDA入門)上一章,咱們總算是入門了CUDA加速的編程方法,了解到創建多線程,線程ID的分配,以及將解魔方程序分割為CUDA核函數的思路。
  • 魔方機器人原理解析【第1485期】
    儘管魔方的變化千變萬化 但是現在的機器可以很快實現只要有合適的算法,配上機械裝置,瞬間復原就不是夢。王老師試著解析之前德國的工程師發明的魔方機器人,不是目前最快了,但也很快了。,戰績:0.637秒,於2016年11月9日,該款機器人外觀與運轉動圖如下所示。
  • 心路歷程
    心路歷程                          文/華語微聲
  • 真正的「魔方大師」來了!AI可以在20步內解開魔方
    (2018年4月10日星期二,在美國喬治亞州亞特蘭大市,魔方創作者埃爾諾·魯比克(Erno Rubik)正在籤名。出生於匈牙利的魯比克於1974年創造了這個五彩魔方,據估計,自此魔方在全世界已經售出了4億件。)
  • 項目分享| STM32+樹莓派實現6s解魔方機器人
    色彩信息字符串傳入 Kociemba 算法,通過 Kociemba 算法解算出魔方還原指令,將還原指令通過 HC05 藍牙模組發送至下位機,下位機解析魔方還原指令後執行相應的動作,實現魔方還原。 ◆ 有了硬體後就開幹,主要硬體設計內容 智能解魔方機器人的設計內容還是圍繞上位機設計與下位機設計,確保他們都可以完成各自的工作。在上位機的設計中,難點在於:圖像採集及圖像處理、解魔方算法設計、魔方還原指令的生成。單板計算機主要負責圖像處理、解魔方算法的運行、上位機主程序運行。圖像採集設備主要負責採集魔方的六面的色塊信息。
  • 男人的洗澡心路歷程
    今天刷某某蝦小視頻,看到一個外國小姐姐的洗頭心路歷程,覺得有點意思,不如和大家分享一下中國直男們的洗澡心路歷程吧。首先來說,男人們不愛洗澡,幾乎是一種標杆。比如那一條內褲穿兩個禮拜的「傳說」,之所以在傳說上打引號,那是因為半個月算什麼,一條內褲穿一個學期的室友每個學校都會有。
  • 新曲 王俊凱解讀創作心路歷程 《樹讀》背後的故事
    由淺到深的情緒遞進,再加上觸動人心的歌詞和飽含深情的唱腔,讓人看到了一個更加成熟的王俊凱。而王俊凱也表示,創作這首歌的初衷,就是想要把自己從開始到現在的心路歷程唱給粉絲們聽。王俊凱談《樹讀》當初寫這首歌的初衷,是想記錄自己從開始到現在的心路歷程,然後把它唱給喜歡我的人聽。
  • 黃磊分享多妹滑板摔跤心路歷程 網友紛紛評論
    黃磊分享多妹滑板摔跤心路歷程 網友紛紛評論時間:2020-04-13 11:13   來源:網易娛樂   責任編輯:凌君 川北在線核心提示:原標題:黃磊分享多妹滑板摔跤心路歷程 網友紛紛評論 4月10日,黃磊在微博發文分享小女兒多妹玩滑板的趣事:妹妹玩滑板車摔了一跤,她忍著眼淚沒有掉下來,我表揚她真勇敢,她得意地跟我描述了一下她的心路歷程
  • 《魔方大廈》將推出動畫電影,《家庭教師》作者新作將開始連載
    提起《魔方大廈》這部動畫作品,想必80後的小夥伴一定不會陌生,畢竟他曾經給很多的人留下了嚴重的童年陰影。
  • 聽說,這是薛之謙歌迷今天的心路歷程:
    在本月雙11這天,郭聰明在社交媒體發文透露了他和偶像薛之謙一起籌備新歌的消息。說到他與薛之謙認識的契機,其實是郭聰明從2015年開始成為薛之謙的忠實樂迷兼小迷弟,也翻唱過薛之謙的大量歌曲。此後兩人在短視頻平臺獲得了彼此的聯繫方式,一起拍過視頻,也一同錄製過《火星情報局 第五季》的節目。
  • 機器手自學單手解魔方,模擬訓練「上千年」
    近日據外媒報導,美國通用人工智慧研究組織OpenAI推出了新款Dactyl機械手,集最新的AI算法於一身,通過機器自主學習,實現了「類人」機器人單手解魔方,代表著OpenAI在構建通用型自主學習機器人領域,又邁出了新的一步。
  • 「這不是機會,這是責任.」一位導演的心路歷程
    4.再煥新生——2020年。導演心路歷程第12年 這個月我榮升自己的電影項目的製片人。目前項目的主投方已擬定,啟動資金已談妥。我個人也會投入一部分,我看好這部電影的市場收益。另外,擬參投幾方在等著我遞項目書和看先導片(先導片還沒參賽……我太能捂了,
  • 《暖暖,請多指教》:一段有關愛情的心路歷程
    每部作品當中,往往都有屬於它們自身的人物心路歷程。這些歷程的演繹,很多時候透露出人物角色的性格、品質以及成長等。它們,通常是值得我們觀眾去回味的。其中,最為讓我們觀眾關注的,可以說是男主人公韓徹的愛情心路歷程了。 在某種意義上說,男主人公韓徹的愛情心路歷程,很大程度上代表了這部作品的人物心路歷程演繹。在他的身上,我們往往可以看到那些關於誤會、內疚以及幫助等層面的心靈心境變化過程。誤會 誤會,在許多影視作品裡也會經常被使用到。
  • 全新算法加持,石頭掃地機器人T7更聰明智能
    算法是掃地機器人的技術核心,它是路徑規劃和複雜環境從容應對的關鍵。石頭科技2020年度旗艦產品--石頭掃地機器人T7,就具備石頭科技最新技術成果和最好的用戶體驗。  石頭掃地機器人T7不僅擁有全新的297ml恆壓電控智能水箱、全新多地圖管理4.0以及升級後的2500Pa澎湃吸力,更重要的是,它升級了全新的RR Mason?7.0算法系統。毫不誇張的說,RR Mason?
  • 百度IP魔方對《大主宰》的大數據探秘
    百度IP魔方了解到,天蠶土豆作為玄幻網文界的後起之秀,其名氣隨著作品的熱度逐年攀升,三部作品中《武動乾坤》電視版開機、《鬥破蒼穹》影視版權賣給萬達,正在連載中的《大主宰》也已經籌備影視化,並初步計劃2018年開播。  而小編之所以選擇《大主宰》的原因除了IP自身的發展趨勢優良,最主要的是其漂亮的數據。  下面是小編從百度IP魔方產品收集到的一些數據。
  • 諶龍李雪芮返回母校 暢談奧運心路歷程
    諶龍李雪芮返回母校 暢談奧運心路歷程
  • 金牛座男生變渣的心路歷程
    今天老貓就給大家講講金牛座渣男的心路歷程,他到底如何渣!首先對比純情牛男和渣渣牛男的區別。純情的牛男跟女生接觸女生:咱們是先看電影,還是先吃飯,或者玩遊戲?純情牛男:都行。女生:你覺得這件衣服好看,還是那件衣服好看?純情牛男:都行。女生:親愛的牛牛,我大姨媽來了,怎麼辦?
  • 一個女人由愛到不愛的心路歷程
    一個女人由愛到不愛的心路歷程,其實並不遙遠,有時候只是一瞬間一剎那,只是經歷了一件很簡單的事情,就讓一個女人從愛到不愛。這似乎就是所謂的「壓死駱駝的最後一根稻草。」一個女人從愛到不愛,或許只是一瞬間的事情,但在這之前必然是經過了漫長的積累,和無限的失望,才會讓她霎時心如死灰。
  • 北京國際電影節大師班李安等演講內容 談創作心路歷程
    北京國際電影節大師班李安等演講內容 談創作心路歷程  第十屆北京國際電影節已經進入尾聲,在本屆北影節上,嘉賓雲集的電影節電影大師班,無疑是電影行業從業者與影迷關注的焦點。一直以來,北京國際電影節不僅是影迷們的狂歡,更是國內外電影從業人員的盛大聚會。