如何在工程實踐中簡單地體驗一把AlphaGo般的智慧?

雖然你可能暫時擁有不了像AlphaGo這樣的超級大神器,但是有些工具還是能讓你簡單體驗一下被計算機智慧「打敗」的感覺,並且很幸運的是,你可以輕鬆使用這樣的智慧到你的工程實踐中。

第一次見識到計算機智慧可以「打敗」人時是很久之前的事了。那時我還在讀大學,雖然學的是機械設計,但一直喜歡搗鼓編程,熱衷開發些小程序。有一次上專業課,老師談到了一個設計難題:四連桿變幅起重機中的四連桿參數如何確定。為什麼難呢?請各位先看下圖:

這是一個典型的四連桿機構,也是鶴形起重機的變幅機構(大家看它的樣子是不是挺像仙鶴的呢),紫色的那根連桿的端點在整個變幅的過程中划出一道美麗的弧線(圖中白色線),這就是起重機吊重物體的移動軌跡,大家看這條弧線可能覺得還挺直的,我們來看下精確計算的放大圖。

可見最高點和最低點在豎直方向的距離相差了約685mm,我們在實際工程中希望這個值盡量能小一些,為什麼呢?

第一個原因是如果這個數值太大,這就代表起重機在變幅的過程中吊著的物品會有大的起伏,起伏變化大容易造成人的判斷錯誤,這非常的不安全,例如容易因判斷失誤造成吊重砸到人。

第二個原因是吊重物品重量大,如果在水平變幅過程中有過多的上下起伏,屬於做無用功。就好像你提著一桶水要在平地上移動10m,如果你在移動的時候水桶還在上上下下的運動,是不是會感覺更累一些呢,就是這個原理。

總之不管什麼原因吧,當時老師讓大家設計四連桿的參數,使在整個水平移動的距離範圍內,豎直方向的落差範圍從685mm減少到350mm以內,並講解了兩種常用的方法。

第一種方法是傳統的人工的方法--解析法,要繪製大量的圖來找點,並且找出來的點優化效果有限。

另外一種方法就是計算機優化設計方法,把目標函數和約束條件告訴計算機,讓計算機自動找到符合約束條件,目標最優的那個解集。其實AlphaGo的基本原理和這差不多,機器博弈問題的傳統方法是搜索樹法,以下棋為例,機器把下棋過程中的每一步稱為一個應對,目標就是在當前棋局狀態下,選擇最優的應對方案。難就難在應對太多,以目前的計算機能力,無法逐一枚舉地計算,於是就需要計算機演算法來實現,比如黃金分割法、遺傳演算法等。四連桿的這個例子表面看起來比較簡單,其實涉及到的設計變數和約束條件很多,且有許多非線性約束,用計算機優化設計方法求解也有一定難度。

在後來交作業的時候,有不少同學採用了人工的解析法,效果不太理想,有的則在網上找一些vc、vb編程的遺傳演算法工具,進行適應性修改後使用。因為我自學過matlab,所以當時就想幹嘛不用它的優化工具箱呢,用其中的fmincon函數能很方便地進行非線性約束的最優化問題求解。於是我把豎直高度差的約束條件設置為小於350mm,優化目標是機構整體的預估重量(和成本息息相關),優化計算後相關參數和部分迭代過程如下圖。

再看水平高度曲線經過優化變成了下圖這樣,高度差約為350mm,高度差和重量預估值都優於原始方案。

現在看來當時做這個大作業雖然遇到了不少困難,但讓我認識到了計算機在工程設計中超越人的智慧,也為我今後使用最優化設計到工程實踐中打下了良好基礎。

後來參加工作,碰到了一個類似的問題,當時看一台設計機型可以有優化的空間,就用matlab計算了一下,然後畫了一個點位布置草圖和單位的一位老工程師討論,他凝神看了幾分鐘,說了句:設計了這麼多台這個型號的,沒想到還可以這樣布置。是不是有點像看了AlphaGo的招數後說圍棋還可以這樣下?我覺得「人工智慧」一個重要的作用,就是幫助我們跳出那些固定思維,擁有看問題的新的視角和別樣的理解。後來那位工程師又給我提了一些建議,指出其中的一些不符合工程實踐的地方,比如有個距離設置的過短了,人在維修的時候需要站在平台上,如果太短了顯然不行。再後來我給程序又增加了一些約束條件,還申報了一個項目,這是我參加工作以來第一個擔任項目負責人的項目,雖然屬於小項目,但當時還是挺自豪的。我覺得這是人的智慧經驗和機器智慧結合的典型例子,如果光憑我一個人,雖然熟悉優化程序編程,但如果沒有經驗豐富的工程師告訴我這些約束條件和他們憑藉多年經驗掌握的參數選取範圍,做出來的東西顯然無法應用到真正的工程實踐里,只能是紙上談兵的優化。

今年7月8日,國務院發布《新一代人工智慧發展規劃》,明確提出到2030年我國的人工智慧理論、技術與應用總體達到世界領先水平,使得新一代人工智慧在智能製造、智能醫療、智慧城市、智能農業、國防建設等領域得到廣泛應用。可見現在國家對人工智慧的重視程度。雖然對於我們普通工程人員,都去研究開發如AlphaGo這樣的人工智慧顯然不太現實,但學會使用一些基礎的幫助我們改進工程設計的人工智慧工具還是很有必要的,時代的浪潮不停歇地向前奔跑,幾乎可以肯定地說計算機智能設計必將成為不久未來的設計主旋律。還沒有開始了解智能設計的童鞋不妨從學習matlab優化工具箱開始,建議可以看下龔純編著的《精通MATLAB最優化計算》入門,或者光臨下我的live用 matlab 優化你的工程設計-入門。

我的相關live:

1、 用 matlab 優化你的工程設計-入門(對於我們大多數工程設計人員,可能無法精通各種優化演算法或者自己編程做一個優化程序,但幸運的是, matlab 提供了一個強大的優化工具箱,能用好這個工具箱就可以幫助你輕鬆進行產品優化設計,我在多年的工程實踐中也多次應用該工具箱改進過許多產品,深感其魅力無限。本 live 的目的就是幫你入門學習使用 matlab 優化工具箱,面向對象是那些還未學習過 matlab 優化的學生和工程人員)

2、教你認識機械工程師的工作(我現在學的將來在我的工作中究竟能派上什麼用場?如何選擇專業方向?我畢業後是去設計院還是國企製造單位,他們都有什麼不同?我如何在機械類面試中取勝?--有些朋友聽了以後反映講的比較基礎,確實是這樣,當初開這個live的初衷主要面向對象就是還未畢業的大學生,也是第一次講live,許多都不能照顧周全,還請見諒?)

推薦閱讀:

關於網站優化進行的好與不好究竟有哪些不同?
【優化演算法】一文搞懂RMSProp優化演算法
Advanced SystemCare—一款當前最流行的電腦優化軟
一些應用領域看到的問題

TAG:優化 | 機械設計 | MATLAB |