向各位求助提供测试函数,谢谢
求助:小弟需要无约束优化测试函数(若你做优化的数值试验自然就明白),苦于无法查找,现希望各位帮助,不胜感激,估计这里是不好打出来的,希冀能发送到本人的邮箱为盼,再次致谢!所需的测试函数的名称如下所示。估计帖子上不好表示,恳请能发送本人信箱shuxueyou@yahoo.com.cn,本人不胜感激!谢谢!
Biggs exp6;
Gussian ;
Penalty II;
Discrete Boundary Value;
Discrete Intergral Value;
BroydenTridiagnal;
Broyden banded;
Linear full rank;
Chebyquad;
[ 本帖最后由 xinyuxf 于 2007-5-5 15:36 编辑 ] google以下大部分都能够找到,比如
biggs exp6 function
*****************************************************************************
* biggs exp6 function
* more, garbow, and hillstrom, acm toms vol. 7 no. 1 (march 1981) 17-41
*****************************************************************************
subroutine getfun( x, n, f, m, ftf, fj, lfj, g, mode)
implicit double precision (a-h,o-z)
integer n, m, lfj, mode
double precision x(n), f(m), ftf, fj(lfj,n), g(n)
integer nprob, nprobs, nstart, nstrts
common /PROBLM/ nprob, nprobs, nstart, nstrts
integer nout
common /IOUNIT/ nout
logical lf, lj
integer na, nb, nc, nd, nt, nh
integer i, j
double precision x1, x2, x3, x4, x5, x6
double precision e1, e2, e5, ti, ym, yp
double precision ddot
intrinsic dble, exp
double precision zero, one, point1, three, four, five, ten
parameter (zero = 0.d0, one = 1.d0, point1 = .1d0)
parameter (three = 3.d0, four = 4.d0, five = 5.d0)
parameter (ten = 10.d0)
*=======================================================================
if (mode .eq.0)goto 20
if (mode .eq. -1)goto 10
if (mode .eq. -2)goto 30
x1 = x(1)
x2 = x(2)
x3 = x(3)
x4 = x(4)
x5 = x(5)
x6 = x(6)
na = mode / 1000
nt = mode - na*1000
nb = nt / 100
nh = nt - nb*100
nc = nh / 10
nd = nh - nc*10
lf = (na .ne. 0) .or. (nb .ne. 0) .or. (nd .ne. 0)
lj = (nc .ne. 0) .or. (nd .ne. 0)
if (lf .and. lj)goto 300
if (lf) goto 100
if (lj) goto 200
*-----------------------------------------------------------------------
10 continue
nprobs = 1
nstrts = 1
n =6
m = 13
if (nout .gt. 0)write( nout, 9999)n, m
return
*-----------------------------------------------------------------------
20 continue
x(1) = 1.d0
x(2) = 2.d0
x(3) = 1.d0
x(4) = 1.d0
x(5) = 1.d0
x(6) = 1.d0
return
*-----------------------------------------------------------------------
30 continue
x(1) =1.d0
x(2) =10.d0
x(3) =1.d0
x(4) =5.d0
x(5) =4.d0
x(6) =3.d0
ftf = zero
return
*-----------------------------------------------------------------------
100continue
do 110 i = 1, m
ti = point1*dble(i)
yp = exp(-ti) + three*exp(-four*ti)
ym = five*exp(-ten*ti)
e1 = exp(-ti*x1)
e2 = exp(-ti*x2)
e5 = exp(-ti*x5)
f(i) = (x3*e1 + x6*e5+ ym) - (x4*e2 + yp)
110continue
if (nb .ne. 0)ftf = ddot( m, f, 1, f, 1)
return
200continue
do 210 i = 1, m
ti = point1*dble(i)
e1 = exp(-ti*x1)
e2 = exp(-ti*x2)
e5 = exp(-ti*x5)
fj( i, 1) = -ti*x3*e1
fj( i, 2) =ti*x4*e2
fj( i, 3) =e1
fj( i, 4) = -e2
fj( i, 5) = -ti*x6*e5
fj( i, 6) =e5
210continue
return
300continue
do 310 i = 1, m
ti = point1*dble(i)
yp = exp(-ti) + three*exp(-four*ti)
ym = five*exp(-ten*ti)
e1 = exp(-ti*x1)
e2 = exp(-ti*x2)
e5 = exp(-ti*x5)
f(i) = (x3*e1 + x6*e5 + ym) - (x4*e2 + yp)
fj( i, 1) = -ti*x3*e1
fj( i, 2) =ti*x4*e2
fj( i, 3) =e1
fj( i, 4) = -e2
fj( i, 5) = -ti*x6*e5
fj( i, 6) =e5
310continue
if (nb .ne. 0)ftf = ddot( m, f, 1, f, 1)
if (nd .eq. 0)return
do 320 j = 1, n
g(j) = ddot( m, fj( 1, j), 1, f, 1)
320continue
return
9999format(/'1',70('=')//,
*' biggs exp6 function (more et al.) '//,
*' number of variables =', i4, '( 6 )'/,
*' number of functions =', i4, '(>= 6)'//,
* ' ',70('=')/)
end
************************************************************************
************************************************************************
subroutine dfjdxk ( k, x, n, dfj, ldfj, m, nonzro)
implicit double precision (a-h,o-z)
integer k, n, ldfj, m, nonzro(n)
double precision x(n), dfj(ldfj,n)
integer i, j
double precision x1, x2, x3, x4, x5, x6
double precision e1, e2, e5, ti, t1, t2, t5
intrinsic dble, exp
double precision zero, point1
parameter (zero = 0.d0, point1 = .1d0)
*=======================================================================
do 100 j = 1, n
nonzro(j) = 0
call dcopy( m, zero, 0, dfj( 1, j), 1)
100 continue
goto ( 210, 220, 230, 240, 250, 260 ), k
230continue
x1 = x(1)
nonzro(1) = 1
do 235 i = 1, m
ti = point1*dble(i)
dfj( i, 1) = -ti*exp(-ti*x1)
235continue
return
240continue
x2 = x(2)
nonzro(2) = 1
do 245 i = 1, m
ti = point1*dble(i)
dfj( i, 2) =ti*exp(-ti*x2)
245continue
return
260continue
x5 = x(5)
nonzro(5) = 1
do 265 i = 1, m
ti = point1*dble(i)
dfj( i, 5) = -ti*exp(-ti*x5)
265continue
return
210continue
x1 = x(1)
x3 = x(3)
nonzro(1) = 1
nonzro(3) = 1
do 215 i = 1, m
ti = point1*dble(i)
e1 = exp(-ti*x1)
t1 = ti*e1
dfj( i, 1) =ti*t1*x3
dfj( i, 3) = -t1
215continue
return
220continue
x2 = x(2)
x4 = x(4)
nonzro(2) = 1
nonzro(4) = 1
do 225 i = 1, m
ti = point1*dble(i)
e2 = exp(-ti*x2)
t2 = ti*e2
dfj( i, 2) = -ti*t2*x4
dfj( i, 4) =t2
225continue
return
250continue
x5 = x(5)
x6 = x(6)
nonzro(5) = 1
nonzro(6) = 1
do 255 i = 1, m
ti = point1*dble(i)
e5 = exp(-ti*x5)
t5 = ti*e5
dfj( i, 5) =ti*t5*x6
dfj( i, 6) = -t5
255continue
return
end
************************************************************************
************************************************************************
subroutine dfkdij( k, x, n, hess, lhess, linear)
implicit double precision (a-h,o-z)
logical linear
integer k, n, lhess
double precision x(n), hess(lhess,n)
integer j
double precision e1, e2, e5, tk, t1, t2, t5
intrinsic dble, exp
double precision zero, point1
parameter (zero = 0.d0, point1 = .1d0)
*=======================================================================
do 100 j = 1, n
call dcopy( n, zero, 0, hess( 1, j), 1)
100 continue
linear = .false.
tk = point1*dble(k)
e1 = exp(-tk*x(1))
e2 = exp(-tk*x(2))
e5 = exp(-tk*x(5))
t1 = tk * e1
t2 = tk * e2
t5 = tk * e5
hess(1,3) = -t1
hess(3,1) = hess(3,1)
hess(2,4) =t2
hess(4,2) = hess(2,4)
hess(5,6) = -t5
hess(6,5) = hess(5,6)
hess(1,1) =tk * x(3) * t1
hess(2,2) = -tk * x(4) * t2
hess(5,5) =tk * x(6) * t5
return
end
来自于:http://www.netlib.org/uncon/data/biggs.f
页:
[1]