Operational Research applied to SCRUM using Solver Studio (GMPL) - Golfarelli method

98 Views Asked by At

I'm trying to code a version of Scrum Optimization method (Golfarelli, 2013) using GLPK/GMPL on Solver Studio - its for Academic purposes - Paper: https://drive.google.com/file/d/0B7W9UWp9Yzx4M0RUUnFpbkRlbE0/view?usp=sharing

This is my code so far:

#Modelo de Otimizacao de Sprints

# Conjunto de Indices
set Sprint;
set UserStory;
#set A;

#Parametros
param capacidade{Sprint};
param complexidade{UserStory};
param riscoincerteza{UserStory};
param riscocriticidade{UserStory};
param utilidade {UserStory};
#param afinidade {A};

#Variaveis
var x{Sprint, UserStory} binary;
#var y{Sprint, UserStory, A} >=0;
var UtilidadeSprint{Sprint} >=0;
var UtilidadeAcumulada{Sprint} >=0;

#FuncaoObjetivo
maximize SomaUtilidadeAcumulada: sum{i in Sprint} UtilidadeAcumulada[i];

#Restricoes
s.t. rest_UtilidadeAcumuladaPrimeiroSprint: UtilidadeAcumulada[1] = UtilidadeSprint[1];
s.t. rest_UtilidadeAcumuladaDemais{i in Sprint}: UtilidadeAcumulada[i+1] = UtilidadeSprint[i+1] + UtilidadeAcumulada[i];
s.t. rest_UtilidadeSprint{i in Sprint}: UtilidadeSprint[i] = sum{j in UserStory} utilidade[j] * riscocriticidade[j] * x[i, j];
s.t. rest_capacidade{i in Sprint}: sum{j in UserStory} complexidade[j] * riscoincerteza[j] * x[i,j] <= capacidade[i];
s.t. rest_NaoRepetirUserStory{j in UserStory}: sum{i in Sprint} x[i,j] = 1;

#Resolver Problrema
solve;

#Escrever Utilidade Acumulada na planilha
printf " UtilidadeAcumulada :=\n" >> "Sheet";
printf {i in Sprint} "'%s' '%s'\n", i, UtilidadeAcumulada[i] >> "Sheet";
printf ";\n" >> "Sheet";

#Escrever Utilidade Sprint na planilha
printf " UtilidadeSprint :=\n" >> "Sheet";
printf {i in Sprint} "'%s' '%s'\n", i, UtilidadeSprint[i] >> "Sheet";
printf ";\n" >> "Sheet";

#Escrever Solucao Otima na planilha
printf "rest_capacidade :=\n" >> "Sheet";
printf {i in Sprint} "'%s' '%s'\n", i, rest_capacidade[i] >> "Sheet";
printf ";\n" >> "Sheet";

printf "x :=\n" >> "Sheet";
printf {i in Sprint, j in UserStory}: "'%s' '%s' '%s'\n", i, j, x[i,j] >> "Sheet";
printf ";\n" >> "Sheet";

end;

I got stuck in my code (must because I'm not familiar with this language). It is not accepting UtilidadeAcumulada because it's going till "7" and should be just till "6" (I couldn't lock this parameter) - and I also not entered in the most complicated part (use of groupings and precedences). =(

I would really appreciate if someone familiar with SolverStudio (and GMPL) could give me some help on this.

0

There are 0 best solutions below