2017-02-27 2 views
-1

dans le cadre d'un code plus grand, j'ai besoin de résoudre un programme linéaire, j'ai inclus la partie écrite jusqu'à présent (avec des numéros fictifs) ci-dessous. Cependant, j'ai juste commencé à utiliser Matlab (utilisé avant cela) et j'ai rencontré le problème, à savoir que la fonction d'optimisation linéaire linprog ne résout que les problèmes de minimisation. Le mien est un problème de maximisation.Matlab linprog maximization

Est-il possible d'avoir Matlab calculer un problème de maximisation (une autre fonction, ou un truc évident que je suis méconnais?)

% 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 

Répondre

-1

La solution consiste à tourner multiplier toutes les valeurs dans la fonction objectif avec -1 ou appelez simplement "-f" dans la commande linprog.

Meilleur seulberg1