Я пишу этот ответ w.r.t. на python 3, поскольку у меня изначально была та же проблема.
Я должен был получить данные из arduino с помощью PySerial
и записать их в CSV-файле. Каждое чтение в моем случае заканчивалось на '\r\n'
, поэтому новая строка всегда разделяла каждую строку.
В моем случае опция newline=''
не работала. Потому что это показало некоторую ошибку, например:
with open('op.csv', 'a',newline=' ') as csv_file:
ValueError: illegal newline value: ''
Итак, казалось, что они не согласны с отсутствием новой строки здесь.
Увидев только один из ответов, я упомянул о терминаторе линии в объекте writer, например,
writer = csv.writer(csv_file, delimiter=' ',lineterminator='\r')
, и это работало для меня для пропуска дополнительных строк перевода строк.
Действительно ли Ваша проблема выпукла? Линейный? Нелинейный? Я соглашаюсь, что SciPy.optimize, вероятно, сделает задание, но fmincon является своего рода симметрирующим устройством для решения проблем оптимизации, и Вы будете более обеспечены, если можно ограничить его одной из категорий ниже (на увеличивающемся уровне трудности решить эффективно)
Квадратичная программа (QP) Линейной программы (LP) Выпуклая Программа конуса второго порядка (SOCP) Квадратично ограниченной квадратичной программы (QCQP) Полуопределенная Программа (SDP) Нелинейная Выпуклая проблема Невыпуклая проблема
существует также combinatoric проблемы, такие как Смешано-целочисленные линейные программы (MILP), но Вы не упомянули вида ограничений целостности, достаточны, чтобы сказать, что они попадают в другой класс проблем.
пакет CVXOpt будет очень полезен для Вас, если Ваша проблема будет выпукла.
, Если Ваша проблема не выпукла, необходимо выбрать между нахождением локального решения или глобального решения. Много выпуклых решателей 'вид' работы в невыпуклом домене. Нахождение хорошего приближения к глобальному решению потребовало бы некоторой формы Моделируемый Отжиг или Генетический алгоритм. Нахождение глобального решения потребует перечисления всех локальных решений или комбинаторной стратегии, таких как Ответвление и Связанный.
Пакет Python с открытым исходным кодом, SciPy, имеет вполне большой набор стандартных программ оптимизации включая некоторых для многовариантных проблем с ограничениями (который является тем, что делает fmincon я верю). Как только у Вас есть установленный SciPy, вводят следующее в командной строке Python
справка (scipy.optimize)
, получающийся документ обширен и включает следующее, которому я верю, мог бы быть полезен для Вас.
Constrained Optimizers (multivariate)
fmin_l_bfgs_b -- Zhu, Byrd, and Nocedal's L-BFGS-B constrained optimizer
(if you use this please quote their papers -- see help)
fmin_tnc -- Truncated Newton Code originally written by Stephen Nash and
adapted to C by Jean-Sebastien Roy.
fmin_cobyla -- Constrained Optimization BY Linear Approximation
Октава GNU является другим клоном MATLAB, который мог бы иметь то, в чем Вы нуждаетесь.
Для численной оптимизации в Python вы можете взглянуть на решатели OpenOpt:
Взгляните на http://www.aemdesign.com/downloadfsqp.htm .
Там Вы найдете код C, который обеспечивает ту же функциональность как fmincon
. (Однако использование другого алгоритма. Можно прочитать руководство, если Вы интересуетесь деталями.)
Это - открытый исходный код, но не под GPL.
Существует программа, названная SciLab, который является клоном MATLAB.
я не использовал его вообще, но это - открытый исходный код и могло бы иметь функцию, которую Вы ищете.
Я не знаю, там ли это, но существует распределение Python, названное Enthought, который мог бы иметь то, что Вы ищете. Это было специально разработано для анализа данных, имеет более чем 60 дополнительных библиотек.
Программа оптимизации Python:
OpenOpt http://openopt.org (эта программа основана на numpy по вашему желанию, с автоматической дифференциацией с помощью FuncDesigner)
Pyomo https://software.sandia.gov/trac/coopr/wiki/Package/pyomo