1. 程式人生 > >Matlab數學建模(六):全域性優化

Matlab數學建模(六):全域性優化

1、學習目標

(1)以著名的旅行商問題為例,掌握如何使用遺傳演算法。

(2)以經典的Peaks 問題為例,掌握如何使用模擬退火演算法。

2、例項演練

1、旅行商問題。

      旅行商問題是城市數量有限,且城市間旅行成本已知的優化問題。我們的目標是為銷售人員找到一個所有城市的有序集合,使成本最小化。為了解決旅行推銷員的問題,我們需要一個城市位置和距離的列表,或成本,在他們之間。我們的推銷員正在訪問美國的一些城市。檔案usborder.mat包含變數x和y中的美國地圖,以及變數xx和yy中的相同地圖的幾何簡化版本。

load('usborder.mat','x','y','xx','yy');
plot(x,y,'Color','red'); hold on;

我們將在美國邊界內隨機生成城市的位置。我們可以使用inpolygon函式來確保所有的城市都在或者非常接近美國邊界。

cities = 40;
locations = zeros(cities,2);
n = 1;
while (n <= cities)
    xp = rand*1.5;
    yp = rand;
    if inpolygon(xp,yp,xx,yy)
        locations(n,1) = xp;
        locations(n,2) = yp;
        n = n+1;
    end
end
plot(locations(:,1),locations(:,2),'bo');

藍色圓圈代表銷售人員需要旅行和運送或提貨的城市的位置。給定城市位置列表,我們可以計算出所有城市的距離矩陣。

distances = zeros(cities);
for count1=1:cities,
    for count2=1:count1,
        x1 = locations(count1,1);
        y1 = locations(count1,2);
        x2 = locations(count2,1);
        y2 = locations(count2,2);
        distances(count1,count2)=sqrt((x1-x2)^2+(y1-y2)^2);
        distances(count2,count1)=distances(count1,count2);
    end;
end;

定義目標函式:

FitnessFcn = @(x) traveling_salesman_fitness(x,distances);


my_plot = @(options,state,flag) traveling_salesman_plot(options, ...
    state,flag,locations);

最後,我們用問題資訊呼叫遺傳演算法。

numberOfVariables = cities;
[x,fval,reason,output] = ...
    ga(FitnessFcn,numberOfVariables,[],[],[],[],[],[],[],options)

相關推薦

Matlab數學建模()全域性優化

1、學習目標 (1)以著名的旅行商問題為例,掌握如何使用遺傳演算法。 (2)以經典的Peaks 問題為例,掌握如何使用模擬退火演算法。 2、例項演練 1、旅行商問題。       旅行商問題是城市數量有限,且城市間旅行成本已知的優化問題。我們的目標是為銷售人員找到一

Matlab數學建模(五)優化模型之標準模型

一、學習目標 (1)瞭解最優化模型。 (2)掌握線性規劃的優化求解。 (3)掌握整數規劃的優化求解。 (4)瞭解Matlab的圖形化應用。 二、例項演練      1、談談你對最優化模型的瞭解。         最優化模型是數學建模大賽中最常見的問題型別之一。一

[數學建模()]使用MATLAB實現插值

數值 font 多項式 not new pie 插值法 包含 data 常用的插值:拉格朗日多項式插值、牛頓插值、分段線性插值、Hermite 插值和三次樣條插值。 1.拉格朗日插值法 function y=lagrange(x0,y0,x); n=length(x0)

Matlab 數學建模 方法(四) 機器學習

1. MATLAB機器學習概況 機器學習 ( Machine Learning ) 是一門多領域交叉學科,它涉及到概率論、統計學、電腦科學以及軟體工程。 機器學習是指一套工具或方法,憑藉這套工具和方法,利用歷史資料對機器進行“訓練”進而“學習”到某種模式或規律,並建立預測

數學建模三 單變數優化和求解 牛頓迭代法

#include<iostream> #include<cmath> using namespace std; double f(double x); double f1(do

MATLAB數學建模(6)-蒙特卡洛演算法

蒙特卡洛演算法是基於概率論的一種計算方法,有些問題直接求解較為困難,但是利用類似做實驗的方法去試探,利用隨機數或”偽隨機數”進行計算的話,問題會變得比較簡單. 1.計算定積分 當然,這個問題比較簡單,用蒙特卡洛方法怎麼做呢? function resu

Matlab數學建模學習報告(一)

一、學習目標。 (1)瞭解Matlab與數學建模競賽的關係。 (2)掌握Matlab數學建模的第一個小例項—評估股票價值與風險。 (3)掌握Matlab數學建模的迴歸演算法。 二、例項演練。    1、談談你對Matlab與數學建模競賽的瞭解。         M

