Альтернатива с открытым исходным кодом функции fmincon MATLAB?

Я пишу этот ответ 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')

, и это работало для меня для пропуска дополнительных строк перевода строк.

31
задан Peter Mortensen 31 March 2010 в 01:00
поделиться

8 ответов

Действительно ли Ваша проблема выпукла? Линейный? Нелинейный? Я соглашаюсь, что SciPy.optimize, вероятно, сделает задание, но fmincon является своего рода симметрирующим устройством для решения проблем оптимизации, и Вы будете более обеспечены, если можно ограничить его одной из категорий ниже (на увеличивающемся уровне трудности решить эффективно)

Квадратичная программа (QP) Линейной программы (LP) Выпуклая Программа конуса второго порядка (SOCP) Квадратично ограниченной квадратичной программы (QCQP) Полуопределенная Программа (SDP) Нелинейная Выпуклая проблема Невыпуклая проблема

существует также combinatoric проблемы, такие как Смешано-целочисленные линейные программы (MILP), но Вы не упомянули вида ограничений целостности, достаточны, чтобы сказать, что они попадают в другой класс проблем.

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

, Если Ваша проблема не выпукла, необходимо выбрать между нахождением локального решения или глобального решения. Много выпуклых решателей 'вид' работы в невыпуклом домене. Нахождение хорошего приближения к глобальному решению потребовало бы некоторой формы Моделируемый Отжиг или Генетический алгоритм. Нахождение глобального решения потребует перечисления всех локальных решений или комбинаторной стратегии, таких как Ответвление и Связанный.

28
ответ дан 27 November 2019 в 21:58
поделиться

Пакет 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
14
ответ дан 27 November 2019 в 21:58
поделиться

Октава GNU является другим клоном MATLAB, который мог бы иметь то, в чем Вы нуждаетесь.

5
ответ дан 27 November 2019 в 21:58
поделиться

Для численной оптимизации в Python вы можете взглянуть на решатели OpenOpt:

http://openopt.org /NLP

http://openopt.org/Problems

3
ответ дан 27 November 2019 в 21:58
поделиться

Взгляните на http://www.aemdesign.com/downloadfsqp.htm .

Там Вы найдете код C, который обеспечивает ту же функциональность как fmincon. (Однако использование другого алгоритма. Можно прочитать руководство, если Вы интересуетесь деталями.)

Это - открытый исходный код, но не под GPL.

1
ответ дан 27 November 2019 в 21:58
поделиться

Существует программа, названная SciLab, который является клоном MATLAB.

я не использовал его вообще, но это - открытый исходный код и могло бы иметь функцию, которую Вы ищете.

1
ответ дан 27 November 2019 в 21:58
поделиться

Я не знаю, там ли это, но существует распределение Python, названное Enthought, который мог бы иметь то, что Вы ищете. Это было специально разработано для анализа данных, имеет более чем 60 дополнительных библиотек.

0
ответ дан 27 November 2019 в 21:58
поделиться

Программа оптимизации Python:

17
ответ дан 27 November 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: