Ошибка алгоритма проверки неосуществимости Pyomo - PullRequest
0 голосов
/ 27 августа 2018

Это мой следующий (третий) вопрос после двух вопросов, которые я задавал ранее.Их можно найти ниже:

1-й Выяснение причины невозможности модели Pyomo
2-й Модуль Pyomo Util Not Found

Как вы сказали @Qi Chen (ответ на 2-й вопрос), я сделал следующее:

вы можете просто взять функцию в https://github.com/Pyomo/pyomo/blob/master/pyomo/util/infeasible.py и поместите его в свой собственный код (вместе со связанными необходимыми импортами)

Кстати, выше log_infeasible_constraints функция подразумевает function .

Но я сталкиваюсь с ошибкой, которую не могу понять, почему.Вот некоторые предварительные знания о модели:

  1. У меня нет права делиться информацией о модели, поэтому я подверг цензуре их, изменив их имена на some_vars или xxx и т. Д...
  2. Gamma является переменной в модели, а также целью минимизации.Таким образом, это нормально, что он не имеет никакого значения для недопустимой модели?
  3. Как мне исправить функцию log_infeasible_constraints, чтобы показать мне; "это ограничение делает вашу модель недопустимой из-за значения этой переменной" или что-то подобное?

Ошибка:

WARNING: Loading a SolverResults object with a warning status into model=xxxxx;
        message from solver=Model was proven to be infeasible.
ERROR: evaluating expression: No value for uninitialized NumericValue object
    Gamma
        (expression: some_var[some_index1] +
        some_var[some_index2] + some_var[some_index3] +
        some_var[some_index4] + some_var[some_index5] +
        some_var[some_index6] + some_var[some_index7] +
        some_var[some_index8] + some_var[some_index9] +
        some_var[some_index10] - 0.0 - Gamma)
ERROR: evaluating object as numeric value: some_var[some_index1] +
        some_var[some_index2] + some_var[some_index3] +
        some_var[some_index4] + some_var[some_index5] +
        some_var[some_index6] + some_var[some_index7] +
        some_var[some_index8] + some_var[some_index9] +
        some_var[some_index10] - 0.0 - Gamma
        (object: <class 'pyomo.core.kernel.expr_coopr3._SumExpression'>)
    No value for uninitialized NumericValue object Gamma
Traceback (most recent call last):
  File "xxxxx.py", line 464, in <module>
    report_tuples=report_tuples)
  File "xxxxx.py", line 213, in xxx_xxxxxx
    now = master.created
  File "xxxxx.py", line 36, in log_infeasible_constraints
    if constr.has_ub() and value(constr.body - constr.upper) >= tol:
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\numvalue.py", line 161, in value
    tmp = numeric(exception=exception)
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\expr_coopr3.py", line 208, in __call__
    exception=exception))
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\expr_coopr3.py", line 812, in _apply_operation
    return sum(c*next(values) for c in self._coef) + self._const
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\expr_coopr3.py", line 812, in <genexpr>
    return sum(c*next(values) for c in self._coef) + self._const
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\expr_coopr3.py", line 217, in _evaluate_arglist
    yield value(arg, exception=exception)
  File "C:\Program Files\Anaconda3\lib\site-packages\pyomo\core\kernel\numvalue.py", line 170, in value
    % (obj.name,))
ValueError: No value for uninitialized NumericValue object Gamma
...