Оптимизатор поддерживает ограничения `or` и` count` в AMPL - PullRequest
0 голосов
/ 22 сентября 2018

Я разработал модель AMPL.

Я хочу добавить к ней некоторые ограничения, такие как:

s.t. Max_dif_prod {t in 1..T}: 
    count {p in PRODUCTS} (production[p,t] > 0) <= max_dif_prod ;

s.t. Min_prod {p in PRODUCTS, t in 1..T}:
    production[p,t] = 0 or production[p,t] >= min_production[p] ;

Но ни решатель по умолчанию (MINOS), ни открытый код нелинейныйРешатели, перечисленные на веб-странице AMPL (IPOPT, BONMIN и COUENNE), по-видимому, способны справиться с этим типом ограничений, и, поскольку я нахожусь в демо-версии, проприетарные нелинейные решатели AMPL исключены.

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

1 Ответ

0 голосов
/ 22 сентября 2018

Глава о целочисленном программировании в книге AMPL помогла мне решить этот вопрос.

Реализованное мною решение состояло в том, чтобы переформулировать ограничения с использованием двоичных переменных, а затем использовать решатель CPLEX.

...