matlab cvx工具箱解決線性優化問題


題目來源:數學建模算法與應用第二版(司守奎)第一章習題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為飛機上的重量限制

運行結果:

原版答案:


免責聲明!

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



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