1. 程式人生 > >Algorithm之PrA:PrA之IP整數規劃(包括0-1整數規劃)演算法經典案例剖析+Matlab程式設計實現

Algorithm之PrA:PrA之IP整數規劃(包括0-1整數規劃)演算法經典案例剖析+Matlab程式設計實現

Algorithm之PrA:PrA之IP整數規劃演算法經典案例剖析+Matlab程式設計實現

分枝定界法

      對有約束條件的最優化問題(其可行解為有限數)的所有可行解空間恰當地進行系統搜尋,這就是分枝與定界內容。通常,把全部可行解空間反覆地分割為越來越小的子集,稱為分枝;並且對每個子集內的解集計算一個目標下界(對於最小值問題),這稱為定界。在每次分枝後,凡是界限超出已知可行解集目標值的那些子集不再進一步分枝,這樣,許多子集可不予考慮,這稱剪枝。這就是分枝定界法的主要思路。
     分枝定界法可用於解純整數或混合的整數規劃問題。在本世紀六十年代初由 LandDoig 和Dakin 等人提出的。由於這方法靈活且便於用計算機求解,所以現在它已是解整數規劃的重要方法。目前已成功地應用於求解生產進度問題、旅行推銷員問題、工廠選址問題、揹包問題及分配問題等。

基本思想:設有最大化的整數規劃問題 A ,與它相應的線性規劃為問題B ,從解問題B 開始,若其最優解不符合 A的整數條件,那麼B的最優目標函式必是 A的最優目標函式z*的上界,記作z上 ;而 A的任意可行解的目標函式值將是z*的一個下界z下。分枝定界法就是將B的可行域分成子區域的方法。逐步減小z 上和增大z下 ,最終求到z*。

整數規劃例題

       用分枝定界法求解整數規劃(最大化)問題的步驟為:首先,將要求解的整數規劃問題稱為問題 A ,將與它相應的線性規劃問題稱為問題B 。

1、求解下述整數規劃

(1)、先利用LP思路求出最優解

(2)、利用IP思路分析解,先對x1進行分枝、定界

(3)、先對B1進行分枝、定界

(4)、還要對B2進行分枝、定界

0-1整數規劃例項

1、投資場所的選定——相互排斥的計劃

解:解題時先引入0 −1變數xi,並進行問題轉換

2、引入0 −1變數y,來解決相互排斥的約束條件

3、擴充套件:利用0-1變數來解決m 個互相排斥的約束條件
    如果有m 個互相排斥的約束條件

4、關於固定費用的問題(Fixed Cost Problem)

       某工廠為了生產某種產品,有幾種不同的生產方式可供選擇,如選定的生產方式投資高(選購自動化程度高的裝置),由於產量大,因而分配到每件產品的變動成本就降低;反之,如選定的生產方式投資低,將來分配到每件產品的變動成本可能增加。所以必須全面考慮。今設有三種方式可供選擇,令

5、舉例說明一種解0 −1型整數規劃的隱列舉法

6、蒙特卡洛法求解非線性整數規劃

(1)、首先編寫M 檔案mente.m 定義目標函式f 和約束向量函式g,程式如下

function [f,g]=mengte(x);
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];

(2)、編寫M檔案mainint.m如下求問題的解

rand('state',sum(clock));
p0=0;
tic
for i=1:10^6
    x=99*rand(5,1);
x1=floor(x);x2=ceil(x);
[f,g]=mengte(x1);
if sum(g<=0)==4
    if p0<=f
        x0=x1;p0=f;
    end
end
[f,g]=mengte(x2);
if sum(g<=0)==4
    if p0<=f
        x0=x2;p0=f;
    end
end
end
x0,p0
toc

7、Matlab求解指派問題等0 −1整數規劃問題

解:編寫 Matlab 程式如下:

c=[3 8 2 10 3;8 7 2 9 7;6 4 2 7 5
    8 4 2 3 5;9 10 6 9 10];
