整數規划


2、整數規划

2.1 定義

規划中的變量 (部分或全部) 限制為整數時, 稱為整數規划。 若在線性規划模型中,變量限制為整數,則稱為整數線性規划。

2.2 分類

  1. 變量全限制為整數時,稱純(完全)整數規划。
  2. 變量部分限制為整數的,稱混合整數規划。

2.3 整數規划特點

1、原線性規划有最優解, 當自變量限制為整數后, 其整數規划解出現下述情況:

  • 原線性規划和整數規划的最優解一致
  • 整數規划無可行解
  • 有可行解(但不是最優解)

2、整數規划最優解不能按照實數最優解簡單取整而獲得

2.4 求解的方法

  1. 分枝定界法—可求純或混合整數線性規划
  2. 割平面法—可求純或混合整數線性規划
  3. 隱枚舉法—求解“0-1”整數規划:
    1. 過濾隱枚舉法;
    2. 分枝隱枚舉法。
  4. 匈牙利法—解決指派問題
  5. 蒙特卡洛法—求解各種類型規划

2.5 分枝定界法

對有約束條件的最優化問題 (其可行解為有限數) 的所有可行解空間恰當地進行系統搜索,這就是分枝與定界內容。把全部可行解空間反復地分割為越來越小的子集,稱為分枝。對每個子集內的解集計算一個目標下界(對於最小值問題) ,這稱為定界。

在每次分枝后, 凡是界限超出已知可行解集目標值的那些子集不再進一步分枝,這樣,許多子集可不予考慮,這稱剪枝。這就是分枝定界法的主要思路。

例 1

image-20210806094819554

解:

1、先不考慮整數限制,直接按照線性規划求解,將此線性規划問題視為 B,得

image-20210806094915135

再取 x1 = x2 = 0,得到 z 為 0,那么,以上便可求出可行解 z 的上下界

image-20210806095018180

2、任選 x1 和 x2 進行分枝,取 x1 <= 4,x1 >= 5

image-20210806095133626

可得

image-20210806095152972

對 z 再定界,有

image-20210806095211902

3、對 x2 進行分枝,取 x2 <= 2,x2 >= 3,有

image-20210806095306402

再定界,有

image-20210806095322119

4、若再對 x2 以 1 進行分支定界,無可行解,那么,可推斷,最優解為

image-20210806095357594

2.6 0 - 1 整數規划

0-1 整數規划指的是變量 xj 僅能取 0 或 1,即

image-20210806101154369

2.6.1 投資場所的選定——相互排斥的計划

題目描述:某公司擬在市東、西、南三區建立門市部。擬議中有 7 個位置 Aj(j = 1, 2, 3...7)可供選擇,規定

image-20210806102220473

Aj 點的投資為 bj 元,每年利潤為 cj 元,投資總額不能超過 B 元,問如何選擇可使年利潤最大?

解:

引入變量 xj,令

image-20210806102343612

那么問題可寫為

image-20210806102407838

2.6.2 互斥問題的約束條件

1、

image-20210806102744164

可寫為

image-20210806102754508

M 為充分大的數

2、

image-20210806102959383

可寫為

image-20210806103010156

2.6.3 固定費用的問題

例 2

某工廠為了生產某種產品,有三種方式可供選擇:

  • xj 表示采用第 j 種方式生產時的產量
  • cj 表示第 j 種方式生產時的變動成本
  • kj 表示第 j 種方式生產時的固定成本

要求最小化生產成本。

解:

第 j 種生產方式的總成本為

image-20210806103428045

引入 0 - 1 變量 yj,為

image-20210806103827285

於是目標函數為

image-20210806103644162

對於(3)式的規定,可改寫為

image-20210806103844056

前者和后者分別為充分小和充分大的數

2.7 0 - 1 整數規划的解法

2.7.1 過濾隱枚舉法

窮舉法是最容易想到的一種方法,但是計算量太大,因此設計一種僅檢查變量取值的組合的一部分,稱為過濾隱枚舉法。分枝定界法也為過濾隱枚舉法的一種。

例 3

image-20210806104303858

解題思路:

  1. 先取一個可行解,例如 (x1, x2, x3) = (1, 0, 0),可行解 z = 3
  2. 因為求的是最大值,因此求解過程中凡是 z < 3 的值均不考慮
  3. 改進過濾條件,抬高過濾門檻

2.8 蒙特卡洛法(隨機取樣法)

