我试图找到参数值,以便用给定的一组点最好地拟合下面的模型函数。
Model:
x
y = ------------------------
1- (a1*x)^2 + (a2*x)^4
where parameters are: a1, a2
(1)我用这个方程找到了最优参数值,但它给出了任意x(红色图)的y=~0值。
(3)令人惊讶的是,使用以下只包含一个参数的模型得到了更好的拟合。
Model:
x
y = -------------
1- (a1*x)^2
where para
我有一个非线性系统,它有二次输入(操纵变量,MV)。为了使用GEKKO对该系统进行MPC模拟,我定义了以下函数来处理二次输入: def NTVin(T, u):
n = T.shape[0]
Tntv = zeros(n)
u2 = zeros_like(u, dtype = float64)
for i in range(len(u2)):
u2[i] = copy(u[i].VALUE)
for i in range(n):
Tntv[i] = dot(dot(u2, T[i,:,:]), u2)
retu
我需要做一些优化,但我没有什么经验,而不是100%从哪里开始。
假设我有一个回归方程;
y = exp(intercept + beta1 * x1 + beta2 * x2)
如何使用scipy.optimize找到x1和x2的输入,从而使y最大化;
intercept = 10
beta1 = 1.1
beta2 = 1.2
Constraints;
(x1 + x2) has to be less than 10
x1 has to be greater than x2
我不想强迫它(即手工计算x1和x2的每一个组合的y)。这是一个非常简单的例子,我希望从中学习和建立。
我正在尝试获得与gekko的最佳时间间隔(在下面的示例中是10) from gekko import GEKKO
from random import random
n = 100000
arr = [random() for i in range(n)]
df = pd.DataFrame({"w1" : arr, 'w2' : arr}, \
index=pd.date_range(start='1/1/2018', periods=n, freq='T'))
df.w2 = df.w2.shift(10)
我将最大化我的非线性函数,并尝试使用GEKKO实现这一点 m=GEKKO()
x=m.Var(value=1,lb=0, ub=50)
y=m.Var(value=1, lb=0, ub=50)
m.Equation(puree*x+cutlet*y==1500)
m.Obj(-min(x,y))
m.solve(disp=False)
x.value
y.value 但是我在这个字符串m.Obj(-min(x,y))中获得了TypeError: object of type 'int' has no len(),并且我不知道要修改什么才能使它工作……
在我的代码中,我得到了以下错误,我完全不知道错误的来源:
@error: Equation Definition
Equation without an equality (=) or inequality (>,<)
true
STOPPING...
我正在寻找一个解决方案'x‘,它在满足'warf_moodys_ constraint’设置的约束的前提下,将函数'was_constraint‘的结果最小化。函数返回一个浮点值,当我单独将初始的起始向量'x‘传递给每个函数时,我不会收到来自这些函数的任何错误。有人能告诉我哪里出了问题吗?
def w
我在IPOPT (v3.12.10)中遇到本地不可行错误。
Converged to a point of local infeasibility. Problem may be infeasible.
我还使用m.options.SOLVER=1对APOPT求解器进行了尝试,并得到了类似的错误。
No feasible solution
这个问题有两个方程和三个变量的多个可行解。这个问题的解决方案是平面与球体相交的地方。
from gekko import GEKKO
m = GEKKO()
x=m.Var(); y=m.Var(); z=m.Var()
m.Equations([x**2+
用Python中的IPOPT成功地解决了一个具有平方目标的优化问题。
from gekko import GEKKO
import numpy as np
m = GEKKO()
x = m.Var(); y = m.Param(3.2)
m.Obj((x-y)**2)
m.solve()
print(x.value[0],y.value[0])
但是,当我切换到绝对值目标np.abs(x-y) (abs的numpy版本)或m.abs(x-y) (abs的Gekko版本)时,IPOPT解决程序报告了一个失败的解决方案。绝对值近似m.sqrt((x-y)**2)也失败了。
失败解决方案
from
我尝试使用此代码,结果是(2,2)。显然这不是真的,因为(0,4)是最好的解决方案。你能告诉我问题出在哪里吗? import numpy as np
from gekko import GEKKO
m = GEKKO()
x=[m.Var(lb=0,ub=4,integer=True) for i in range(2)]
m.options.SOLVER = 1
#Equations
m.Equation(m.sum(x)>=4)
#Objective
m.Obj(x[0]*x[1])
m.solve(disp=False)
print(x[0].value)
print
我正在尝试用GEKKO解决一个优化问题。最初的问题是一个具有数千个变量、约束(其中一些是非线性的)和边界的线性目标函数。我被友好地建议使用GEKKO,因为我不完全理解它的机制,所以我在实现它时遇到了一些问题。我一直收到object of type 'int' has no len()错误。我已经简化了问题,所以现在它只有20个变量,并且没有约束,但是必须遵守10个界限。通过这种方式,我想我可以隔离并锁定错误的来源。代码如下: import pandas as pd
import numpy as np
import copy as cp
from gekko import G
我用Gekko编写了一个模型,但遇到了一个错误。所以,我开始逐行检查,发现了一个我不能理解的问题。可以执行下面的代码(显示了部分模型代码,输入文件),并且结果也是正确的。但是,当我取消对第31行的注释时,出现了一个错误。会不会是因为我按顺序使用了逻辑条件(ab3、max3)?有没有办法解决这个问题?
import numpy as np
from gekko import GEKKO
# Read weather data
weatherData = np.load("Atlanta_TMY3_climate.npy")
# create GEKKO model
m = G
我面对的是一个Hessenberg索引-2 DAE,我试图用python模块gekko来解决它。经过几天的尝试和错误之后,我认为我离一个能工作的代码不远了。但我刚刚意识到,也许gekko不能处理复数?
下面是一个最低限度的工作示例:
import numpy as np
from gekko import GEKKO
# Define the simulation and its parameters
g = GEKKO()
g.options.IMODE = 7
g.options.NODES = 1
# define the time array
n_steps = 100
Time
通过,我能够在Gekko中建立一个动态参数估计。
下面是代码,其测量值如下(文件在我的系统中名为MeasuredAlgebrProductionRate_30min_18h.csv,并使用;作为分隔符):
import numpy as np
import matplotlib.pyplot as plt
from gekko import GEKKO
#%% Read measurement data from CSV file
t_x_q_obs = np.genfromtxt('MeasuredAlgebrProductionRate_30min_18h.csv', d
我想我遇到了和这个堆栈溢出相同的问题。
昨天我能够解决我的Gekko模型,今天我甚至不能解决来自Apmonitor网站的例子。解决问题需要花费很长时间,我得到了以下错误:
ImportError: No solution or server unreachable.
Show errors with m.solve(disp=True).
Try local solve with m=GEKKO(remote=False).
我尝试在本地解决它,正如我在上面提到的堆栈溢出帖子中所建议的那样:
m = GEKKO(remote=False)
但是,我得到了以下错误:
Error:
通过在中使用字典作为对gekko的源输入的提示,我做了如下所示;
import pandas as pd
from gekko import GEKKO
my_vars = ['x1','x2','x3']
# stored as dictionaries
Cost = {'x1':100,'x2':125,'x3':80}
Min = {'x1':0,'x2':0,'x3':0}
Max = {'x1':70,'x2
我正在学习如何将Gekko的brain模块用于深度学习应用程序。
我已经建立了一个神经网络来学习numpy.cos()函数,然后产生类似的结果。
当我的训练范围是:
x = np.linspace(0,2*np.pi,100)
但当我尝试将边界扩展到以下范围时,该模型就崩溃了:
x = np.linspace(0,3*np.pi,100)
我需要在我的神经网络中进行哪些更改,以增加模型的灵活性,使其适用于其他边界?
这是我的代码:
from gekko import brain
import numpy as np
import matplotlib.pyplot as plt
#Set u
我有一个表格的回归问题:
y = X b
其中,y是响应向量,X是输入变量的矩阵,b是我正在搜索的拟合参数的向量。
Python为解决这种形式的问题提供了b = numpy.linalg.lstsq( X , y )。
然而,当我使用它时,我倾向于获得b组件的非常大或极小的值。
我想要执行同样的fit,但是将b的值限制在0到255之间。
看起来scipy.optimize.fmin_slsqp()是一种选择,但我发现对于我感兴趣的问题的大小,它非常慢(X类似于3375 by 1500,希望更大)。
是否还有其他Python选项来执行约束最小二乘匹配?
或者有用于执行或Ridge回归的p