Выражение содержит Inf или NaN

Функции моделирования оптимизации не позволяют вам задать комплексные, Inf, или NaN значения. Однако Inf или NaN выражения могут возникнуть во время обычных операций. Часто эти выражения приводят к ошибочным решениям.

Выражения оптимизации, содержащие Inf или NaN не может отображаться. Для примера самое большое вещественное число в арифметике двойной точности - это около 1.8e308. Итак 2e308 переполнения в Inf.

x = optimvar('x');
y = 1e308;
expr = 2*x*y
expr = 

  OptimizationExpression

    Expression contains Inf or NaN.

Точно так же, потому что Inf - Inf = NaNследующее выражение не может быть отображено.

expr = 2*x*y - 3*x*y
expr = 

  OptimizationExpression

    Expression contains Inf or NaN.

Если любое из ваших выражений оптимизации содержит Inf или NaN, попробуйте удалить эти значения перед вызовом solve. Для этого:

  • Поиск этих выражений при помощи show или write функций.

  • Проверьте, получены ли выражения от деления на нули или от сложения или умножения больших величин. Если это так, исключить или исправить выражения.

  • Обычно эти выражения появляются в результате ошибок. Однако иногда они возникают из-за плохого масштабирования. При необходимости разделите каждое релевантное выражение на достаточно большой скаляр, чтобы выражение больше не переполнялось, или используйте другую операцию масштабирования.

См. также

|

Похожие темы