Помогите маленько, пожалуйста (линейная оптимизация)...

 
В процессе работы появилась необходимость подгонять кривую вида
y=y0+A(1-exp(-(x-x0)/t1))^P*exp(-(x-x0)/t2)
под экспериментальные данные, причём "на лету" (минимум- процессор 486/100), с отсечением случаев, когда данные не подгоняются....
В общем, задача оптимизации.
В Яндексе рыл - "библиотека симплекс"... ничего внятного для себя не нарыл...
То есть что-то там есть, но обычно для немеряного количества переменных, stand-alone программы, или нет исходника...

Подскажите, что читать, где рыть?
 
+
-
edit
 

varban

администратор
★★★
Matlab, Optimisation toolbox.

Однако машинка у тебя не очень резвая... если что, надо будет тебе на досовском матлабе или на 4.12, под вынь 3.1
 
Может не очень внятно сформулировал - требуется исходный код, на С,Pascal,Fortran... Там это есть? Кстати, точек данных - всего штук 50-100. В Origin за ~350 simplex итераций всё сходится вполне прилично, т.е. я думаю, четвёрка должна бы справиться за разумное время.
 
+
-
edit
 

varban

администратор
★★★
Если надо чистое приложение, могу тебе дать сорц на C по методу Nelder-Mead
Как раз с использованием Матлаба писали - сначала поняли, что нам метод Н-М годится, отработали модель в матлабе, а потом взяли и перевели на С.
Работает в несколько десятков раз быстрее матлаба, но и писали мы его не в пример дольше - 3 месяцев.
 
То есть там есть функция типа Optimise(lpFunc,lpParm,nMaxIterations)...?
 
+
-
edit
 

varban

администратор
★★★
Там пример для другой функции:

Y = a[0] + a[i]*exp(-b[i]*x)

Пример - в m формате, тоесть, сорц есть. Но он на сверхвысоком уровне :wink: Потому как для решения системы линейных уравнений используется встроенная Q-R decomposition.

Если тебе просто надо обсчитать данные, рекомендую нарыть шестую, последнюю версию и поставить ее на чем-то приличном. Хотя бы на пне, лучше на втором. Иначе будет тормозить сама среда. Отработав задачку, конечно, можешь попробовать считать на четверке, если вында на нее влезет :smile: А если тебе надо в софтину сорц встроить, то тоже есть 2 варианта:
1. Экспортнуть все это в С или ФОР - коде;
2. Перевести вручную... как подвариант - взять у меня :smile: Писали мы еще с одним парнем, для очистки совести спрошу у него разрешение, но уверен, что дасть :smile: К сожалению, я так и не освоил экспорт кода из матлабе - была версия, в которой это работало, но она похерилась, а теперь попросту ни hrefa не экспортится. Но те, кто работают интенсивно на матлабе, это умеют делать... кстати, именно к ним и иди за сидюком с установкой - есть масса пиратских версии, которые не запускаются.
 
+
-
edit
 

varban

администратор
★★★
Vale>То есть там есть функция типа Optimise(lpFunc,lpParm,nMaxIterations)...?

Если ты о нашем С-сорце, сначала было, конечно.
Но было до того момента, когда мы убедились, что рукомесленность наша считает точно так же, как и матлаб (гроссбух с матфункциями у нас не было, пару исскуственных примеров сделали, но этого было мало).
Как мы поняли, что написали верную программу, тут и начали ее портить - оптимизировали для скорости до одури. Использовали глобальные переменные, перевели все на адрессную арифметику, перешли сначала от лонг в дубле, а потом и во флоат.
Потому это чудо в перьях должно было работать в фоновом режиме на 286/287 12MHz.
И код получился как раз такой, за какой и С не любят :eek: Кoроче, боюсь, что у нас осталось что-то типа Optimize();
Если дело дойдет до нашего кода, поищу промежуточные, незаоптимизированные варианты :smile: А если ты о матлабе, то у него синтаксис немножко другой: http://airbase.ru/users/varban/files/fminhelp.txt

