小编use*_*752的帖子

Scipy 最小化:如何将 args 传递给目标和约束

我的 MWE 如下

def obj(e, p):
    S = f(e) + g(p)
    return S
Run Code Online (Sandbox Code Playgroud)

我想仅最小化此函数e并将其p作为参数传递给该函数。不过,我也想依赖于约束p,并e认为是形式p + e < 1

我试过

cons = {'type': 'ineq',
       'fun': lambda e, p: -e -p + 1,
       'args': (p)}
Run Code Online (Sandbox Code Playgroud)

然后,对于以下情况,我尝试将其最小化 p = 0.5

minimize(obj, initial_guess, method = 'SLSQP', args = 0.5, constraints = cons)
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我name 'p' is not defined在定义的行中收到错误cons。如何将参数传递p给目标函数和约束?


完整代码如下

from scipy.optimize import minimize
from scipy.stats import entropy
import numpy as …
Run Code Online (Sandbox Code Playgroud)

optimization scipy python-3.x

8
推荐指数
1
解决办法
3353
查看次数

Conda - 无法完全删除环境

我使用的是 Windows 10(所有命令都以管理员身份运行)。我创建了一个名为 myenv 的环境。然后我用了

conda env 删除 -n myenv

现在,如果我尝试

康达信息--envs

我只看到基础环境。但是,如果我尝试

conda 激活 myenv

我仍然可以激活它!我认为是因为在 envs 文件夹下,仍然有一个名为 myenv 的文件夹没有被删除。

如何永久删除环境?

python conda

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

我可以及时向前跑ode45吗?

我使用ode45来解决微分方程,但是tspan总是必须使系统及时向前运行.我可以让ode45将系统向后运行到负t吗?

我具体的问题是使用上升指数函数,即从t = -infinity到t = 0的*exp(at),并且对于所有t> 0,函数为零.正如您所看到的,不可能翻译此函数并在我的问题中使用区间t = 0到t = infinity.所以,我希望ode45能够在负面工作.

谢谢!

编辑:经过一番思考,我意识到我的问题措辞严厉,我的理解也很差,所以让我在这里重申一下.

我的ODE的形式为x'= f(t)x,其中f(t)= a*exp(at)从-infinity到0.系统从t = -infinity处的一些初始条件开始.另一方面,ode45要求tspan为正,并且还需要t = 0时的初始条件.那么我该如何改变这两个标准呢?

谢谢 :)

matlab ode

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

为什么Python 2的raw_input输出unicode字符串?

我在Codecademy的Python课程上尝试了以下内容

hobbies = []

# Add your code below!
for i in range(3):
    Hobby = str(raw_input("Enter a hobby:"))
    hobbies.append(Hobby)

print hobbies
Run Code Online (Sandbox Code Playgroud)

有了它,它工作正常,但如果相反,我尝试

Hobby = raw_input("Enter a hobby:")
Run Code Online (Sandbox Code Playgroud)

我得到[u'Hobby1', u'Hobby2', u'Hobby3'].额外u的来自哪里?

python unicode input python-2.x

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

类似于旅行商的优化问题-需要更好的启发式

我有一个优化问题,我正在寻找一种算法,该算法的性能要比单纯的方法好。

问题

考虑一个图,,G(N, E)其中N是节点E集,是边集。每个节点n_iN具有相关联的状态s_i。我使用了字典D来存储它,其中节点作为键,相应的状态作为值。相邻节点可以使用交换策略交换状态。具体来说,交换策略定义为

def swap(G, D, n_i, n_j):
    if n_i not in neighbors(G, n_j):
         print('Cannot swap between disconnected nodes')
    else:
         s_i = D[n_i]
         s_j = D[n_j]
         D[n_i] = s_j
         D[n_j] = s_i
    return D
Run Code Online (Sandbox Code Playgroud)

每个状态现在必须以给定的顺序“访问”其他状态的列表,其中访问意味着这两个状态必须在上的任意一对相邻节点上G(N, E)。例如s_1必须访问[s_3, s_5, s_2]s_2必须访问[s_1, s_3]s_3必须访问[s_1, s_2, s_4]等。访问顺序必须保留。但是,允许状态位于相邻节点上,而无需将其标记为访问。例如,如果s_1开始于s_5,则它必须首先成为,然后s_3将该访问标记为已完成,然后s_5 …

optimization graph-theory traveling-salesman

5
推荐指数
0
解决办法
136
查看次数

MATLAB - 获取当前路径,然后使用它导航到不同的文件夹

我有一堆代码当前存储在我的本地机器上。有两个文件夹,一个叫做“Resources”,另一个叫做“src”。在“src”中有一个需要运行的主脚本,称为“main.m”,它从“Resources”调用文件。

如果我将整个内容复制到新计算机上,路径将会改变,MATLAB 可能无法再找到“资源”。我知道相对于“main.m”,我需要上升一级,然后进入“资源”。

让 MATLAB 指向“资源”的最佳方法是什么?

我目前正在尝试

P = mfilename('fullpath') 
Run Code Online (Sandbox Code Playgroud)

这给出了 main.m 的路径。现在,我想从这里导航,向上一个文件夹,然后进入“资源”。或者如果有更好的方法,请告诉我。

最终,我想将其扩展为适用于多个文件夹“Resources1”、“Resources2”等,因此 MATLAB 需要能够导航到正确的文件夹。

matlab path

3
推荐指数
1
解决办法
1612
查看次数

在 Python 中对数字的列表(或数组?)进行平方

根据其他堆栈中的答案,我来自 MATLAB 背景,到目前为止,这个简单的操作在 Python 中实现似乎非常复杂。通常,大多数答案使用 for 循环。

到目前为止我见过的最好的是

import numpy
start_list = [5, 3, 1, 2, 4]
b = list(numpy.array(start_list)**2)
Run Code Online (Sandbox Code Playgroud)

有没有更简单的方法?

python square

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