數學建模專欄 | 第十一篇MATLAB CUMCM真題求解例項二優化

2003 年的 B 題是典型的優化型問題,這道問題的特色是模型容易建立,但求解比較困難。這道題目在求解方面的難點是模型有交叉,所以當時我們的求解策略是分步求解、逐級優化,採用這種策略後,就可以將複雜的優化問題轉化為標準的規劃模型進行求解了。 在 2003 年 MATLA

數學建模--matlab基礎知識

ssa env 管理 更換 ceil recent font 必須 ray 雖然python也能做數據分析,不過參加數學建模,咱還是用專業的 1. Matlab-入門篇:Hello world! 程序員入門第一式: disp(‘hello world!’) 2. 基本

[數學建模(八)]使用MATLAB繪圖1

基本 barh 分享 com 自定義 subplot mes 1.2 img 目錄 1..二維圖 1.1 基本畫圖功能 1.2 plot參數說明 :線條類型,點類型,顏色 1.3 坐標軸定標和圖形說明 1.4 子圖 :subplot 1.5 其他類型的二維圖

專訪唐亙計算機編程和數學建模缺一不可

數據科學點擊圖片購書參與文末話題討論,每日贈送異步圖書——異步小編唐亙,數據科學家,專註於機器學習和大數據。曾獲得復旦大學的數學和計算機雙學士學位;巴黎綜合理工的金融碩士學位;法國國立統計與經濟管理學校的數據科學碩士學位。熱愛並積極參與Apache Spark和Scikit-Learn等開源項目。作為講師和技

MATLAB數學建模中的應用(三)

dash 以及 cxf 原始的 計算 而後 輸入輸出變量 tran fcm optimset函數 功能:創建或編輯優化選項參數結構。 語法: 1 options = optimset(‘param1’,value1,’para

MATLAB數學建模中的應用

整數規劃 ... .net 6.4 2.4 down 課本 sdn 曲線 接下來的三周都會研讀《MATLAB在數學建模中的應用》這本書,在此把敲過的課本習題代碼,以及更詳細的代碼註釋Po出。 插值與擬合 1)指定函數的擬合 1

數學建模1.監督學習--回歸分析模型

統計學 marker sta 均值 示例 on() 8.4 sklearn 關系 1.回歸分析 在統計學中,回歸分析(regression analysis)指的是確定兩種或兩種以上變量間互相依賴的定量關系的一種統計分析方法。 按照自變量和因變量之間的關系類型

java基礎學習總結(十程式碼優化

程式碼優化的目標是: 1、減小程式碼的體積 2、提高程式碼執行的效率 程式碼優化細節 (1)儘量指定類、方法的final修飾符     帶有final修飾符的類是不可派生的。在Java核心API中,有許多應用final的例子,例如java.lang.Strin

MySQL效能優化()分割槽

一: 分割槽簡介 分割槽是根據一定的規則,資料庫把一個表分解成多個更小的、更容易管理的部分。就訪問資料庫應用而言,邏輯上就只有一個表或者一個索引,但實際上這個表可能有N個物理分割槽物件組成,每個分割槽都是一個獨立的物件,可以獨立處理,可以作為表的一部分進行處理。分割槽對應用來說是完全

Spark優化()使用高效能的運算元

除了shuffle相關的運算元有優化原則之外,其它的運算元也都有著相應的優化原則:   使用reduceByKey/aggregateByKey替代groupByKey。 詳情見“Spark優化(五):使用map-side預聚合的shuffle操作”。 使用map

搭建自己的部落格(十封裝優化閱讀量程式碼

1、將閱讀量的程式碼封裝在一個app中,增加擴充套件性 新建app: python manage.py startapp read_statistics 2、變化的部分 3、上程式碼 from django.contrib import admin from .

數學建模入門之MATLAB實現人口預測

人口問題是我國最大社會問題之一,估計人口數量和發展趨勢是我們制定一系列相關政策的基礎。從人口統計年鑑,可查我國從1990年至2010年人口資料資料如下,試根據表中資料,分析人口增長的規律,並以此預測2011年和2012年的人口數量,然後與實際人口數量做對比,評價模型的優劣,並對我國人口政策提出建

數學建模種群競爭模型

今天來介紹一下關於種群競爭模型的MATLAB實現方法: 種群競爭模型是當兩個種群為爭奪同一食物來源和生存空間相互競爭時,常見的結局是,競爭力弱的滅絕,競爭力強的達到環境容許的最大容量。使用種群競爭模型可以描述兩個種群相互競爭的過程,分析產生各種結局的條件。 有甲乙兩個種群,它們獨自生存時數量