Programma R per risolvere TP con il mio metodo

Oct 16 2020

Ho sviluppato un nuovo metodo per risolvere TP, ma sono molto lento con la programmazione, puoi aiutarmi a scrivere il programma per il metodo ???

** III. ALGOTITMO DI AOCM PASSO 1. Sottrai il costo più piccolo da ogni elemento di ogni riga della tabella di trasporto e mettilo sopra a destra di quell'elemento.

FASE 2. Sottrai il costo più piccolo da ogni elemento di ogni colonna della tabella di trasporto e mettilo in fondo a destra di quell'elemento.

FASE 3. Creare una nuova matrice i cui elementi siano il valore medio della parte superiore destra e inferiore destra degli elementi delle fasi 1 e 2.

FASE 4. Trova le penalità di riga e colonna prendendo la differenza tra il valore più piccolo e successivo più piccolo in riga e colonna.

PASSAGGIO 5. Identificare la penalità maggiore e allocare la quantità massima possibile a quella cella con il valore minimo dell'elemento nella riga o colonna corrispondente. Se c'è un pareggio tra le penalità maggiori, allora il pareggio può essere risolto prendendo la differenza tra l'elemento più piccolo e quello vicino al più piccolo, se il pareggio non è ancora risolto, ripetere la procedura con il prossimo al più piccolo successivo e così via, se il pareggio non è ancora rotto, selezionare arbitrariamente.

FASE 6. Ripetere i passaggi da 5 a 6 finché il requisito del cerchio non è soddisfatto.

PASSAGGIO 7. Mettere questi valori allocati nel TT originale nella cella corrispondente.

FASE 8. Calcola il costo di trasporto di TT. Questo calcolo è la somma del prodotto del costo di trasporto unitario e della quantità allocata. **

Risposte

cbo Oct 16 2020 at 17:21

Non ho compreso appieno i tuoi compiti dopo il 4 ° punto, ma questo dovrebbe aiutarti a iniziare (utilizzando i dati forniti nella tua prima domanda):

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

Quindi puoi usare ife elsestrutturare in 5; whileper il 6 ed esporta nuovamente i tuoi dati per eccellere readr::write_excel_csv().

In bocca al lupo !