Matlab linprog最大化

时间:2017-02-27 16:07:13

标签: matlab linear-algebra linear-programming

作为我需要解决线性程序的更大代码的一部分,我在下面包含了到目前为止所写的部分(带有虚拟数字)。 但是,我刚刚开始使用Matlab(之前使用R)并遇到问题,线性优化函数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 个答案:

答案 0 :(得分:-1)

解决方案是将目标函数中的所有值乘以-1,或者只调用" -f"在linprog命令中。

最佳seulberg1