-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