⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 praxis.txt

📁 gnuradio软件无线电源程序.现在的手机多基于软件无线电
💻 TXT
字号:
Brent's PRAXIS minimizer is available in FORTRAN 77.        July 1995"Algorithms for Minimization Without Derivatives"by Richard P. Brent, Prentice-Hall, 1973ISBN: 0-13-022335-2This book by Brent was a groundbreaking effort.(I believe that it was his Ph.D. thesis at Stanford.)His algorithms for finding roots and minima inone dimension have good performance for typical problemsand guaranteed performance in the worst case.(A later rootfinder by J. Bus and Dekker gavea much lower bound for the worst case,but no better performance in typical problems.)These algorithms were implemented in both ALGOL Wand FORTRAN by Brent, and have been used fairly widely.Brent also gave a multi-dimensional minimization algorithm,PRAXIS, but only shows an implementation in ALGOL W.This routine has not been widely used, at least in the U.S.The PRAXIS package has been translated into FORTRAN by Rosalee Taylor, Sue Pinski, and me, and I am making it available via anonymous ftp for use asfreeware (please do not remove our names).   ftp a.cs.okstate.edu   anonymous   [enter your userid as password]   cd /pub/jpc   get praxis.f   quit Brent's method and its performanceNewton's method for minimization can find the minimum of aquadratic function in one iteration, but is sometimes notconvenient to use.  In the 1960s, several researchers founditerative methods that solve quadratic problems exactly in afinite number of steps.  C. S. Smith (1962) andM. J. D. Powell (1964) devised methodsthat had this property and did not require derivatives.G. W. Stewart modified the Davidon-Fletcher-Powell quasi-Newtonmethod to use finite difference approximations to approximatethe gradient.  Powell's method, or later versions by Zangwill,were the most successful of the early direct search methodshaving the property of finite convergence on quadratic functions.Powell's method was programmed at Harwell as subroutine VA04A,and is available as file va04a.f in the same directory as praxis.f.VA04A is not extremely robust, and can give underflow, overflow,or division by zero.  va04a.f has several documented patches in itwhere I tried to get around various abnormal terminations.I do not recommend VA04A very strongly. Brent's PRAXIS added orthogonalization and several other featuresto Powell's method.  Brent also dealt carefully with roundoff.William H. Press et al. in their book "Numerical Recipes"comment that"Brent has a number of other cute tricks up his sleeve,and his modification of Powell's method is probablythe best presently known."Roger Fletcher was less enthusiastic in his review of Brent's bookin The Computer Journal 16 (1973) 314:"... I am not convinced that the modifications to Powell'smethod are the best.  Use of eigenvector directionsis not independent of scale changes to the variables,and the use of searches in random directions is hardlyappealing.  Nonetheless all the algorithms are demonstratedto be competitive by numerical examples."The methods of Powell, Brent, et al. require that the functionfor which a local minimum is sought must be smooth;that is, the function and all of its first partial derivativesmust be continuous. Brent compared his method to the methods of Powell, of Stewart,and of Davies, Swann, and Campey.  Indirectly, he compared italso to the Davidon-Fletcher-Powell quasi-Newton method.He found that his method was about as efficient as the bestof these in most cases, and that it was more robust than othersin some cases.  (Pages 139-155 in Brent's book give fair comparisons to other methods.  The results in Table 7.1 onpage 138 are correct, but do not include progress all the wayto convergence, and are therefore not too useful.)On least squares problems, all of these general minimizationmethods are likely to be inefficient compared to least squaresmethods such as the Gauss-Newton or Marquardt methods.  In addition to the scale dependence that Fletcher deplored,PRAXIS also had the disadvantage that it required N, the numberof parameters, to be greater than or equal to two.The failure to handle N=1 is an unnecessary and pointless limitation.The FORTRAN versionWe have followed Brent's PRAXIS rather closely.I have added a patch to try to handle the case N=1,and an option to use a simpler pseudorandom number generator,DRANDM.  The handling of N=1 is not guaranteed.The user writes a main program and a function subprogramto compute the function to be minimized.All communication between the user's main program and PRAXISis done via COMMON, except for an EXTERNAL parameter givingthe name of the function subprogram.The disadvantages of using COMMON are at least two-fold:   1)  Arrays cannot have adjustable dimensions.   2)  Because some actual parameters are COMMON variables,       the FORTRAN version of PRAXIS probably will not pass       the Bell Labs PFORT package as being 100% standard FORTRAN.       Nevertheless, this usage will not cause any conflict in       any commercial FORTRAN compiler ever written.       (If it does, I will apologize and rewrite PRAXIS.)The advantage of using COMMON is that it is not necessary to passabout fifteen more parameters every time the user calls PRAXIS.At present all arrays are dimensioned (20) or (20,20),and this can easily be increased using two simple global editingcommands.  (In this case, increase the value of NMAX.)There are no DATA statements in PRAXIS, and it was not necessaryto use any SAVE statements.We have used DOUBLE PRECISION for all floating point computations,as Brent did.  We recommend using DOUBLE PRECISION on all computersexcept possibly Cray computers, in which REAL is reasonably precise.The value of "machine epsilon" is computed in subroutine PRASETusing bisection, and is called EPSMCH.Brent computes EPSMCH**4 and 1/EPSMCH**4 in PRAXIS,and uses these quantities later.  Because EPSMCH in DOUBLE PRECISION is less than 1E-16,these fourth powers of EPSMCH and 1/EPSMCH will underflowand overflow on such machines as VAXs and PCs,which have a range of only about 1E38, grossly insufficientfor scientific computation.  For such machines, Brent recommendsincreasing the value of EPSMCH.  EPSMCH=1E-9 or possibly even 1E-8 might be necessary.A better solution would be to eliminate the explicit use ofthese fourth powers, accomplishing the same result implicitly.A "bug bounty" of $10 U.S. will be paid by me for the first notification of any error in PRAXIS.The same bounty also applies to any substantive poor designchoice (having no redeeming advantages whatever) in the FORTRANpackage.  (The patch for N=1 is not included, although anysuggested improvements in that will be considered carefully.)praxis.f includes test software to run any of the test problemsthat Brent ran, and is set to run at least one case of each problem.I have run these on an IBM 3090, essentially the same architecture that Brent used, and obtained essentially the sameresults that Brent shows on pages 140-155.  The Hilbert problem withN=12, for which Brent shows no termination results and for whichthe results in Table 7.1 are correct but not relevant,runs a long time; I cut it off at 3000 function evaluations.I don't particularly like Brent's convergence criterion,which allows this sort of extremely slow creeping progress,but have not modified it.Please notify me of any problems with this software,or of any suggested modifications.John ChandlerComputer Science DepartmentOklahoma State UniversityStillwater, Oklahoma 74078, U.S.A.(405) 744-5676jpc@a.cs.okstate.edu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -