matlab cvx工具箱解決線性優化問題
阿新 • • 發佈:2020-07-10
題目來源:數學建模演算法與應用第二版(司守奎)第一章習題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為飛機上的重量限制