Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Black box optimization
Replies: 2   Last Post: May 3, 2012 10:24 PM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
McHale, Paul

Posts: 60
Registered: 5/29/11
Re: Black box optimization
Posted: May 3, 2012 10:24 PM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

Hi,

I found an answer to the question.

If you have a generic function that returns an error magnitude driving by parameter when calling...

f[x_]:=Module[{error},
-- Some data computation --;
error= -- Some error generator function --;
error
]

NMinimize[] will use derivatives to find the minimum. This is great unless you have numeric data and algorithms. To motivate numerical methods:

NMinimize[fm[x], x]

Switch the definition to:

f[x_?NumericQ]:=Module[{error},
-- Some data computation --;
error= -- Some error generator function --;
error
]

This will force use of numerical algorithms. There may be a better way, but this one works very well. I'm not sure why NMinimize[] doesn't seem to detect this correctly without the NumericQ addition.

Thanks,
Paul


Paul McHale | Electrical Engineer, Energetics Systems | Excelitas Technologies Corp.

Phone: +1 937.865.3004 | Fax: +1 937.865.5170 | Mobile: +1 937.371.2828
1100 Vanguard Blvd, Miamisburg, Ohio 45342-0312 USA
Paul.McHale@Excelitas.com
www.excelitas.com



Please consider the environment before printing this e-mail.
This email message and any attachments are confidential and proprietary to Excelitas Technologies Corp. If you are not the intended recipient of this message, please inform the sender by replying to this email or sending a message to the sender and destroy the message and any attachments.
Thank you

-----Original Message-----
From: McHale, Paul
Sent: Friday, April 27, 2012 9:24 AM
Subject: Black box optimization

Is there any black box optimization of user defined non-polynomial functions in Mathematica? I.e.

I want to minimize fm[x] between 0.010 and 0.060. The goal is to fit the data with mx+b. This requires two points. The first point in the data has to be zero or first element shown below. The other single point must allow a fit with minimum error between the original data points and the new data points generated from an mx+b approximation.

fm[mPt_]:=Module[{mMinFit,mFit,mError,x,InData},
InData={{0.`,0.3457378`},{0.005005030108147661`,0.5947282`},{0.010167934319260488`,1.110245`},{0.015746789471210974`,1.753068`},{0.019877754878728275`,2.26061`},{0.025058168807019193`,2.891833`},{0.029851036834650214`,3.470055`},{0.03486106617079409`,4.088596`},{0.04009652061250109`,4.721034`},{0.04501992441075972`,5.31037`},{0.049993105670535644`,5.912859`},{0.054948450286312706`,6.513352`},{0.06007028590992394`,7.144364`}};
(* Use mMinFit to select Y value for selected point *) mMinFit=Fit[Select[InData, #[[1]] > 0.01&],{1,x},x];
(* Generate fit between new fit between first point and new test point *) mFit=Fit[{First@InData,{mPt,mMinFit /. x->mPt}},{1,x},x];
(* subtract real data from points generated by new curve *) mError=Total@Table[Abs@(m[[2]]-mFit /. x ->m[[1]]),{m,InData}] ]

Calling fm[0.01] calculates the fit using {{0.`,0.3457378`},{0.01,InterpValue} as the two points mx+b must pass through. It then returns the Abs[] of the difference between the original points (InData) and the interpolated points based on original x values. This is intended to be the error function. Minimizing fm[x] should give the best possible choice of x to calibrate with.

I can always fall back to:

m=Table[{i,fm[i]},{i,0.010,0.060,0.00001}];
First@Sort[m,#1[[2]] < #2[[2]]&]

Out:= {0.04474,2.13522}

Here is a decent graph of the issue:

ListPlot[Table[fm[i], {i, 0.010, 0.060, 0.001}], Joined -> True]

I thought I found a better way in Mathematica before...


Paul McHale | Electrical Engineer, Energetics Systems | Excelitas Technologies Corp.

Phone: +1 937.865.3004 | Fax: +1 937.865.5170 | Mobile: +1 937.371.2828
1100 Vanguard Blvd, Miamisburg, Ohio 45342-0312 USA Paul.McHale@Excelitas.com www.excelitas.com



Please consider the environment before printing this e-mail.
This email message and any attachments are confidential and proprietary to Excelitas Technologies Corp. If you are not the intended recipient of this message, please inform the sender by replying to this email or sending a message to the sender and destroy the message and any attachments.
Thank you





Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.