Как я могу исправить значение переменной без дополнительных ограничений - PullRequest
0 голосов
/ 04 марта 2020

Мне нужно сделать Fix & Optimize heuristi c, и мне нужно исправить последнее значение некоторых переменных, но без ограничения добавления, потому что проблема большая, а ограничение больше - хуже.

Пример, который мне не нужен :

prob.addConstraint (Y [m, j, t, o] == 154,56.

У меня есть значение начального значения в переменной [dict] и я использую

        for k, v in varsdict.items():
            k.setInitialValue(v) 

для определения значения, но нужно исправить почти одно.

Я использую решение>

solver = pulp.CPLEX_CMD (msg = 1, mip_start = 1, timelimit = '3600') prob.solve (решатель)

спасибо сообществу

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Спасибо, ваш ответ, Даниэль, я попробовал этот метод, но решение изменилось в heuristi c. У меня есть 5 прогонов каждого исправления всех переменных для проверки теста, и объективное значение отличается.

   for k, v in varsdict.items():
                k.setInitialValue(v) 
                k.lowBound= v
                k.upBound=v                                                                                                                  prob.solve.pulp.CPLEX_CMD(msg=1, timelimit = time_limit)                                                     

решение: Выполнить FO

1   202397489,1

2   202397489,1

3   265216100

4   202397489,1

5   265216100
0 голосов
/ 04 марта 2020

Вы можете напрямую изменить границы переменной, см. Следующий вопрос: Как динамически изменить границы LpVariable в PuLP?

Так что вы можете просто установить ниже и верхняя граница переменной к тому же значению, и переменная будет фиксированной.

...