Как оказалось,
SetCoefficient(goal, 2.0, x, y)
Имеет тот же эффект, что и
SetCoefficient(goal, 2.0, y, x)
Результатом обоих вызовов является установка коэффициента члена x * y в вашей целевой функции, а второй вызов просто перезаписывает коэффициент, который вы установили в первом вызове. Решатель не рассматривает член xy в отличие от члена yx, а не добавляет коэффициенты (как я ожидал). Итак, если ваша цель состоит в том, чтобы в вашей целевой функции был термин 4xy, вы должны сделать следующий вызов:
SetCoefficient(goal, 4.0, x, y)
вместо двух вызовов, перечисленных выше.