題目來源:數學建模算法與應用第二版(司守奎)第一章習題1.4
題目說明
作者在答案中已經說明,求解上述線性規划模型時,盡量用Lingo軟件,如果使用Matlab軟件求解,需要做變量替換,把二維決策變量化成一維決策變量,很不方便。(原答案附末尾)
這里我們可以采用matlab的cvx工具箱進行編寫,會簡化代碼並提升可讀性
clc;clear;
format short;
% 初始數據
w = [18 15 23 12];
r = [3100 3800 3500 2850] .* w;
s = [480 650 580 390] .* w;
ls = [6800 8700 5300];
lw = [10 16 8];
%開始求解
cvx_begin
variable x(4,3); % 決策變量
maximize(sum(r*x)); % 目標函數
subject to % 約束條件
w*x<=lw;
s*x<=ls;
x >= 0;
sum(x,2) <= 1
cvx_end
disp("每種貨物噸數(t):");
result = w' .* sum(x,2);
disp(result);
disp('最大利潤(元):');
disp(cvx_optval);
代碼說明:
w為每種貨物的總重量
r為每種貨物的總利潤
s為每種貨物所占用的總空間
ls為飛機上的空間限制
ls為飛機上的重量限制