标签: ipopt

get中的错误(as.character(FUN),mode ="function",envir = envir)

我是R的新手,如果问题有点傻,请原谅我.我正在尝试为值函数迭代编写一个简单的while循环.我的函数(optim.routine)使用求解器ipoptr.这是我的代码:

d<-1
old1<-0
old2<-0
num.iter<-0
i.esp<-1e-05
i.T<-100
lb<-0
ub<-10

while (d>i.eps & num.iter<i.T){
new1 <- optim.routine(old1, old2, eval_f=eval_f, eval_grad_f=eval_grad_f, lb=lb, ub=ub, update=FALSE)
d<-dist(c(old1, new1), method="euclidean")
num.iter<-num.iter+1
old1<-new1
}
Run Code Online (Sandbox Code Playgroud)

其中optim.routine是以下函数:

optim.routine<-function(old1, old2, eval_f=obj, eval_grad_f=obj.deriv, lb=lb, ub=ub, update){
  if (isTRUE(update)){
    var2<-old2
    var1<-old1
    var1.deriv<-deriv(var1)
    optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb = lb,
                       ub = ub)

    new1<- optimize$objective
    new2<- optimize$solution
    old2<-new2
    old1<-new1
  }else{
    var2<-old2
    var1<-old1
    var1.deriv<-vf.deriv(var1)
    optimize <- ipoptr(x0 = old2, eval_f = eval_f, eval_grad_f = eval_grad_f, lb …
Run Code Online (Sandbox Code Playgroud)

r ipopt

11
推荐指数
2
解决办法
2万
查看次数

为 anaconda python 安装 Ipopt

有人在 Anaconda python 上安装过 Ipopt 吗?我下载的是3.6.1版本。此外,我还下载了自述文件中描述的所需的英特尔 Fortran 库。

configure make通过使用并make install链接到它的所有依赖项,安装应该是直接的。我希望我能自己解决这个问题。

如果我想在 anaconda 中使用 Ipopt,我还需要考虑什么?我特别想构建包含 Ipopt 的 Pygmo。

或者安装 pyopt 或 Casadi 就足够了吗?

python ipopt

7
推荐指数
1
解决办法
9953
查看次数

如何使用Python Gekko解决绝对值abs()目标?

具有目标平方的优化问题可以使用Python Gekko中的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])
Run Code Online (Sandbox Code Playgroud)

但是,当我切换到绝对值目标np.abs(x-y)(的numpy版本absm.abs(x-y)的Gekko版本abs)时,IPOPT求解器报告失败的解决方案。绝对值近似m.sqrt((x-y)**2)也将失败。

解决方案失败

from gekko import GEKKO
import numpy as np
m = GEKKO()
x = m.Var(); y = m.Param(3.2)
m.Obj(m.abs(x-y))
m.solve()
print(x.value[0],y.value[0])
Run Code Online (Sandbox Code Playgroud)

我知道基于梯度的求解器不喜欢没有连续一阶和二阶导数的函数,因此我怀疑这种情况发生abs()0没有连续导数的点。是否有任何的替代abs(),以可靠地解决在Python壁虎基于梯度的解算器的绝对值?

python numpy mathematical-optimization ipopt gekko

7
推荐指数
2
解决办法
110
查看次数

Matlab fmincons和C++的NLP求解器如ipopt之间的性能差距是多少?

我即将为实时应用编写一个algorthim,它涉及一些高维NLP(非线性编程).

在实现之前,我需要对算法进行计时,以确定它是否适用于实时应用程序,因此我使用Matlab的内置fmincons作为基线.

根据经验表明,matlab算法的速度往往从慢到低于C++对应物,所以我想估计一下这种特殊情况可以带来什么样的性能提升?

由于我的工作主要与实时应用程序有关,因此我很少使用NLP(非线性编程),所以我问我的同事们,他们建议我尝试ipopt作为开始,我google了它的网站,没有针对Matlab的基准测试关于算法细节也没有太多话题(至少在Matlab中,检查它们的算法的细节并不难),所以我基本上对它的准确性/鲁棒性/最优性等几乎一无所知.

所以关于NLP的C++实现的任何帮助都将非常有用,非常感谢提前.

c++ optimization matlab nonlinear-optimization ipopt

6
推荐指数
1
解决办法
1540
查看次数

多目标优化示例 Pyomo

Pyomo 中多目标优化的任何示例?

我正在尝试最小化 4 个目标(非线性),并且我想使用 pyomo 和 ipopt。还可以访问 Gurobi。

我想看一个非常简单的例子,其中我们尝试针对决策变量列表(不仅仅是一个维度,可能是一个向量)针对两个或多个目标(一个最小化和一个最大化)进行优化。

