R программа для решения TP с помощью моего метода

#r

#r

Вопрос:

Я разработал новый метод для решения TP, но я очень медленно программирую, можете ли вы помочь написать программу для метода???

** III. АЛГОРИТМ AOCM ШАГ 1. Вычтите наименьшую стоимость из каждого элемента каждой строки таблицы транспортировки и поместите ее справа над этим элементом.

ШАГ 2. Вычтите наименьшую стоимость из каждого элемента каждого столбца таблицы транспортировки и поместите ее в правый нижний конец этого элемента.

ШАГ 3. Создайте новую матрицу, элементами которой являются средние значения правого верхнего и правого нижнего элементов шага 1 и шага 2.

ШАГ 4. Найдите штрафы за строки и столбцы, взяв разницу между наименьшим и следующим наименьшим значением в строке и столбце.

ШАГ 5. Определите наибольший штраф и выделите максимально возможное количество для той ячейки, которая имеет минимальное значение элемента в соответствующей строке или столбце. Если существует связь между наибольшими штрафными санкциями, то связь можно разорвать, взяв разницу между наименьшим и следующим за наименьшим элементом, если связь все еще не разорвана, повторите процедуру с рядом со следующим наименьшим и так далее, если связь все еще не разорвана, выберите произвольно.

ШАГ 6. Повторяйте шаги с 5 по 6, пока не будет выполнено требование rim.

ШАГ 7. Поместите эти выделенные значения в исходном TT в соответствующую ячейку.

ШАГ 8. Рассчитайте стоимость транспортировки TT. Этот расчет представляет собой сумму произведения стоимости транспортировки единицы и выделенного количества.**

Проблема

Комментарии:

1. @cbo пожалуйста, взгляните сюда

2. хорошо, их довольно много! 🙂

3. да. Я очень медленно программирую, можете ли вы предложить мне хорошую книгу для изучения ‘R’

4. Свободно в Интернете вы можете ознакомиться с R для науки о данных , здесь больше ссылок.

Ответ №1:

Я не до конца понял ваши назначения после 4-го пункта, но это должно помочь вам начать (используя данные, предоставленные в вашем 1-м вопросе) :

 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 amp; 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
  

Затем вы могли бы использовать if и else структурировать в 5; while для 6 и экспортировать свои данные обратно в Excel readr::write_excel_csv() .

Удачи!

Комментарии:

1. Я ценю ваши усилия, я не могу предоставить вам необходимую информацию. вот оно [ drive.google.com/file/d/1mnz7ST1VFJ3Ptim-KvxGo_kv-5y9EKie/… Это моя статья. Надеюсь, теперь вы понимаете, чего я именно хочу.