1. 介绍
export PYCUTEST_CACHE="/path/to/pycutest_cache" export MYARCH=mac64.osx.gfo
2. 问题分类
我们可以用problem_properties()函数来查看问题类型,以及使用find_problems() 函数来寻找问题。
- 第一个字母:目标函数类型,包括:
N:无目标函数
C:常数目标函数
L:线性目标函数
Q:二次目标函数
S:平方和目标函数(least square problem)
O:其他 - 第二个字母:约束条件类型,包括
U:无约束
X:仅有常量约束
B:仅有bounds约束
N:线性网络的邻接矩阵约束
L:线性约束
Q:二次约束
O:其他 - 第三个字母:问题连续性
R:连续问题,且一阶导数和二阶导数存在(即Jacobbi和Hessian阵可计算)
I:其他 - 第四个数字:最多可微数目,为0, 1或2.
- 第五个字母
A:学术问题,构造出来用于测试算法
M:没有实际意义的测试问题
R:有实际应用的测试问题 - 第六个字母表示是否包含隐变量,Y表示有,N表示没有
- 第七个n表示变量的个数
- 第八个m表示约束的个数(不包括bounds和固定变量)
3. 常用命令

下面是一个测试例子:
# Ensure compatibility with Python 2 from __future__ import print_function import numpy as np import pycutest p = pycutest.import_problem('ROSENBR') print("Rosenbrock function in %gD" % p.n) iters = 0 x = p.x0 f, g = p.obj(x, gradient=True) # objective and gradient H = p.hess(x) # Hessian while iters < 100 and np.linalg.norm(g) > 1e-10: print("Iteration %g: objective value is %g with norm of gradient %g at x = %s" % (iters, f, np.linalg.norm(g), str(x))) s = np.linalg.solve(H, -g) # Newton step x = x + s # used fixed step length f, g = p.obj(x, gradient=True) H = p.hess(x) iters += 1 print("Found minimum x = %s after %g iterations" % (str(x), iters)) print("Done")
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222724.html原文链接:https://javaforall.net
