我想使用该scipy.optimize模块来最小化一个功能.假设我的功能是f(x,a):
def f(x,a):
return a*x**2
Run Code Online (Sandbox Code Playgroud)
对于一个固定的a,我希望尽量减少f(x,a)关于x.
与scipy我可以导入例如fmin功能(I有一个旧SciPy的:v.0.9.0),得到一个初始值x0,然后优化(文档):
from scipy.optimize import fmin
x0 = [1]
xopt = fmin(f, x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)
失败因为f有两个参数并且fmin只传递一个(实际上,我还没有定义a).如果我做:
from scipy.optimize import fmin
x0 = [1]
a = 1
xopt = fmin(f(x,a), x0, xtol=1e-8)
Run Code Online (Sandbox Code Playgroud)
计算也将失败,因为"x未定义".但是,如果我定义x那么没有要优化的变量参数.
如何在此处将非变分参数用作函数参数?
我一直在尝试优化以下功能,但没有成功:
parametros <- data.frame(ap=c(11.1,7.07,6.3,4.75,4,3.35),
fx=c(41.2012,39.3732,25.2912,10.3455,1.2253,0.4017))
xm<-11.2
fxcalc <- function(s,t){(1-(1-(parametros$ap/xm)^(s))^t)*100}
suma <- function(s,t){(parametros$fx-fxcalc(s,t))^2}
func <- function(s,t){sum(suma(s,t))}
Run Code Online (Sandbox Code Playgroud)
作为“func()”,我试图最小化“s”和“t”的函数。
显然,函数“optim()”不能处理多个变量。
非常感谢!
from numpy import *; from scipy.optimize import *; from math import *
def f(X):
x=X[0]; y=X[1]
return x**4-3.5*x**3-2*x**2+12*x+y**2-2*y
bnds = ((1,5), (0, 2))
min_test = minimize(f,[1,0.1], bounds = bnds);
print(min_test.x)
Run Code Online (Sandbox Code Playgroud)
我的函数f(X)有一个x=2.557, y=1我应该能够找到的局部最小值。
上面显示的代码只会给出结果 where x=1。我尝试了不同的公差和所有三种方法:L-BFGS-B、TNC 和 SLSQP。这是到目前为止我一直在看的线程:
Scipy.optimize:如何限制参数值
我怎样才能解决这个问题?
我正在使用 Spyder(Python 3.6)。
我知道fminsearch函数,但它似乎只能解决一个变量.
如果我的函数看起来像f(x,y,z)并且我想找到给出最低结果的x,y,z的值,我将如何在MatLab中执行此操作?f的复杂性会使计算偏导数变得不合理.
任何帮助将不胜感激,谢谢!
我尝试使用 fmin_bfgs 来找到绝对函数的局部最小值abs(x)。初始点设置为100.0;预期答案是 0.0。但是,我得到:
In [184]: op.fmin_bfgs(lambda x:np.abs(x),100.0)
Warning: Desired error not necessarily achieved due to precision loss.
Current function value: 100.000000
Iterations: 0
Function evaluations: 64
Gradient evaluations: 20
Out[184]: array([100.0])
Run Code Online (Sandbox Code Playgroud)
为什么?
我正在使用 Python 解决这个问题。
假设我在 n 维(紧凑)空间中有一些点 p 和一维任意曲线。如何在曲线中找到最接近指定点 p 的点?我在Find minimum distance from point to complex curve 中找到了答案,但 Shapely 仅适用于平面,并且我正在处理的曲线的表达式驻留在维度数范围为 2 到 16 的空间中,这是由于定义了曲线。这些曲线的表达式总是明确知道的。
我也尝试使用scipy.optimizewithSLSQP来最小化距离函数,但它并不总是有效。例如,如果曲线是np.sin(15*x),并且点仅位于以 为中心的单位正方形(0.5, 0.5)中,则曲线的某些部分仅在两个维度中的一个维度中位于正方形内,并且某些点的最小化失败。
我正在尝试使用 Python 中的 Pulp 来解决线性优化问题。
这是代码:
import pandas as pd
import pulp
D_XB = 20
D_XP = 0
D_XC = 0
Available_Time = 1440 #in minutes
test = [['A1', 'A2', 'A3', 'A4', 'A5'], [1,2,1,0,3], [16,32,0,16,32], [10,10,10,10,10], [120,210,180,180,350]]
Cycles = pd.DataFrame(test, index=['Cycles', 'QTA1', 'QTA2', 'QTA3', 'T_TOT']).T
A1 = pulp.LpVariable("Cycle_A1", lowBound=0, cat='Integer')
A2 = pulp.LpVariable("Cycle_A2", lowBound=0, cat='Integer')
A3 = pulp.LpVariable("Cycle_A3", lowBound=0, cat='Integer')
A4 = pulp.LpVariable("Cycle_A4", lowBound=0, cat='Integer')
A5 = pulp.LpVariable("Cycle_A5", lowBound=0, cat='Integer')
# Defining the problem as a minimization problem (Minimize Storage) …Run Code Online (Sandbox Code Playgroud) 所以我创建了一个HTML,Inline CSS和JS的网页.由于此页面将通过JS函数生成
opened.document.write();Run Code Online (Sandbox Code Playgroud)
我想将所有网页代码放在一行中,可以在之前提到的功能中使用,而不是为每个新行重复相同的功能.我无法手动执行此操作,因为该页面包含太多代码行.
有一种快速而干净的方法吗?
注意:我使用SOME PROGRAM一键替换所有"with",所以我希望用(Backspace)或类似的东西替换所有(Enter)s.
精
我想在用户点击一个按钮时生成整个页面,该按钮将调用JS函数,该函数将生成一个新页面并使用前面提到的函数编写它.
minimization ×9
python ×5
scipy ×4
optimization ×3
constraints ×1
css ×1
html ×1
javascript ×1
line ×1
matlab ×1
numpy ×1
pulp ×1
r ×1
regex ×1
spyder ×1