Inf или NaNФункции оптимизации моделирования не позволяют задавать сложные, Inf, или NaN значения. Однако Inf или NaN выражения могут возникать во время обычных операций. Часто эти выражения приводят к ошибочным решениям.
Выражения оптимизации, содержащие Inf или NaN невозможно отобразить. Например, наибольшее вещественное число в арифметике двойной точности составляет около 1.8e308. Так 2e308 переполнения в Inf.
x = optimvar('x');
y = 1e308;
expr = 2*x*yexpr =
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 функции.
Проверьте, произошли ли выражения от деления на ноль или от сложения или умножения больших величин. Если да, удалите или исправьте выражения.
Обычно эти выражения появляются в результате ошибок. Однако иногда они возникают из-за плохого масштабирования. При необходимости разделите каждое релевантное выражение на достаточно большой скаляр, чтобы выражение больше не переполнялось, или используйте другую операцию масштабирования.