В настоящее время работает над программным обеспечением Monolix (программное обеспечение для оценки параметров математических моделей).В настоящее время я использую функции R, доступные для этого программного обеспечения.Это достигается точно так же, как это возможно с помощью пользовательского интерфейса.
Для запуска функций в R необходимо предоставить файл, соответствующий модели, которую мы хотим протестировать.Итак, я создал 100 файлов в формате mlxtran, которые абсолютно одинаковы для дизайна модели, они различаются только в наборе данных для обработки.
Сначала мне удалось понять, что мои операции над одним файлом mlxtran, это сработало.Затем я сделал это благодаря циклу for, чтобы выполнить анализ 100 файлов в моем списке, и это сработало.Проблема возникает, когда я должен сделать это путем распараллеливания моего кода с помощью функции dopar цикла foreach.
#Version that works
library(lixoftConnectors)
initializeLixoftConnectors(software = "monolix")
library(doParallel)
library(dplyr)
#Put my 100 mlxtran in a list
ldfRec <- dir(pattern = "*.mlxtran")
#Version fonctionnant avec un seul
loadProject(ldfRec[1])
runScenario()
ResultPopParameters<-getEstimatedPopulationParameters()
ResultPopParameters
#Version that does not work
cl <- detectCores() %>% -1 %>% makeCluster
registerDoParallel(cl)
#Put my 100 mlxtran in a list
ldfRec <- dir(pattern = "*.mlxtran")
resultatsForEach<-foreach(z=1:100, .packages=c("lixoftConnectors","dplyr","doParallel")) %dopar% {
loadProject(ldfRec[z])
runScenario()
ResultPopParameters<-getEstimatedPopulationParameters()
ResultsStandardErrors<-getEstimatedStandardErrors()
}
stopCluster(cl)
Я ожидаю вывода для всех моих файлов.Результаты за один прогон выглядят так:
ka_pop 1.56 V_pop 2.4 ....
Это список со всеми оценками для каждого параметра моей модели.
Длятеперь, с циклом foreach у меня есть список resultForEach только со значением NULL.
Я прошу прощения за грамматические ошибки, Благодарю вас