Итак, у меня есть довольно сложная функция matlab (она вызывает симуляцию, которая, в свою очередь, вызывает внешний набор оптимизации (cplex или gurobi)). И для определенных настроек и входов функция MATLAB и функция python, вызванная из Matlab, дают одинаковый результат, но для других они отличаются (правильный ответ - 4500). Python иногда возвращает 0.015 ... или 162381, поэтому широко меняющиеся результаты я не могу определить шаблон или корреляцию.Нечетные результаты функции MATLAB, вызванные в python
Мое предположение было бы либо с преобразованием int/float/double variable, либо с некоторой проблемой памяти. Результат приходит прямо из CPLEX, поэтому я немного смущен, почему он меняется.
На стороне примечания, если я возвращаю структуру, которая содержит структуру массивов, которая убивает ядро python. Это делает отладку с python немного сложнее (у меня установлен pymatbridge и metakernel)
У кого-нибудь были похожие проблемы с ненадежными функциями matlab в python? Идеи решения, отличные от того, выполняются ли они из консоли и читаются в файле результатов?
Я не идея, если это поможет в вашем случае, но если вы еще не знали об этом, вы можете посмотреть по адресу://stackoverflow.com/questions/183853/in-python-what-is-the-difference-between-and-when-used-for-division. В частности, использование 'from __future__ import division' может защитить от таких проблем в Python> = 2.2 (в вашем коде, возможно, не в этом пакете Mathworks). – rkersh
Я уже использовал 'из __future__ import division', поскольку я подозревал, что это вызовет проблемы. Как указано, просто штукатурка всех переменных в double() в Matlab исправила проблему, хотя, если она была выполнена в MATLAB, переменные уже были удвоены, а код выполнялся в Python. Я подозреваю, что MATLAB обрабатывает это по-разному внутренне, и это вызывает проблемы с интерфейсом python. Как только я смогу воспроизвести его, я отправлю пример и при необходимости отправлю сообщение об ошибке. –