При определении задачи смешанного целочисленного линейного программирования с использованием целлюлозы можно определить sos следующим образом:
x1 = LpVariable('x1', cat = LpInteger)
x2 = LpVariable('x2', cat = LpInteger)
prob.sos1['sos'] = x1 + 2*x2
("sos", или специально упорядоченный набор, является специальным ограничением, определяющим, что только одна переменная в наборе может быть ненулевой).
Мы видим, что это позволяет задавать весовые коэффициенты для переменных sos (в данном случае 1,2). Предположительно они определяют приоритет каждой переменной, то есть какие переменные должны быть первыми отличными от нуля при ветвлении.
Но как именно определяются веса?
Основным решателем является монета-или-КБК, и я не смог ничего найти о том, как они используют веса SOS.