Programa R para resolver TP com meu método

Oct 16 2020

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

cbo Oct 16 2020 at 17:21

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 !