原创 poj 1050 To the Max (從O(N^6)到O(N^3))

題目大意: 求一個矩陣中的一個子矩陣,使得該子矩陣的所有元素的和最大,求出那個和。 解題思路: 最暴力的想法:枚舉子矩陣的起點和終點,O(N^4),對於每個子矩陣,求和,又是一個O(N^2) 對於N=100,N^6的複雜度太高。 我們可以

原创 Java調用CPLEX解決TSP問題(基於constraint generation模型)

constraint generation 約束生成方法(不知道我翻譯得對不對)在網上資料相對較少,中文的資料更少。 因爲傳統的DFJ模型解決TSP問題需要求解指數級別的子集,因此constraint generation顯得十分必要(就

原创 poj 1243 One Person(dp,記憶化搜索)

題目大意: 有一個人在猜數字,總共有G次猜測機會,L次猜高的機會。問他能夠猜對的最大數字是什麼。 如果猜錯,那麼G-1,如果是猜高了,那麼需要額外L-1,當猜對或者G<0或者L<0的時候,猜測結束。 一開始把題目理解成:猜低,G-1,猜高

原创 CSDN有點噁心,我要轉移陣地了

要不是今天有個小夥伴加我QQ向我要資源,我根本不會發現我原先傳到“我的資源”的材料被CSDN悄咪咪的換成了廣告。我傳到CSDN一來是想分享給大家,可以互相交流學習,二來也算是給自己一個備份。 可惡的CSDN,看我那份材料下載的人,就把積分

原创 淺析constraint generation(約束生成,行生成)和column generation(列生成)

這篇博文主要是想記錄一下我這幾天的工作心得。鑑於網上關於constraint generation和column generation的中文資料相對較少,希望這篇博文也能幫助像我一樣的新學者。 首先,是我對constraint gener

原创 Java調用CPLEX解決TSP問題(基於DFJ模型)

DFJ模型易於理解,可拓展性強,但純DFJ模型需要一次性求解節點的所有子集,需要用到回溯法,相對效率較低。當節點爲n時,所需的子集合規模達2^n-2n-2個,具有指數級別複雜度。當節點個數爲101個時,基本卡着不動了。 下面是Java調用

原创 Java調用CPLEX解決TSP問題(基於MTZ模型)

MTZ模型理解簡單,編碼簡單,但是對於解決規模較大的問題複雜度較大。我在計算TSP問題時,101個點大概需要15分鐘,120個點大概需要2個小時,再往上就沒有試過了。 現把對應代碼存檔於此。值得注意的是約束3中ui和uj不能只添加一個。

原创 遞歸求解一個集合的所有子集(TSP的DFJ模型)

在求解TSP時,DFJ模型需要求得節點的所有大於等於2小於等於n-2的子集。若TSP有5個節點,分別爲1,2,3,4,5 則它對應的需要求解的子集爲{1,2}{1,3}{1,4}{1,5}{2,3}{2,4}{2,5}{3,4}{3,5}

原创 ILOG CPLEX 部分語法彙總

從兩天前開始接觸CPLEX的OPL語言,各種錯誤不斷,但網上參考資料又很少。本博文基於自己的摸索,彙總部分基礎語法,以備不時之需。以TSP爲例。 關鍵詞 range 表示一個範圍,使用範例:range city=0..CityNum-1;

原创 ILOG CPLEX Optimization Studio 編寫 TSP問題 (2)

基於子集的求解方式詳見我的另一篇博文:https://blog.csdn.net/u011561033/article/details/93380842 由於子集S在程序中不好表示,並且隨着TSP模型增大,S的規模呈指數級上升,因此,本博

原创 旅行商問題(TSP)的兩種模型

TSP簡介 一個商人從一點出發,經過所有點後返回原點。它需要滿足:除起點和終點外,所有點當且僅當經過一次;起點與終點重合;所有點構成一個連通圖。要求:得到這個商人經過所有點的最短路程。 TSP模型表示 設x[i][j]是一個0-1變量,其

原创 ILOG CPLEX Optimization Studio 編寫 TSP問題

網上關於IBM的ILOG CPLEX Optimization Studio的使用非常少,給自己的編程帶來了不少的麻煩。下面是我用OPL編程語言編寫的第一個TSP程序。以TSPlib中gr17.tsp爲例。TSP問題中子集的表示比較麻煩,

原创 CPLEX運行出錯-OPL標記問題

問題描述: 前面的亂碼看不懂,大概意思是找不到對應的路徑。開始我以爲是路徑中包含中文的關係,我新建了項目,把路徑都設置成了英文,但還是出現這個問題。原因出在項目中“運行配置”文件夾下的文件是中文的原因。就是下圖框出來的地方。 把它改成

原创 Mathtype部分數學符號不能顯示,只能顯示方框時的解決辦法

解決方法:打開C:\WINDOWS\Fonts,若裏面有MT Extra(TrueType)字體或其快捷方式,則將其刪除,再把MathType安裝目錄下\MathType 6.0\Fonts\TrueType\目錄裏面的MTEXTRA.T

原创 淺析超啓發式算法(hyper heuristic)

在介紹超啓發式算法前,先來簡單聊一聊啓發式算法。爲解決NP難問題(精確求解非常困難,但驗證結果十分簡單,例如旅行商問題就是一個典型的NP難問題),啓發式算法應運而生。據我所知,啓發式算法中有基於種羣的遺傳算法GA、生物地理學算法BBO;有