整数规划 - 数学建模
一、整數(shù)規(guī)劃模型及概念
規(guī)劃問(wèn)題的數(shù)學(xué)模型一般由三個(gè)因素構(gòu)成 決策變量 目標(biāo)函數(shù) 約束條件;
數(shù)學(xué)規(guī)劃是運(yùn)籌學(xué)的一個(gè)重要分支,線性規(guī)劃是數(shù)學(xué)規(guī)劃的一個(gè)重要分支;
線性規(guī)劃即以線性函數(shù)為目標(biāo)函數(shù),線性條件為約束條件;
如果一個(gè)線性規(guī)劃模型中的部分或全部決策變量取整數(shù)值,則稱該線性規(guī)劃模型為整數(shù)線性規(guī)劃模型,除此還有非線性整數(shù)規(guī)劃。
從決策變量的取值范圍來(lái)看,整數(shù)規(guī)劃通常可以分為以下幾種類型:
1、純整數(shù)規(guī)劃:全部決策變量都必須取整數(shù)值的整數(shù)規(guī)劃模型;
2、混合整數(shù)規(guī)劃:決策變量中有一部分必須取整數(shù)值,另一部分可以不取整數(shù)值的整數(shù)規(guī)劃模型;
3、0-1整數(shù)規(guī)劃:決策變量只能取0或1的整數(shù)規(guī)劃。
二、整數(shù)規(guī)劃模型求解及應(yīng)用
整數(shù)線性規(guī)劃模型的一般形式為
1、基于求解器求解
標(biāo)準(zhǔn)形式如下
解法:
其中
輸入?yún)?shù):
f 為系數(shù)向量,系數(shù)向量表示目標(biāo)函數(shù),列向量;
intcon 為整數(shù)約束組成的向量,它的值指示決策變量 x 中應(yīng)取整數(shù)值的分量;
A 為線性不等式約束矩陣,A 表示約束中的線性系數(shù);
b 為線性不等式約束向量,b 表示約束中的常向量;
Aeq 為線性等式約束矩陣,beq 為線性等式約束向量;
lb 為下界,ub 為上界;
x0為初始點(diǎn),指定為實(shí)數(shù)數(shù)組。當(dāng) f 存在時(shí),x0 中的元素?cái)?shù)與 f 中的元素?cái)?shù)相同。否則,該數(shù)字與 A 或 Aeq 的列數(shù)相同;
options 為 intlinprog 的選項(xiàng)。
輸出參數(shù):
x 為解,fval 為目標(biāo)函數(shù)最優(yōu)值;
exitflag 為算法停止條件,output 為求解過(guò)程摘要。
2、基于問(wèn)題求解
首先需要用變量和表達(dá)式構(gòu)造優(yōu)化問(wèn)題,然后用solve函數(shù)求解,詳見(jiàn)例題。
三、例題
1、基于求解器求解
clc, clear f = [1; 1; 1; 1; 1; 1]; % 目標(biāo)函數(shù)系數(shù)矩陣 intcon = [1:6]; % 目標(biāo)函數(shù)整數(shù)項(xiàng) A = [1, 0, 0, 0, 0, 1; % 構(gòu)造不等式約束系數(shù)矩陣1, 1, 0, 0, 0, 0; 0, 1, 1, 0, 0, 0; 0, 0, 1, 1, 0, 0; 0, 0, 0, 1, 1, 0; 0, 0, 0, 0, 1, 1]; b = [35; 40; 50; 45; 55; 30]; % 構(gòu)造不等式約束常數(shù)矩陣 [x, fval] = intlinprog(f, intcon, -A, -b, [], [], zeros(6, 1)); % 調(diào)用求解器求解2、基于問(wèn)題求解
clc, clear prob = optimproblem; % 定義優(yōu)化問(wèn)題,默認(rèn)求最小 x = optimvar('x',6,'Type','integer','LowerBound',0); % name為變量名稱,n為變量維度,cstr為索引名稱,Type為變量類型,continuous(默認(rèn)實(shí)數(shù))或integer(整數(shù)),LowerBound為下界,UpperBound為上界 prob.Objective = sum(x); % .Objective為目標(biāo)函數(shù),定義目標(biāo)函數(shù) con = optimconstr(6); % 創(chuàng)建一個(gè)由空優(yōu)化約束組成的 6×1 數(shù)組,使用 constr 初始化用于創(chuàng)建約束表達(dá)式的循環(huán) a = [35,40,50,45,55,30]; % 不等式常數(shù)項(xiàng) con(1) = x(1)+x(6)>=35; % 構(gòu)造不等式約束 for i =1 :5con(i+1) = x(i)+x(i+1)>=a(i+1); end prob.Constraints.con = con; [sol, fval, flag] = solve(prob), sol.x % 求解求得最優(yōu)解為x1 = 35, x2 = 5, x3 = 45, x4 = 0, x5 = 55, x6 = 0,目標(biāo)函數(shù)最優(yōu)值為140。
四、蒙特卡洛法解決非線性整數(shù)規(guī)劃
蒙特卡洛法又稱計(jì)算機(jī)隨機(jī)模擬法,是基于對(duì)大量事件的統(tǒng)計(jì)結(jié)果來(lái)實(shí)現(xiàn)一些確定性問(wèn)題的計(jì)算。
非線性規(guī)劃的解法雖然尚未成熟,但是非線性整數(shù)規(guī)劃限定了變量為整數(shù),從而整數(shù)解為有限個(gè),為枚舉法提供了方便,故在一定計(jì)算量的情況下,用蒙特卡洛法進(jìn)行隨機(jī)枚舉可以得出一個(gè)較為滿意的解。一些情況還可以使用Lingo得到更優(yōu)的答案,在此就不再贅述了。
總結(jié)
以上是生活随笔為你收集整理的整数规划 - 数学建模的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言过时了?扯淡!
- 下一篇: 开源社区介绍