Неправильные значения оптимального решенияPython

Программы на Python
Anonymous
Неправильные значения оптимального решения

Сообщение Anonymous »


Я пытаюсь решить линейную оптимизацию проблема В моем случае K равен 2, а p1, p2 — все 0,5, n=8 и m=5. В частности, полная формула задачи такова: Вот этот с ограничениями Для простоты: поскольку K в этой задаче невелик, мне не нужно создавать для него матрицу. Вместо этого я объявляю отдельные переменные: y1, y2, z1, z2, d1 и d2. Предполагается, что все переменные неотрицательны.

Я пытался решить эту проблему, используя pyomo в Python.

импортировать pyomo.environ как pyo модель = pyo.AbstractModel() model.n = pyo.Param(within=pyo.NonNegativeIntegers) model.m = pyo.Param(within=pyo.NonNegativeIntegers) модель.I = pyo.RangeSet(model.n) model.J = pyo.RangeSet(model.m) model.c = pyo.Param(model.J) model.a = pyo.Param(model.I, model.J) модель.l = pyo.Param(model.I) модель.q = pyo.Param(model.I) model.s = pyo.Param(model.J) model.d_1 = pyo.Param(model.I) model.d_2 = pyo.Param(model.I) model.x = pyo.Var(model.J, домен=pyo.NonNegativeReals) model.y_1 = pyo.Var(model.J, домен=pyo.NonNegativeReals) model.z_1 = pyo.Var(model.I, домен=pyo.NonNegativeReals) model.y_2 = pyo.Var(model.J, домен=pyo.NonNegativeReals) model.z_2 = pyo.Var(model.I, домен=pyo.NonNegativeReals) защита obj_expression(м): return sum(m.c[j]*m.x[j] для j в m.J) + 0,5*(sum((m.l-m.q)*m.z_1 для i в m.I) - sum(m.s [j]*m.y_1[j] для j в m.J)) + 0,5*(sum((m.l-m.q)*m.z_2 для i в m.I) - sum(m.s[ j]*m.y_2[j] для j в м.Дж)) model.OBJ = pyo.Objective(rule=obj_expression, sense=pyo.minimize) Защитное ограничение1_rule(m, j): return m.y_1[j] == m.x[j] - sum(m.a[i,j]*m.z_1 для i в m.I) Защитное ограничение2_rule(m, j): return m.y_2[j] == m.x[j] - sum(m.a[i,j]*m.z_2 для i в m.I) Защиту ограничения3_rule (м, я): вернуть m.z_1

Вернуться в «Python»