2017-02-27 104 views
-1

作爲一個更大的代碼,我需要解決一個線性程序的一部分,我包括了迄今爲止(與虛擬數字)下面寫的部分。 但是,我剛開始使用Matlab(在此之前使用R)並遇到問題,即線性優化函數linprog只能解決最小化問題。礦是一個最大化問題。Matlab linprog最大化

有沒有什麼辦法讓Matlab的計算最大化問題(另一個功能,或者我俯瞰一些明顯的把戲?)

% Clear and clc 
clear 
clc 

X = [ 7 7 7 
     5 9 7 
     4 6 5 
     5 9 8 
     6 9 5]; 

Y = [ 4 4 
     7 7 
     5 7 
     6 2 
     3 6]; 

% Get number of DMUs (n), inputs (m) and outputs (s) 
[n, m] = size(X); 
s = size(Y,2); 

% Take logarithms of all values 
lnX = log(X); 
lnY = log(Y); 

%lower bounds for variables (Eta η, xi ξ, outputs,inputs) 
lb = [0 0 ones(1,(s+m))]; 

%Equality constraints 
Aeq = [ones(n,1) -ones(n,1) lnY -lnX]; 
beq = zeros(n,1); 

%options to surpress the "different algorithm" warning 
options = getDEAoptions(n); 
linprogoptions = options.optimopts; 

%Initialize weight matrix 
geometricDEAWeights = zeros(n,m+s); 

%DEA Optimization function 
for DMUvalue = 1:n 
    f = [1 -1 lnY(DMUvalue,:) -lnX(DMUvalue,:)]; 
    [z, ~, exitflag, ~, dual] = linprog(f, [], [], Aeq, beq, lb, [],linprogoptions); 
    geometricDEAWeights(DMUvalue,:) = z'; 
end 

回答

-1

解決的辦法是乘法把所有值的目標函數-1 ,或者只需在linprog命令中調用「-f」即可。

最佳seulberg1