c=c(:);
a=zeros(10,25);
for i=1:5
    a(i,(i-1)*5+1:5*i)=1;
    a(5+i,i:5:25)=1;
end
b=ones(10,1);
[x,y]=bintprog(c,[],[],a,b);
x=reshape(x,[5,5]),y

相關推薦

AlgorithmPrAPrAIP整數規劃(包括0-1整數規劃)演算法經典案例剖析+Matlab程式設計實現

Algorithm之PrA:PrA之IP整數規劃演算法經典案例剖析+Matlab程式設計實現 分枝定界法       對有約束條件的最優化問題(其可行解為有限數)的所有可行解空間恰當地進行系統搜尋,這就是分枝與定界內容。通常,把全部可行解空間反覆地分割為越來越小的子集,稱

《大型網站技術架構》讀書筆記永無止境網站的伸縮性架構

映射 應對 方法 訂閱 知識 位置 n+1 轉換 bsp 此篇已收錄至《大型網站技術架構》讀書筆記系列目錄貼,點擊訪問該目錄可獲取更多內容。 首先,所謂網站的伸縮性,指不需要改變網站的軟硬件設計,僅僅通過改變部署的服務器數量就可以擴大或者縮小網站的服務處理能力。在整個互聯

前端JavaScriptJSDOM對象一

介紹 close key 屬性 事件傳播 byname logs rst inpu js之DOM對象一 一、什麽是HTML DOM HTML Document Object Model(文檔對象模型) HTML DOM 定義了訪問和操作HTML文檔

Python極簡教程集合排序(sorted)

