PSO пропускает мои ограничения при оценке и останавливается только на 1 итерации - PullRequest
0 голосов
/ 23 ноября 2018

Вот вариант кода, который я пытаюсь оптимизировать

*

library(mopsocd)
fn1 <- function(x)
{
f1 <- 50000 * x[1] + 800 * x[2]
return(f1)
}
gn <- function(x)
{
g1 <- (x[1] * (x[2]/0.002)) - (x[1] *( (x[2]/0.002) - 
( 800 / (x[2] * 20 * 1000)))) - 50000 <= 0.0
g2 <- (x[2]+x[1]) - 100 <= 0.0 
return(c(g1, g2))
}
varcount <-2
fncount <- 1
lbound <- c(3,2)
ubound <- c(100,25)
optmin <- 0
ex2 <- mopsocd( fn1, gn, varcnt = varcount, 
fncnt = fncount, lowerbound = lbound, upperbound = ubound, 
opt = optmin, popsize=100, maxgen=25, archivesize=500)
print(ex2$numsols)
print(ex2$objfnvalues)
print(ex2$paramvalues)

*

Когда я запускаю код, я не получаю никаких сообщений об ошибках.Но оптимизатор не переходит к следующей итерации и не соблюдает ограничений.Он просто возвращает мне нижние границы переменной, поскольку это проблема минимизации.

Я совершенно новичок в кодировании.Может кто-нибудь помочь мне с кодом?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...