Оптимист R-Forge проект

Я изучаю проблему упаковки бина, начиная с кода ранца алгоритма Мартелло. Это написано в старом Fortran IV или 66 коде. Я нашел очень интересный проект в R-Forge, который вызывал Optimist (администратор Ханс В. Борхерс), что с помощью консоли R вы можете вызвать подпрограмму, написанную на Fortran 66, и запустить ее для проверки результатов. Это полезно, если вы хотите написать код на более современном языке и проверить, дойдете ли вы до тех же результатов. Я скачал R x64 3.3.1 и пакеты Optimist. Я не знаю, как запустить эти пакеты из R. Я говорю: вызвать подпрограмму в Fortran, ввести данные и просмотреть результаты из R IDE.

Какие-либо предложения?

Заранее спасибо. Эдуардо

1 ответ

Решение

Оригинальные подпрограммы Martello и Toth Fortran доступны в пакете "рюкзак" проекта Optimist R-Forge (а не в пакете "adagio"). К сожалению, эти коды Фортрана не могут быть распространены через CRAN. Причина в том, что они публикуются под лицензией ACM и не совместимы с GPL. Я спросил профессора Сильвано Мартелло, не желает ли он изменить лицензию, но он не мог или не хотел этого делать (как он прямо сказал мне).

Для начала: я думаю, что вы установили R или, что еще лучше, R и RStudio. Когда вы запустили R, сначала вам нужно установить пакет один раз и загружать его каждый раз, когда вы запускаете R заново: (Вам потребуется доступный компилятор Фортрана, но я думаю, что он у вас есть).

> install.packages("knapsack", repos="http://R-Forge.R-project.org")
> library(knapsack)

Тогда вы можете позвонить help или же example например, функция ранца. Функции, реализованные в данный момент knapsack а также subsetsum, Страницы справки покажут вам, как применять эти процедуры. p а также w (прибыль и вес) должны быть векторами целочисленных значений равной длины, с p[i]/w[i] строго убывающая последовательность:

> p = c(15, 100, 90, 60, 40, 15, 10,  1)
> w = c( 2,  20, 20, 30, 40, 30, 60, 10)
> cap = 102

Теперь вы можете вызвать функцию ранца и отобразить результат:

> res = knapsack(p, w, cap)
> res
# [1]  1 2 3 4 6

Существует также подпрограмма подмножества. Другие коды из книги Мартелло и Тота еще не были упакованы в пакет "рюкзак". Но это легко сделать, если вы заинтересованы. Эти дополнительные процедуры решают проблемы с упаковкой, назначением и внесением изменений.

Другие вопросы по тегам