python集合的排序主要使用cmp關鍵字來定義比對函式,以下針對幾個較為典型的型別列舉出對應的方法: 正序排列 普通一維陣列(數值、字串陣列) num = sorted(num) 物件陣列(需要指定欄位排序) cursor = sorted(cursor, cmp=l

Django 學習Django強大的Form功能

Django之強大的Form功能 Form Form的驗證思路 前端:form表單 後臺:建立form類,當請求到來時,先匹配,匹配出正確和錯誤資訊。 Django的Form驗證例項: 建立project,進行基礎配置檔案配置 STATIC_URL = '/

數學建模線性規劃問題(含整數規劃0-1規劃

線性規劃問題 線性規劃是數學規劃中的一類最簡單規劃問題,常見的線性規劃是一個有約束的,變數範圍為有理數的線性規劃。 如: 為了便於表達,將上面的式子寫成矩陣形式: 於是約束就表達為了一個不等式。 求解MATLAB線性規劃時,最常用的函式是linprog函

前端JavaScriptJSDOM對象三

上下文 splay i++ oca letter 對話 tle 對象 ++ js之DOM對象三 一、JS中for循環遍歷測試 for循環遍歷有兩種 第一種:是有條件的那種,例如 for(var i = 0;i<ele.length;i

Linux學習第五章檔案和目錄管理(1)

備註:屬於個人分享,文章如有問題請留言,謝謝! 第五章檔案和目錄管理 1、絕對路徑和相對路徑 絕對路徑:一定是由根目錄(/)寫起的,例如:cd /etc/sysconfig 相對路徑:不是由根目錄(/)寫起,例如:cd etc 命令cd          cd切換

算法系列計算幾何與圖形學有關的幾種常用演算法(二)

3.6 用向量的叉積判斷直線段是否有交        向量叉積計算的另一個常用用途是直線段求交。求交演算法是計算機圖形學的核心演算法,也是體現速度和穩定性的重要標誌,高效並且穩定的求交演算法是任何一個CAD軟體都必需要重點關注的。求交包含兩層概念,一個是判斷是否相交,另一個是

Python為什麼Python陣列下標從0開始

曾經有人在Twitter上問我為什麼Python使用以0為首位的陣列索引法(0-based),並且還給我了一個相關優秀文章的連結。這讓我想起許多往事:Python的前身之一,ABC語言使用的是以1為首位的陣列索引方式(1-based),而對Python有著巨大影響的C語言

vc++常見錯誤“fatal error C1083: ”無法開啟包括檔案

 這個問題產生的情況有多種,解決方法也有多種。我集合了網上的各種可能,可能不全,希望對你有用。。。。。。。。 其一: 步驟1:定位報“fatal error C1083: ”錯誤的檔案,找到它所在的目錄。 步驟2:新增該專案的附加路徑 。如圖所示: 1)右鍵檢視該專案的

基礎總結篇ContentProvider讀寫聯絡人

靡不有初,鮮克有終。《詩經》 很多事情,絕大多數人都會在開始的時候滿懷熱情,而能堅持到底的卻是寥寥無幾。對待自己的目標,虎頭蛇尾絕不可取,半途而廢只會一無所成,我們必須持之以恆的做下去,堅持到底才能摘取勝利的果實。最近也忙了起來,忙著給自己充電,深知這項任務的艱鉅,不是一天

神經網路感知器演算法簡單介紹和MATLAB簡單實現

Perceptron Learning Algorithm 感知機學習演算法,在1943年被生物學家MeCulloch和數學家Pitts提出以後,面臨一個問題:引數需要依靠人工經驗選定,十分麻煩。因此人們希望找到一種能夠自己選定引數的方法。1957年,Fran

Flask靜態文件&模板(0.1

Go chrom 哪裏 emp .com .org 文檔 專業 查看 Windows 10家庭中文版,Python 3.6.4,Flask 1.0.2 前面看了Flask的Quickstart文檔,可是,一直沒有練習裏面的內容,這不,剛剛練習完畢,來寫篇博文記錄一下!

《TensorFlow實戰Google深度學習框架》——6.1 影象識別中經典資料集介紹

1、CIFAR資料集 CIFAR是一個影響力很大的影象分類資料集,CIFAR資料集中的圖片為32*32的彩色圖片,由Alex  Krizhevsky教授、Vinod Nair博士和Geoffrey Hinton教授整理的。 CIFAR是影象詞典專案(Visual Dictionar

斯坦福機器學習筆記1GDA高斯判別分析演算法的原理及matlab程式實現

ps:我本身沒有系統的學過matlab程式設計,所以有的方法,比如求均值用mean()函式之類的方法都是用很笨的方法實現的,所以有很多需要改進的地方,另外是自學實現的程式,可能有的地方我理解錯誤,如果有錯誤請提出來,大家一起學習,本人qq553566286 首先,本文用到的

Linux學習第二章配置網路IP實現遠端連線(上)

備註:屬於個人分享,文章如有問題請留言,謝謝! 第二章配置網路IP,實現遠端連線 1、輸入使用者和密碼 輸入密碼的時候是不會顯示的 如何檢視Linux系統是32位還是64位,X86是32位,X86_64是64位                  命令: unam

.Neter玩轉Linux系列Linux下shell介紹以及TCP、IP基礎

基礎篇 實戰篇 一、Linux下的shell 概述:每個人在成功登入LINUX後,系統會出現不同的提示符號,例如 $、~、#等,然後你就可以開始輸入需要的命令,若是命令正確,系統 就會依據命令的要求來執行,直到登出系統為止,在登入到登出期間, 輸入的每個命令都會經常解譯及

微服務API閘道器Kong外掛介紹認證外掛ip-restriction黑白名單

kong目前提供了37個外掛,其中商業收費7個,30個開源免費的外掛,可以設定到api/服務/路由粒度上。 環境設定 外掛功能 類別 免費/收費 name 外掛名 使用場景 認證 免費 basic-au

VCSA 6.5 HA配置 準備工作

vmware vcenter ha 高可用 vcsa 接著上一篇文章部署完成VCSA 6.5後,還需要做一些準備工作才能開啟高可用功能,本篇文章主要就講述如何為vCenter 高可用進行準備工作配置vCenter HA網絡從vCenter HA的架構圖中可以看出對於vCenter HA的高