跟着川川学数模-Day2
目錄
一、前言
二、問題提出
?三、問題求解
3.1 線性規(guī)劃(忽視整數條件)
3.2 整數線性規(guī)劃
3.2.1 對x1進行分枝求解
3.2.2 在x范圍下對x2進行分支求解
3.2.3 求解最大值
3.2.4 結果
一、前言
在川川前面兩篇的推送中,學習到了如何求解線性規(guī)劃最大值與最小值問題,但相關參數均以最優(yōu)形式出現,那么在實際工程問題或者生活中,大部分要求為整數,因此本文將探討線性整數規(guī)劃問題。
二、問題提出
?三、問題求解
3.1 線性規(guī)劃(忽視整數條件)
忽略整數這一限制條件,即仍為前兩天所考慮的線性規(guī)劃問題,給出如下代碼:
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[0;0];%大于等于0 ub=[inf;inf]; [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x運行所得結果如下:
Optimal solution found.x =4.80921.8168best =355.87793.2 整數線性規(guī)劃
在3.1中可以看到,z的最大值為355.9779那么我們可以將z的范圍暫定為0≤z≤356,同樣由于3.1中未考慮x1和x2的整數問題,而x1在4-5的整數范圍內無其他整數,因此需要通過分枝方法來解決。
3.2.1 對x1進行分枝求解
(1)0≤x1≤4情況下代碼如下:
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[0;0];%大于等于0 ub=[4;inf];%x1的上限改為4,x2沒有上限 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
Optimal solution found.x =4.00002.1000best =349(2)x1≥5情況下代碼如下:
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[5;0];%大于等于0 ub=[inf;inf];%x1的上限改為4,x2沒有上限 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
Optimal solution found.x =5.00001.5714best =341.4286(3)符合條件最大值范圍的再次確定:0≤z≤349
3.2.2 在x范圍下對x2進行分支求解
(1)在0≤x1≤4情況下,對0≤x2≤2分支情況下代碼如下:
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[0;0];%大于等于0 ub=[4;2];%x1的上限改為4,x2上限為2 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
Optimal solution found.x =42best =340(1)在0≤x1≤4情況下,對x2≥3分支情況下代碼如下:
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[0;3];%x1大于等于0,x2大于等于3 ub=[4;inf];%x1的上限改為4,x2無上限 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
Optimal solution found.x =1.42863.0000best =327.1429(3)符合條件最大值范圍的再次確定:340≤z≤349
3.2.3 求解最大值
在前面兩步中,我們將x1的范圍縮至大于等于5,接下來我們對x2進行分支
(1)0≤x2≤1
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[5;0];%x1大于等于5 ub=[inf;1];%x1的上限改為4,x2上限改為1 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
Optimal solution found.x =5.44441.0000best =307.7778(2)x2≥2
clc clear all c=[40 90];%目標函數確定 a=[9,7;7,20]; b=[56,70];%兩個不等式約束條件 aeq=[]; beq=[];%沒有等式約束 lb=[5;2];%x1大于等于5,x2大于等于2 ub=[inf;inf];%x1的上限改為4,x2沒有上限 [x,fval]=linprog(-c,a,b,aeq,beq,lb,ub); x best=c*x結果為:
No feasible solution found.Linprog stopped because no point satisfies the constraints.x =[]錯誤使用 * 用于矩陣乘法的維度不正確。請檢查并確保第一個矩陣中的列數與第二個矩陣中的行數 匹配。要執(zhí)行按元素相乘,請使用 '.*'。>>在此條件下并無解。
3.2.4 結果
綜上所述,整個題目最優(yōu)解為x1=4,x2=2時,zmax=340.
總結
以上是生活随笔為你收集整理的跟着川川学数模-Day2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 和华为杯_2019全国大学生物联网设计竞
- 下一篇: Python 小白从零开始 PyQt5