微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 numpy 进行更快的详尽研究

如何解决使用 numpy 进行更快的详尽研究

我正在尝试使用详尽的研究来最大化两个函数间的最小值,此解决方案有效,但 python 中的循环消耗了大量计算时间。有没有有效的方法使用 numpy(网格或矢量化)来解决这个问题?

代码

以下函数用于穷举研究方法

    try (CSVReader reader = new CSVReader(new FileReader(file))) {
            List<String[]> r = reader.readAll();
            r.forEach(x -> System.out.println(Arrays.toString(x)));
        }

详尽的研究方法采用 6 个参数(标量或一维数组)。目前我只想在标量上计算我的代码,然后我可以使用另一个函数来浏览这些参数,如果它们是一维数组。

import numpy as np

def F1(x):
  return (x/11)**10

def F2(x,y,z):
  return z+x/y

def F3(x,z,a,b,c):
  return ((x+y)**z)/((a-b)**c)

解决方法

你可以这样做:

A,B,C = np.meshgrid(a,b,c)
mask = P1*C+P2*B+2*(A*B*C) <= F1(P3)
A = A[mask]
B = B[mask]
C = C[mask]
  
f_1 = F2(A,C,P6)
f_2 = F3(A,10,P4,P5)
min_f = np.minimum(f_1,f_2)
ind = np.argmax(min_f)
obj_opt,a_Opt,b_opt,c_opt = min_f[ind],A[ind],B[ind],C[ind]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。