代理模型学习记录

概述

代理模型是工程问题中常用的一个优化方法。当实际问题(高精度模型)计算量很大、不容易求解时,可以使用计算量较小、求解迅速的简化模型来替代原模型,加速优化过程。代理模型的计算结果与原模型非常接近,但是求解计算量较小。通过在仔细选择的有限个点(输入)计算原模型的响应(输出),从而建立代理模型 [ 1 ] ^{[1]} [1]。建立得到的代理模型在优化设计中可近似替代比较复杂和费时的数值分析,也可称为响应面模型或者是近似模型。对于优化过程中的一些难以用直观的函数表达式去表达目标函数,这时也可用代理模型来替代目标函数。使用代理模型可以极大的提高优化设计效率以及降低优化的难度。

分类

从算法层面来分,代理模型通常有径向基模型,神经网络,多项式响应面模型,克里金模型,支持向量机模型等等。

从解决工程问题的差异性来分,代理模型可分为两类:一种是直接基于实验设计的代理模型优化,一种是带加点准则的代理模型优化。两者区别在于,前者一次性抽取样本点,计算响应值并构建代理模型,在优化过程中代理模型保持不变。而后者是先抽取少量的样本点建立初始代理模型,再不断向总样本中添加新点,不断更新代理模型,直至优化收敛。所以从优化过程中的构造方式来看,前者又被称作”静态代理模型“,后者为”动态代理模型“。

构建步骤

样本点获取
对样本点进行数值分析
组成数据集
构建代理模型
  • 样本点采集通常采用试验设计的方法,通常采用拉丁超立方和均匀设计;

  • 样本点数值分析,通常采用线下实验或者线上计算机模拟(有限元分析等等);

  • 将样本点及其对应的数值分析结果组成数据集,用于代理模型构建;

  • 建立代理模型时可先对某一模型的参数进行训练,可以极大增强代理模型的精准性,一般采用“最大似然估计”、“交叉验证”等。

总结

  • 插值、逼近和回归的区别

    从多项式的角度,插值是用一个多项式来近似替代数据列表函数,并要求多项式通过列表函数中给定的数据点。逼近是为复杂函数寻找近似的替代多项式函数,其误差在某种度量意义下最小。

    插值和逼近都是通过采样点寻找目标函数的近似替代,区别在于是否经过采样点。插值中替代函数经过样本点,故样本点误差为零;逼近中样本点误差不为零,而是在某种度量意义下最小。

    回归反映的是两组数据的关系,假设已知所有样本点同时满足一曲线方程,回归的目的在于求出该方程的系数 [ 3 ] ^{[3]} [3]

    对于代理模型中回归模型有多项式响应面模型,插值模型有克里金模型和径向基模型等。

  • 代理模型的局限性

    随着问题维度的上升,代理模型构建所花费的样本点数和时间会大幅度地增加,而且也会在一定程度上降低代理模型的精度从而影响其提供信息的可信度,从而会导致代理模型的辅助能力下降。因此,可将目前运用较为广泛的降维技术与代理模型所使用的算法相结合进一步提高在求解高维问题时的效果 [ 4 ] ^{[4]} [4]

  • 代理模型的发展部分趋势

    相较于静态代理模型,动态代理模型在优化效率和结果精度方面更具有优势。详细实现参见文献基于动态径向基函数代理模型的优化策略,DOI:10.3901/JME.2011.07.164。对于多维的样本数据,在构建代理模型前可采用数据降维方法,如POD、PCA等。详情实现参见文献基于POD-RBF代理模型的迭代更新反演方法,DOI:10.7511/jslx20201201001

参考

[1] 维基百科-代理模型

[2] 代理模型介绍大全 - 知乎 (zhihu.com)

[3] 回归、插值、拟合

[4] 关于代理模型的一些理解

  • 6
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python构建代理模型是指使用Python编写代码来实现代理模型代理模型是一种设计模式,它可以让代理对象代替真实对象进行一些操作,以实现对真实对象的控制和管理。在Python中,我们可以使用类来定义代理模型,并在代理类中实现对真实对象的访问控制、过滤和管理等功能。代理模型可以应用于网络编程、数据库操作等领域,以提高程序的可扩展性和可维护性。 ### 回答2: Python构建代理模型是指使用Python编程语言来实现代理模型代理模型是一种常见的软件设计模式,它可以在客户端和服务器之间添加一个中间层,充当两者之间的中介,从而实现各种功能和优化。 Python作为一种简洁高效的编程语言,具有丰富的库和框架支持,非常适合用于构建代理模型。使用Python编写代理模型可以实现多种功能,例如: 1. 网络代理:通过Python编写的代理服务器可以用于提供网络代理服务,可以实现访问控制、安全过滤、日志记录等功能。Python的Socket和HTTP库提供了强大的网络编程功能,可以很方便地实现代理服务器。 2. 数据代理:Python可以通过使用代理模式将数据存储在缓存中,当再次请求相同数据时,可以直接从缓存中获取,减少了对数据库或其他数据源的访问,提高了数据查询效率。 3. API代理:通过使用Python编写的代理模型,可以对外部接口进行封装和优化。可以利用Python的Web框架(如Flask、Django)编写代理接口,对访问进行限制和控制,并对返回结果进行处理和加工,提供更加方便和高效的接口服务。 4. 负载均衡:使用Python编写的代理模型可以实现负载均衡,将请求分发给多个服务器,从而提高系统的性能和可用性。Python的多线程和多进程编程能力可以很好地支持并发的请求处理。 总之,Python构建代理模型非常灵活和强大,可以应用于各种场景,为系统提供更好的性能、安全性和可扩展性。 ### 回答3: 在Python中,可以通过构建代理模型来实现对对象的间接访问和控制。代理模型是一种结构型设计模式,它通过为同一个接口创建一个代理类,来控制对实际对象的访问。 在代理模型中,我们首先定义一个接口,描述了客户端和代理类之间的通信规范。接着,我们创建一个实际对象类,该类实现了接口中定义的所有方法。然后,定义一个代理类,该类也实现了接口中的所有方法,并且维护了一个对实际对象的引用。 当客户端需要访问实际对象时,它会通过代理类来进行间接访问。代理类可以根据特定的需求,在客户端访问实际对象之前或之后进行一些额外的操作,如权限控制、日志记录等。通过代理类,我们可以在不改变实际对象的代码的情况下,灵活地对其进行扩展和增强。 在Python中,可以使用装饰器模式来实现代理模型。通过使用装饰器,我们可以将代理类与实际对象进行关联,使得客户端直接调用代理类的方法时,实际上是在调用实际对象的方法。装饰器可以在代理类的方法执行前后添加额外的逻辑,实现对实际对象的间接访问和控制。 总之,Python提供了强大的装饰器功能,可以方便地构建代理模型。通过代理模型,我们可以实现对实际对象的间接访问和控制,而不改变实际对象的代码。这种灵活性使得代理模型在面向对象的程序设计中得到广泛应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值