數學建模常用Matlab/Lingo/c程式碼總結系列——旅行商TSP問題
Lingo程式碼: MODEL: SETS: CITY / 1.. 6/: U; ! U( I) = sequence no. of city; LINK( CITY, CITY): DIST, ! The distance matrix; X; ! X( I, J) = 1 if we use link I, J; ENDSETS DATA: !Distance matrix, it need not be symmetric; DIST =0 56 35 21 51 60 56 0 21 57 78 70 35 21 0 36 68 68 21 57 36 0 51 61 51 78 68 51 0 13 60 70 68 61 13 0; ENDDATA !The model:Ref. Desrochers & Laporte, OR Letters, Feb. 91; N = @SIZE( CITY); MIN = @SUM( LINK: DIST * X); @FOR( CITY( K): ! It must be entered; @SUM( CITY( I)| I #NE# K: X( I, K)) = 1; ! It must be departed; @SUM( CITY( J)| J #NE# K: X( K, J)) = 1; ! Weak form of the subtour breaking constraints; ! These are not very powerful for large problems; @FOR( CITY( J)| J #GT# 1 #AND# J #NE# K: U( J) >= U( K) + X ( K, J) - ( N - 2) * ( 1 - X( K, J)) + ( N - 3) * X( J, K))); ! Make the X's 0/1; @FOR( LINK: @BIN( X)); ! For the first and last stop we know...; @FOR( CITY( K)| K #GT# 1: U( K) <= N - 1 - ( N - 2) * X( 1, K); U( K) >= 1 + ( N - 2) * X( K, 1)); END
matlab程式碼: function main clc,clear global a % a=zeros(6); % a(1,2)=56;a(1,3)=35;a(1,4)=21;a(1,5)=51;a(1,6)=60; % a(2,3)=21;a(2,4)=57;a(2,5)=78;a(2,6)=70; % a(3,4)=36;a(3,5)=68;a(3,6)=68; a(4,5)=51;a(4,6)=61; % a(5,6)=13; a=a+a'; load cost a=Muti_Cost;%邊權矩陣 L=size(a,1); c1=1:53; %初始圈 [circle,long]=modifycircle(c1,L); c2=[1 53 2:52];%改變初始圈,該演算法的最後一個頂點不動 [circle2,long2]=modifycircle(c2,L); if long2<long long=long2; circle=circle2; end circle,long %******************************************* %修改圈的子函式 %******************************************* function [circle,long]=modifycircle(c1,L); global a flag=1; while flag>0 flag=0; for m=1:L-3 for n=m+2:L-1 if a(c1(m),c1(n))+a(c1(m+1),c1(n+1))<... a(c1(m),c1(m+1))+a(c1(n),c1(n+1)) flag=1; c1(m+1:n)=c1(n:-1:m+1); end end end end long=a(c1(1),c1(L)); for i=1:L-1 long=long+a(c1(i),c1(i+1)); end circle=c1;
相關推薦
數學建模常用Matlab/Lingo/c程式碼總結系列——旅行商TSP問題
Lingo程式碼: MODEL: SETS: CITY / 1.. 6/: U; ! U( I) = sequence no. of city; LINK( CITY, CITY): DIST, ! The distance matri
數學建模常用Matlab/Lingo/c程式碼總結系列——floyd最短路徑
例 9 某公司在六個城市 c1,c2, …c6 中有分公司,從 i ci 到 cj的直接航程票價記在下述矩陣的 (I,j) 位置上。(∞表示無直接航路),請幫助該公司設計一張城市c1 到其它城市間的票價最便宜的路線圖。 clc,clear a=zeros(6
數學建模常用的十大算法
width back 聯系 編程 暴力 以及 美國 劃算 size 數學建模常用的十大算法==轉 (2017-07-16 11:26:14) 轉載▼ 1. 蒙特卡羅算法。該算法又稱隨機性模擬算法,是通過計算機仿真來解決問題的算法,同時可以通過模擬來檢驗自己模型的
關於MATLAB轉C++程式碼(一)
沒時間寫,上圖快一點, 1、寫好主執行檔案,m_18_10_30.m,並且執行 2、單擊MATLAB Coder 3、進入,選擇函式(而不是執行檔案) 4、Next,選擇執行的檔案,m_18_10_30.m 5、''let me enter...'',是開啟
關於MATLAB轉C++程式碼(二)
有一些遇到過的問錯誤提示 一、“The left-hand side has been constrained to be non-complex, but the right-hand side is complex. To correct this problem, make the r
Java常用加密技術和程式碼總結
總結類文章,把一些常用的Java加密技術和核心程式碼寫在這邊,供參考。 首先大家要記住現代密碼學最重要的原則柯克霍夫原則: 資料的安全基於金鑰而不是演算法的保密。也就是說即使密碼系統的任何細節已為人悉知,只要密匙未洩漏,它也應是安全的。 具體來說: 系統
【轉】數學建模常用方法彙總
原連結 數學建模中常用的方法:類比法、二分法、差分法、變分法、圖論法、層次分析法、資料擬合法、迴歸分析法、數學規劃(線性規劃,非線性規劃,整數規劃,動態規劃,目標規劃)、機理分析、排隊方法、對策方法、決策方法、模糊評判方法、時間序列方法、灰色理論方法、現代
數學建模之MATLAB畫圖彙總
1. 二維資料曲線圖 1.1 繪製二維曲線的基本函式 1.plot()函式 plot函式用於繪製二維平面上的線性座標曲線圖,要提供一組x座標和對應的y座標,可以繪製分別以x和y為橫、縱座標的二維曲線。 例: t=0:0.1:2*pi;
數學建模常用模型13 :相關性分析
相關分析研究的是兩個變數的相關性,但你研究的兩個變數必須是有關聯的,如果你把歷年人口總量和你歷年的身高做相關性分析,分析結果會呈現顯著地相關,但它沒有實際的意義,因為人口總量和你的身高都是逐步增加的,從資料上來說是有一致性,但他們沒有現實意義。 相關性分析和聚類分析一樣,比
數學建模常用模型14 :因子分析
因子分析可以看作是主成分分析的一個擴充,因子分析在數學建模中使用的沒有主成分分析那麼多。關於因子分析和主成分分析的區別可以看一下司守奎老師的“因子分析”那個章節。一開始就有介紹區別。 因子分析 1)主成分分析法: 例5 研究紐約股票市場上五種股票的週迴升率。這裡,週迴升
C#知識點總結系列:3、C#中Delegate和Event以及它們的區別
的區別 sent () exit 功能 final 通知 bsp t對象 1.Monitor.Enter(object)方法是獲取鎖,Monitor.Exit(object)方法是釋放鎖,這就是Monitor最常用的兩個方法,當然在使用過程中為了避免獲取鎖之後因為異常,致鎖
遺傳演算法 求解旅行商 TSP 問題,matlab程式碼
學習啟發式演算法時,旅行商問題是一個經典的例子。其中,遺傳演算法可以用來求解該問題。遺傳演算法是一種進化演算法,由於其啟發式演算法的屬性,並不能保證得到最優解。求解效果與初始種群選取,編碼方法,選擇方法,交叉變異規則有關。 上課時,老師不知從哪裡找了一個非常粗糙的程式,自己
常用C++面試總結
pac 占用 .cn 類型 ++ http 內存 ack 總結 指定對齊值:#pragma pack(n),n=1,2,4,8,16改變系統的對齊系數struct和union都是由多個不同的數據類型成員組成, 但在任何同一時刻, union中只存放了一個被選中的成員, 而s
數學建模--matlab基礎知識
ssa env 管理 更換 ceil recent font 必須 ray 雖然python也能做數據分析,不過參加數學建模,咱還是用專業的 1. Matlab-入門篇:Hello world! 程序員入門第一式: disp(‘hello world!’) 2. 基本
[數學建模(六)]使用MATLAB實現插值
數值 font 多項式 not new pie 插值法 包含 data 常用的插值:拉格朗日多項式插值、牛頓插值、分段線性插值、Hermite 插值和三次樣條插值。 1.拉格朗日插值法 function y=lagrange(x0,y0,x); n=length(x0)
[數學建模(八)]使用MATLAB繪圖1
基本 barh 分享 com 自定義 subplot mes 1.2 img 目錄 1..二維圖 1.1 基本畫圖功能 1.2 plot參數說明 :線條類型,點類型,顏色 1.3 坐標軸定標和圖形說明 1.4 子圖 :subplot 1.5 其他類型的二維圖
MATLAB在數學建模中的應用(三)
dash 以及 cxf 原始的 計算 而後 輸入輸出變量 tran fcm optimset函數 功能:創建或編輯優化選項參數結構。 語法: 1 options = optimset(‘param1’,value1,’para
MATLAB在數學建模中的應用
整數規劃 ... .net 6.4 2.4 down 課本 sdn 曲線 接下來的三周都會研讀《MATLAB在數學建模中的應用》這本書,在此把敲過的課本習題代碼,以及更詳細的代碼註釋Po出。 插值與擬合 1)指定函數的擬合 1
2018研究生數學建模競賽B題-光傳送網建模與價值評估-競賽總結
新的 中間 定時 當前 信噪比 角度 導出 競賽 結束 ---恢復內容開始--- 2018研究生數學建模競賽B題-光傳送網建模與價值評估-競賽總結 這道賽題是有關通信方面的賽題,初步讀題,感到第一問和第二問關系不大,第二問和第三問關系也不大,不過第一問和第三問有比較緊密的順
C程式碼效能優化總結
轉自:https://blog.csdn.net/chenyq991/article/details/79047741 1、優化程式碼框架 個人覺得程式碼架構對效能的影響至關重要,就好骨架之於人,所以我把這個放在第一點。舉個簡單的例子: 優化前: void main() { whi