#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/… Это моя статья. Надеюсь, теперь вы понимаете, чего я именно хочу.