Programa R para resolver TP com meu método
Eu desenvolvi novo método para resolver TP, mas estou muito lento com a programação, você pode ajudar a escrever um programa para o método ???
** III. ALGOTITHM OF AOCM ETAPA 1. Subtraia o menor custo de cada elemento de cada linha da mesa de transporte e coloque-o no topo direito desse elemento.
ETAPA 2. Subtraia o menor custo de cada elemento de cada coluna da mesa de transporte e coloque-o na parte inferior direita desse elemento.
ETAPA 3. Crie uma nova matriz cujos elementos sejam o valor médio da parte superior direita e inferior direita dos elementos da etapa 1 e etapa 2.
ETAPA 4. Encontre penalidades de linha e coluna tomando a diferença entre o menor e o próximo menor valor na linha e coluna.
ETAPA 5. Identifique a maior penalidade e aloque a quantidade máxima possível para aquela célula com valor mínimo de elemento na linha ou coluna correspondente. Se houver um empate entre as maiores penalidades, o empate pode ser desfeito tomando a diferença entre o menor e o próximo ao menor elemento, se o empate ainda não foi desfeito, repita o procedimento com o próximo ao menor e assim por diante, se o empate ainda não foi desfeito, selecione arbitrariamente.
PASSO 6. Repita o passo 5 ao passo 6 até que o requisito de aro seja satisfeito.
ETAPA 7. Coloque esses valores alocados no TT original na célula correspondente.
PASSO 8. Calcule o custo de transporte do TT. Este cálculo é a soma do produto do custo de transporte unitário e a quantidade alocada. **
Respostas
Não entendi totalmente suas atribuições após o 4º ponto, mas isso deve ajudar você a começar (usando os dados fornecidos em sua primeira pergunta):
dfr <- read.table(text = "10 7 19 11
5 5 7 8
12 9 13 11
8 10 11 9")
# step 1 to 2
drow <- apply(dfr, 1, function(x){x-min(x)})
dcol <- apply(dfr, 2, function(x){x-min(x)})
# 3
dmean <- (drow + dcol)/2
dmean
#> [,1] [,2] [,3] [,4]
#> V1 4.0 1 7.5 1.5
#> V2 0.0 0 0.0 1.0
#> V3 9.5 3 5.0 3.0
#> V4 3.5 4 3.0 1.0
# 4 row & col penalties
drow_min <- apply(dmean, 1, function(x){
xord <- x[order(x)] ;
xord[2] - xord[1]})
drow_min
#> V1 V2 V3 V4
#> 0.5 0.0 0.0 2.0
dcol_min <- apply(dmean, 2, function(x){
xord <- x[order(x)] ;
xord[2] - xord[1]})
dcol_min
#> [1] 3.5 1.0 3.0 0.0
Então você pode usar ife elseestruturar em 5; whilepara o 6 e exporte seus dados de volta para o Excel com readr::write_excel_csv().
Boa sorte !