Пришлось заливать в файло, потому как убубу узрело недопустимые хтмл-тэги в тексте. Постин потерялся и я новый пишу :frown: :mad:
 
Мне - в софтину встраивать...
Мой личный код, "от балды" написанный, в общем-то offline справляется... правда не за 350, а за 3500 итераций...
вот для online анализа - надо ускориться.
Впрочем, если лениво выдирать код, или есть минимальнейшие трудности с согласованием - не надо заморачиваться. Есть теоретическая возможность запрячь студентов Политеха - им дадут такую курсовую, например :smile: .
// добавлено

Или пусть начальство даёт деньги на модернизацию машинного парка... :wink: :biggrin:
 
+
-
edit
 

varban

администратор
★★★
Я дома посмотрю, что и как.
И наверное пошлю, а ты уж сам решай :smile: Но насчет стьюдентов - это мысль :biggrin:
 
+
-
edit
 

varban

администратор
★★★
> Или пусть начальство даёт деньги на модернизацию машинного парка...

Конечно!
Если есть хотя бы п3 или атлон, дело пойдет веселее.
Берешь Signal processing toolbox, в нем вписываешь модуль оптимизации, пишеш интерфейс под свою ацыпуху и гонишь данные на преобразование.
Можешь их смотреть хоть на экране осцилографа (виртуального :smile: ).
А для масштабирования (скажем) вместо перекомпиляции кода с новыми переменными сидишь и вальяжно подкручиваешь мышкой потенциометр Y :smile: Вообще Matlab (Matrix Labolatory) для таких делов - рулез форева!
Кстати, пакет дорогой, но если ты в универе, наверняка есть купленные по дешевке спецверсии. У них ограничение на использование для создания торговых продуктов.
Потом, Matlab есть не только под вындами. Есть и линух, и мак, и солярный и куча еще вариантов.
Тоесть, освоив его, не пожалеешь, на чем бы ни работал :smile: Но надо поддерживать форму - я 5 лет не работал, 3 версии пропустил и теперь смотрю несколько обалдевши на шестерку...

Вон Зевс вечерком забежит, тоже скажет пару слов :smile:
 

Zeus

Динамик

А че я-то? Я сам офигел! :biggrin: Вообще я Матлаб еще не очень знаю, к тому же я больше вожусь с Симулинком, а не с обработкой его результатов :wink: Но то что рулез - это точно :cool:
И животноводство!  
RU asoneofus #02.10.2001 09:35
+
-
edit
 

asoneofus

старожил

Zeus>Вообще я Матлаб еще не очень знаю, к тому же я больше вожусь с Симулинком, а не с обработкой его результатов :wink: Но то что рулез - это точно :cool: Йес оыф кос... :smile: У нас оплатили уже 6.1, на днях привезут...
"... аще где в книге сей грубостию моей пропись или небрежением писано, молю Вас: не зазрите моему окаянству, не кляните, но поправьте, писал бо не ангел Божий, но человек грешен и зело исполнен неведения ..."  
Какой-такой Пень3 или Атлон? :biggrin: Вот, снято на 486/50 года два назад:



Честный ДОС (Real-mode Win'95,то есть).... И всё на функциональных клавишах - ибо нефиг.
Зато по минимуму хватало той самой четвёрки...
 

Zeus

Динамик

asoneofus>Йес оыф кос... :smile: У нас оплатили уже 6.1, на днях привезут...

Сколько оплатили, интересно? Полный матлаб стоит в районе 3500 злн. руб., столько же симулинк, а Real-Time Workshop вообще за 13 тыс зашкаливает... В принципе, студенческий в районе ста баксов, но это несерьезно :wink:
И животноводство!  
+
-
edit
 

varban

администратор
★★★
Ох :frown: Забыл вообще :frown: Завтра тащу сидюк из дома и выколупаю сорц оптимизации.

Про версию - у меня 6.0.0.88, релиз 12
Аккурат с прошлого года.
Правда, не платил :frown: Но не использую :wink: Но могу :biggrin: :biggrin: :biggrin:
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru