如何優雅地使用gams、matlab、AIMMS、LINGO?


曾經年少的我,不僅想精通MATLAB,Mathematica, Maple,還想精通C++, Pascal和Fortran等幾門計算機語言。但這是不現實的。

首先,我說的這三個數學軟體功能上基本差不多,只是強弱不同,完全沒有必要全都掌握。其次,題主所說的幾個軟體功能上也有重疊的部分。你只需要選擇最適合你的,或者功能最強大的就夠了。

因為,人的時間和精力是有限的。用相同的時間去學5個軟體,不如用來精通一個軟體。達到足夠的精深和熟練之後,可以適當嘗試其他軟體,在使用方便性、功能性、計算速度上有個比較,針對具體問題的特點選用最適合的軟體即可。

對我來說,我的專業用MATLAB就不是太多,在最優化方面我的專業幾乎很少做連續的優化,通常都是離散的優化,主要是整數規劃,所以我用LINGO,GLPK比較多,在學習MATLAB的過程中,我要求自己盡量熟練掌握基礎內容,所以在矩陣操作和各種基本運算符特別是當運算對象是向量或矩陣時的運算規則做了不少練習,然後學習了一下linprog函數和intlinprog函數的用法,就基本夠用了。誰也不能精通MATLAB的方方面面。熟悉了基礎操作,將來遇到某個方面的問題,可以保證自己能夠很快理解並深入掌握就行了。比如我要求解指派問題,運輸問題,用半天就寫出了一個通用的M函數,用起來比LINGO還方便些。再比如需要一個灰色預測的程序,在網上找一個程序,基本看懂,修改修改能用就好。

學海無涯而生命有限,所以想把什麼都學會是不現實的。我的原則是根據專業精通一兩種行業內最好的軟體,其他的遇到問題再根據情況,需要什麼再學什麼。只要基礎紮實,學會MATLAB當中不熟悉的功能也非常快。


以上幾個說到底都是程序語言...GAMS 和Matlab用的比較多,AIMMS只是接觸過,LINGO就沒用過了...拿GAMS說吧,其他的也能做到類似的效果...

在Windows下GAMS是由GUI界面的,不過這個界面是無論如何都談不上優雅的...Matlab 稍微好點平時一般也不寫太多Matlab代碼,也就忍了...

如何把GAMS做到優雅...答案是使用一個性感的編輯器——Sublime

首先,你得有Sublime,推薦使用穩定版的Sublime Text 2,官方網站:Sublime Text: The text editor you"ll fall in love with 就能下載到。Sublime的其他種種好處我就不贅述了,誰用誰知道。

這裡使用了lolow對windows下的GAMS 開發的Sublime package,項目託管在Github上:lolow/sublime-gams 路 GitHub ,該項目集成了GAMS的代碼高亮,編譯執行等功能!

要使用這個package,在安裝好Sublime以後,需要安裝Package Control組件:

  1. 按 Ctrl+` 調出console

  2. 粘貼以下代碼到底部命令行並回車:

    import urllib2,os;pf="Package Control.sublime-package";ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),"wb").write(urllib2.urlopen("http://sublime.wbond.net/"+pf.replace(" ","%20")).read())

  3. 重啟Sublime Text 2。

  4. 如果在Perferences-&>package settings中看到package control這一項,說明你安裝成功了...

然後使用Package Control 安裝GAMS的Package

  1. 按下Ctrl+Shift+P調出命令面板

  2. 輸入install 調出 Install Package 選項並回車。

  3. 輸入GAMS回車安裝,一會就能安裝好。

接著需要打開包文件夾配置GAMS路徑:

找到Gams.sublime-build文件,用Sublime打開,找到 "path": "", 這一行

然後把你的GAMS安裝目錄複製進去!如下圖11行所示:

MAC電腦需要檢查圖中第20行末尾是否有逗號,有的話要去掉,不然會出錯。

這時候打開gms文件,代碼高亮也有了,最為關鍵的是: 按下 command + b 程序就會調用GAMS執行,下方會有執行步驟回顯。最後,按下control + shift + g 就能隨時在 gms 文件和 lst 文件之間進行切換...


別瞎折騰,忘了matlab學習的初衷


當然是在網吧使用MATLAB啦


推薦閱讀:

matlab中能夠產生4個任意不同數字的命令或者說代碼是什麼。我是初學者,自學,網上也查不到,希望大家幫幫忙?
如何優雅地使用Matlab?
為什麼說 MATLAB 快?
把大圖裡面的漢字分割成每一個小圖?
simulink中如何輸出兩個上升沿之間的時間差?或記住某一時刻。用s函數么。請見下面詳細描述,謝謝

TAG:MATLAB | lingo | 如何優雅地X |