我拥有的 Pyomo 书(https://link.springer.com/content/pdf/10.1007%2F978-3-319-58821-6.pdf)没有提供任何线索。

minimize maximize moo ipopt pyomo

6
推荐指数
2
解决办法
5192
查看次数

Gekko 中每列求解器输出的含义

我很好奇 IPOPT 求解器的每个求解器输出列有何建议。有什么材料可以解释这一点吗?

以下是IPOPT 求解器的求解器输出。我想知道inf_prinf_dulg(mu)||d||等术语的含义。

在此输入图像描述

ipopt gekko

6
推荐指数
1
解决办法
1028
查看次数

通过 pyomo 设置 iopt 选项

我在通过 pyomo 设置 iopt 选项时遇到问题。

对于某些选项,可以简单地使用

executable = os.getcwd()+'/Ipopt/Ipopt/build/bin/ipopt.exe'
opt = SolverFactory("ipopt", executable=executable,solver_io='nl')
opt.options['nlp_scaling_method'] = 'user-scaling'
Run Code Online (Sandbox Code Playgroud)

这很好用。如果我尝试设置“fixed_variable_treatment”选项,即:

opt.options['fixed_variable_treatment'] = 'make_parameter'
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 599, solve
        Solver (asl) returned non-zero return code (1)
ERROR: "[base]\site-packages\pyomo\opt\base\solvers.py", 604, solve
        Solver log:
        Unknown keyword "fixed_variable_treatment"
Run Code Online (Sandbox Code Playgroud)

我假设这是因为你无法通过 python 设置所有选项?

任何帮助或克服这个问题的方法将不胜感激。谢谢

python-3.x ipopt pyomo

5
推荐指数
1
解决办法
3186
查看次数

Gekko非线性优化,约束函数评估if语句中的对象类型错误

我正在尝试解决非线性优化问题。我通过创建下面的代码来复制我的问题。Python返回TypeError: object of type 'int' has no len()。如何在约束函数中包含IF语句?

控制台将打印以下内容:

  File "<ipython-input-196-8d29d410dcea>", line 1, in <module>
    runfile('C:/Users/***/Documents/***/Project/untitled.py', wdir='C:/Users/***/Documents/***/***/Project')

  File "C:\Users\***\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 704, in runfile
    execfile(filename, namespace)

  File "C:\Users\***\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 108, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "C:/Users/***/Documents/***/***/Project/untitled.py", line 27, in <module>
    m.Equation(Cx(x1,x2,x3,x4) < 0)

  File "C:/Users/***/Documents/***/***/Project/untitled.py", line 17, in Cx
    if K > 15:

  File "C:\Users\***\Anaconda3\lib\site-packages\gekko\gk_operators.py", line 25, in __len__
    return len(self.value)

  File "C:\Users\***\Anaconda3\lib\site-packages\gekko\gk_operators.py", line 134, in __len__
    return len(self.value)

TypeError: object of type 'int' has no len() …
Run Code Online (Sandbox Code Playgroud)

python optimization ipopt gekko

5
推荐指数
1
解决办法
145
查看次数

直接支持矩阵变量的 Python 非线性约束优化包

我一直在寻找可以直接处理矩阵变量的 Python 非线性约束优化包(用于处理不一定是凸的问题)。更具体地说,我正在处理优化问题,其中优化变量是矩阵,并且方程两边都是矩阵,存在等式约束。这种优化问题的一个例子是正交 Procrustes 问题 ( https://en.wikipedia.org/wiki/Orthogonal_Procrustes_problem )。

在我的搜索中,我遇到了 SciPy、pyOpt、Ipopt 和 GEKKO,但它们似乎都不直接支持矩阵变量(从我能找到的文档中)。我考虑过在必要时进行一些操作以将矩阵转换为向量,反之亦然(通过numpy.reshape或类似的方式),但我想尽可能避免这种选择。原因是我的问题相当大,不断重塑数组会严重损害优化过程的效率。

有什么建议么?

python mathematical-optimization ipopt gekko scipy-optimize

5
推荐指数
1
解决办法
890
查看次数

应用程序错误:在 Pyomo 中找不到解算器“ipopt”的可执行文件

我正在学习 Pyomo 并尝试使用 ipopt 来解决示例问题。但最初,我已经安装了软件包,然后它总是显示没有找到 ipopt 。之后我重新安装了很多次,现在显示

'''WARNING: Could not locate the 'ipopt' executable, which is required for solver
    ipopt
---------------------------------------------------------------------------
ApplicationError                          Traceback (most recent call last)
<ipython-input-2-2e55f87657f9> in <module>
      1 model.N=50
      2 instance = model.create_instance()
----> 3 results = opt.solve(instance) # solves and updates instance

D:\Anacondo\lib\site-packages\pyomo\opt\base\solvers.py in solve(self, *args, **kwds)
    514         """ Solve the problem """
    515 
--> 516         self.available(exception_flag=True)
    517         #
    518         # If the inputs are models, then validate that they have been

D:\Anacondo\lib\site-packages\pyomo\opt\solver\shellcmd.py in available(self, exception_flag) …
Run Code Online (Sandbox Code Playgroud)

python executable ipopt pyomo

5
推荐指数
1
解决办法
1万
查看次数