PDFO(Powell's Derivative-Free Optimization solvers,Powell 无导数优化求解器)为 Michael J. D. Powell 的无导数优化求解器提供跨平台的调用接口。这些求解器包括 COBYLA,UOBYQA,NEWUOA,BOBYQA,LINCOA,最初由 M. J. D.Powell 采用 Fortran 77 实现。它们可求解黑箱优化,用于机器学习超参数调节。
Powell 的求解器旨在仅使用函数值而不使用目标函数或非线性约束函数的导数来求解连续变量的一般非线性优化问题 。实际应用中,此类函数通常是基于仿真模拟的黑箱。因此,相应的优化问题通常被归类为黑盒优化或基于仿真模拟的优化 。 UOBYQA 和 NEWUOA 可求解无约束问题,除了相当小的问题外, NEWUOA 通常表现更好;BOBYQA 可求解无约束和界约束问题;LINCOA 可求解决无约束、界约束和线性约束问题;COBYLA 可求解一般的非线性优化问题。由显式公式定义的问题往往可以用其他方法更有效地处理。
PDFO 当前的版本支持 MATLAB 和 Python 。 它依赖 MEX 和 F2PY 来编译 Powell 的 Fortran 代码,并将其封装为用户友好的函数。MATLAB 或 Python 用户可在直接调用 Powell 的求解器而无需了解其 Fortran 实现。
Hans D. Mittelmann 的优化软件决策树收录了 PDFO,建议将其用于“只用函数值求解一般非线性问题”。 这里,“一般非线性问题”包括无约、界约束,线性约束和非线性约束问题。
更多信息请访问 PDFO 主页 (https://pdfo.net)。
PDFO 的 Python 版本可通过 pip 安装:
pip install pdfo
MATLAB 版本可从码云 (https://gitee.com/pdfo/pdfo) 或 PDFO 主页 (https://pdfo.net) 下载源代码,用其中提供的 setup 脚本安装。
from pdfo import pdfo, Bounds, LinearConstraint, NonlinearConstraint
# If SciPy (version 1.1 or above) is installed, then Bounds, LinearConstraint,
# and NonlinearConstraint can alternatively be imported from scipy.optimize.
import numpy as np
def chrosen(x): # the subroutine defining the objective function
return sum((1 - x[:-1]) ** 2 + 4 * (x[1:] - x[:-1] ** 2) ** 2)
def nlc_ineq(x): # the subroutine defining the nonlinear inequality constraints
return x[:-1] ** 2 - x[1:]
def nlc_eq(x): # the subroutine defining the nonlinear equality constraints
return sum(x ** 2) - 1
if __name__ == '__main__':
print('\nMinimize the chained Rosenbrock function with three variables subject to nonlinear constraints:\n')
x0 = [0, 0, 0] # starting point
lb = [0, 0, 0]
ub = [np.inf, np.inf, np.inf] # ub = [None, None, None] or ub = None works equally well
bounds = Bounds(lb, ub) # bound constraints: lb <= x <= ub
# Bound constraints can also be written as: bounds = [(lb[0], ub[0]), (lb[1], ub[1]), (lb[2], ub[2])]
A = [[0.5, -1, 0], [0, 0.5, -1]]
lin_lb = [-np.inf, -np.inf]
lin_ub = [0, 0]
lin_con = LinearConstraint(A, lin_lb, lin_ub) # inequality constraints: lin_lb <= A*x <= lin_ub
nonlin_lb = [0, 0]
nonlin_ub = [np.inf, np.inf]
nonlin_con_ineq = NonlinearConstraint(nlc_ineq, nonlin_lb, nonlin_ub) # inequality constraints: nonlin_lb <= nlc_ineq(x) <= nonlin_ub
nonlin_con_eq = NonlinearConstraint(nlc_eq, 0, 0) # equality constraint: nlc_eq(x) = 0
# Nonlinear constraints can also be defined as dictionaries:
#nonlin_con_ineq = {'type': 'ineq', 'fun': nlc_ineq} # inequality constraint: nlc_ineq(x) >= 0
#nonlin_con_eq = {'type': 'eq', 'fun': nlc_eq} # inequality constraint: nlc_eq(x) = 0
res = pdfo(chrosen, x0, bounds=bounds, constraints=[lin_con, nonlin_con_ineq, nonlin_con_eq])
print(res)
function rosenbrock_example()
fprintf('\nMinimize the chained Rosenbrock function with three variables subject to nonlinear constraints:\n');
x0 = [0; 0; 0]; % starting point
% linear inequality constraints A*x <= b
A = [0.5, -1, 0; 0, 0.5, -1];
b = [0; 0];
% linear equality constraints Aeq*x = beq
Aeq = [];
beq = [];
% bound constraints lb <= x <= ub
lb = [0; 0; 0];
ub = []; % ub = [inf; inf; inf] works equally well
% nonlinear constraints
nonlcon = @nlc; % see function nlc given below
% The following syntax is identical to fmincon:
[x, fx, exitflag, output] = pdfo(@chrosen, x0, A, b, Aeq, beq, lb, ub, nonlcon)
% Alternatively, the problem can be passed to pdfo as a structure:
%p.objective = @chrosen; p.x0 = x0; p.Aineq = A; p.bineq = b; p.lb = lb; p.nonlcon = @nlc;
%[x, fx, exitflag, output] = pdfo(p)
return
function f = chrosen(x) % the subroutine defining the objective function
f = sum((x(1:end-1)-1).^2 + 4*(x(2:end)-x(1:end-1).^2).^2);
return
function [cineq, ceq] = nlc(x) % the subroutine defining the nonlinear constraints
% The same as fmincon, nonlinear constraints cineq(x) <= 0 and ceq(x) = 0 are specified
% by a function with two returns, the first being cineq and the second being ceq.
cineq = x(2:end) - x(1:end-1).^2;
ceq = x'*x - 1;
return
PDFO(Powell's Derivative-Free Optimization solvers,Powell 无导数优化求解器)为 Michael J. D. Powell 的无导数优化求解器提供跨平台的调用接口。这些求解器包括 COBYLA,UOBYQA,NEWUOA,BOBYQA,LINCOA,最初由 M. J. D.Powell 采用 Fortran 77 实现。它们可求解黑箱优化,用
PDFO — Powell’s Derivative-Free Optimization solvers (Powell 无导数优化求解器) 是一个跨平台的优化软件包,可以只用函数值而无需导数信息求解一般形式的约束或无约束非线性优化问题。这样的问题一般称为黑箱优化 (black-box optimization),基于模拟的优化 (simulation-based optimization),或无
数学优化 处理寻找一个函数的最小值(最大值或零)的问题。在这种情况下,这个函数被称为成本函数,或目标函数,或能量。 这里,我们感兴趣的是使用scipy.optimize来进行黑盒优化: 我们不依赖于我们优化的函数的算术表达式。注意这个表达式通常可以用于高效的、非黑盒优化。 先决条件 Numpy, Scipy matplotlib 也可以看一下: 参考 数学优化是非常 ... 数学的。如果你需要性能
问题1[主]:是否可以优化? 我尝试过:避免使用非常大的数字的操作。所以我决定使用辅助数据。例如,我将转换为,其中。 问题:但是似乎比快十倍。这里是我的测试:
如果我有模式: 和一个解析器: 和两个可能的查询。问题#1: 和查询#2: 是否可以优化冲突解决程序,使查询#1 readAllPosts仅从数据库中提取标题,而查询#2则同时提取标题和lotsofdata? 我查看了parent、args、context和info参数,但看不到任何指示解析器是否被调用以响应像#1或#2这样的查询的内容。
有一类DP状态方程,例如: dp[i]=min{dp[j]−a[i]∗d[j]} 0≤j<i,d[j]≤d[j+1],a[i]≤a[i+1] 它的特征是存在一个既有 i 又有 j 的项 a[i]∗d[j] 。编程时,如果简单地对 i 和 j 循环,复杂度是 O(n2) 的。通过斜率优化(凸壳优化),把时间复杂度优化到 O(n)。 斜率优化的核心技术是斜率(凸壳)模型和单调队列。 一、把状态方程变
我必须对VTD-XML库进行性能测试,以便不仅进行简单的解析,而且在解析中进行额外的转换。所以我有30MB的输入XML,然后用自定义逻辑将其转换为其他XML。因此,我想消除所有的想法,这减缓了整个过程,从我这边来(因为没有很好地使用VTD库)。我试图搜索优化提示,但找不到。我认为: '0'. 选择selectXPath或selectElement最好使用什么? > 使用不带名称空间的解析要快得多。
本文向大家介绍数据库Mysql性能优化详解,包括了数据库Mysql性能优化详解的使用技巧和注意事项,需要的朋友参考一下 在mysql数据库中,mysql key_buffer_size是对MyISAM表性能影响最大的一个参数(注意该参数对其他类型的表设置无效),下面就将对mysql Key_buffer_size参数的设置进行详细介绍下面为一台以MyISAM为主要存储引擎服务器的配置: 分配了51
这个问题真的很奇怪。 我正在将一个例程转换为SIMD指令(我对SIMD编程非常陌生),但遇到以下代码位的问题: 问题:假设有一个SIMD实现,我只是试图计算一个正确的向量进行处理,那么处理依赖于它以前的值的正确方法是什么? 反过来,类似于函数编程的折叠实现也同样有用,因为我试图理解如何更好地提升数据依赖性,而不是为了优化而进行优化。 最后,如果你能推荐一些文献,请做。不知道如何谷歌这个话题。
本文向大家介绍详解基于 axios 的 Vue 项目 http 请求优化,包括了详解基于 axios 的 Vue 项目 http 请求优化的使用技巧和注意事项,需要的朋友参考一下 对于需要大量使用 http 请求的项目,我们通常会选择对 http 请求的方法进行二次封装,以便增加统一的拦截器,或者统一处理阻止重复提交之类的逻辑。Vue.js 的项目中我们选择使用了 axios 这样一个 http