前面講的是線性整數規划,接下來說明非線性整數規划的問題,當數據量很大時,采用窮舉法得到最優解不符合現實,但是應用概率理論可以證明,在一定的計算量的情況下,完全可以得出一個滿意解。

例 4

image-20210806104639343

解:

若采用窮舉法,共 1010 個點,可隨機分析 106 便可達到最優。

mente.m 如下:目標函數 f ,約束向量函數 g

image-20210806104920420

mainint.m 如下:

image-20210806105110741

image-20210806105548981

上面代碼中 sum(g <= 0) == 4 的原因是題目中 4 個約束條件需全部滿足。

2.9 指派問題的計算機求解

采用 0 - 1 整數規划求解,使用到的 MATLAB 函數為 bintprog

例 5

image-20210806105905970

解:

MATLAB 程序如下:

image-20210806110308718

解得

image-20210806110339411

bintprog 函數說明如下:參考 https://www.jianshu.com/p/9ad0f6d0a7df

  • x = bintprog(f)
  • x = bintprog(f, A, b)
  • x = bintprog(f, A, b, Aeq, beq)

x 是解向量,f 是矩陣系數

A是一個矩陣,b是一個向量

  • A,b和變量x={x1,x2,…,xn}一起,表示了線性規划中不等式約束條件
  • A,b是系數矩陣和右端向量。
  • Aeq和Beq表示了線性規划中等式約束條件中的系數矩陣和右端向量。

例 6

求 max=193x1+191x2+187x3+186x4+180x5+185x6;

st.
x5+x6>=1;

x3+x5>=1;

x1+x2<=1;

x2+x6<=1;

x4+x6<=1;

x1+x2+x3+x4+x5+x6=1;

解:

f=[-193;-191;-187;-186;-180;-185;];
a=[0 0 0 0 -1 -1;0 0 -1 0 -1 0;1 1 0 0 0 0;0 1 0 0 0 1;0 0 0 1 0 1];
b=[-1,-1,1,1,1]';
aeq=[1 1 1 1 1 1];
beq=[3];
x=bintprog(f,a,b,aeq,beq)

2.10 生產與銷售計划問題

2.10.1 問題描述

某公司用兩種原油( A和B )混合加工成兩種汽油(甲和乙) 。甲、乙兩種汽油含 A 原油的最低比例分別為 50%和 60%,每噸售價分別為 4800 元和 5600 元。該公司現有原油 A和B 的庫存量分別為 500 噸和 1000 噸, 還可以從市場上買到不超過 1500噸的原油 A。原油 A的市場價為:購買量不超過 500 噸時的單價為 10000 元/噸;購買量超過 500 噸單不超過 1000 噸時,超過 500 噸的部分 8000 元/噸;購買量超過 1000 噸時,超過 1000 噸的部分 6000 元/噸。該公司應如何安排原油的采購和加工。

2.10.2 模型

設購買的 A 為 x 噸,那么支出 c(x) 為

image-20210806111840101

設 A 用於生產甲、乙的數量分別為 x11,x12,B 用於生產甲、乙的數量分別為 x21,x22,那么利潤為

image-20210806111959861

限制條件為

image-20210806112028986

2.10.3 模型化簡

解法一

將 x 分解為三個量 x1,x2,x3,分別表示采集 10 千元/噸、8 千元/噸、6 千元/噸的 A 的數量,那么

image-20210806112306898

image-20210806112312747

目標函數變為

image-20210806112416101

注意,只有當 x1 = 500 時,才可以 8 千元/噸的價格購買 x2,也就是

image-20210806112521902

同理,只有當 x2 = 500 時,才可以 10 千元/噸的價格購買 x3,也就是

image-20210806112553684

image-20210806112602487

解法二

引入 0 - 1 問題,z1 =1,z2 =1,z3 =1 表示以 6 千元/噸、8 千元/噸、10 千元/噸的價格采購 A,上述問題轉化為

image-20210806113054310

image-20210806113101581

解法三

成本函數的曲線為

image-20210806113213998

分別記 b1 = 0,b2 = 500,b3 = 1000,當 x 屬於第一個小區時,

image-20210806143750351

image-20210806143806313

同理,當 x 屬於第二個小區時,

image-20210806143823181

當 x 屬於第三個小區時

image-20210806143839473

image-20210806143846119

當 x 屬於第 k 個小區時, zk = 1,否則 zk = 0,那么

image-20210806143916712

image-20210806143943260

image-20210806144004005


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM