- MATLAB定量決策五大類問題
- 張建林編著
- 660字
- 2018-12-30 09:16:49
1.4 MATLAB求解
1.4.1 案例1的求解
根據所建立的數學模型,調用自編MATLAB函數程序Ch1 FZDJ求解。編寫腳本文件(命名:Case1 1),文件源碼的具體內容如下。
clc,clear% 清除命令窗口,清除工作空間 % 設定原始數據 F = -[zeros(1,4)200];Aeq = [];Beq = []; A =[95460;789100;-8-6-9-74;-6-7-5-93];B =[40060000]; LB = zeros(1,5)';UB = inf* ones(1,5)'; % 求解 [x,min_fval] = Ch1_FZDJ(F,A,B,Aeq,Beq,LB,UB); % 輸出結果 fprintf('1.各車間的開工次數與最大配套數為: \n') disp(' 車間一 車間二 車間三 車間四 配套數'),disp(x') fprintf('2.最大利潤為: '),disp(-min_fval)
在MATLAB命令窗口中執行Case1 1,所得結果如圖1-5所示。

圖1-5 案例1的求解結果
由圖1-5所示的求解結果可知,當車間1開工17次,車間2開工13次,車間3開工34次,車間7開工7次時,可得到最大的配套數為142套。在此生產方案下,可獲得的最大利潤為28400 (28400=142 × 200)元。
1.4.2 案例2的求解
根據所建立的數學模型,調用MATLAB中的fmincon函數求解。編寫腳本文件(命名:Case1 2),文件源碼的具體內容如下。
clc,clear% 清除命令窗口,清除工作空間 % (1)設定數據 xini =[2 3 3];A = [];B = [];Aeq = [];Beq = [];LB = zeros(1,2);UB = []; % (2)求解并輸出結果 options = optimset('Algorithm','interior-point'); [x,fval] = fmincon(@ Case1_2ob,xini,A,B,Aeq,Beq,LB,UB,@ Case1_2con,op- tions); fprintf('1.自變量的解為: \n') disp(' x1 x2 x3') disp(x) fprintf('2.最小的總成本為: % f \n',fval)
其中,目標函數和約束條件源碼的具體內容如下。
% 目標函數 f = 40* sqrt(x(3)^2-0.25* (x(2)-x(1))^2)* (x(1)+x(2))+30* x(1)^2; % 非線性不等式約束 C =[6* sqrt(x(3)^2-0.25* (x(2)-x(1))^2)* (x(2)+x(1))+2* x(1)^2-56; -x (3)+(sqrt(2)/2)* (x(2)-x(1))]; % 非線性等式約束 Ceq = sqrt(x(3)^2-0.5* (x(2)-x(1))^2)* (x(1)^2+x(1)* x(2)+x(2)^2)-30;
在MATLAB命令窗口中執行Case1 2,所得結果如圖1-6所示。

圖1-6 案例2的求解結果
由圖1-6所示的求解結果可知,最小的總成本為468.89元,容器的小底面邊長為2.407 m,敞口邊長為3.344 m,側面長為1.370 m。不過,求解結果截面顯示這里求得的總成本最小值只是局部最小值。這是因為,在目標函數和約束所滿足的缺省值誤差內,目標函數在可行域內是非遞減的。
根據此解,可以設計容器的單個側面,示意圖如圖1-7所示。

圖1-7 敞口容器的單個側面設計示意圖