找回密码
 立即注册
查看: 372|回复: 0

智能算法求解优化问题,那约束条件如何编写代码?

[复制链接]
发表于 2022-2-23 09:10 | 显示全部楼层 |阅读模式
首先要明确选择的哪一类算法来求解?
如果选择常规算法的话,就先进行数学公式推导,或者进行模型转换,最终目的是将模型转化为使用常规数值分析算法可求解的状态。数学公式推导的方法需要有较好的数学功底,模型转化方向需要对实际问题有着深刻的理解。
如果选择像GA、PSO或者强化学习这种启发式算法(也就是通常所谓的智能算法)的话,最简单的方法是采用边界条件松弛的思路,具体就是先只考虑其中几个优化目标和约束条件,不考虑剩余的优化目标和约束条件,在求解出的可行解里,将满足剩余优化目标和约束条件的解挑选出来。
但这两种方法中间没有明确的界限,模型转化方法也往往伴使用边界条件松弛的思路,即先考虑最重要的优化目标和约束条件,将模型转化为可用算法求解的状态,这在数学建模上也称作分层优化方法。
在本质上,算法只是数学模型的求解器。所谓的启发式算法往往针对数据规模较大的问题较为适用,并且启发式算法的核心程序是固定的,只要根据数学模型设计出相应的数据结构直接放入算法中即可求解,启发式算法的优势在于“利用30%的时间求解出能够达到逼近理论最优解70%的结果”,缺点在于算法求解的上限有限,即使数据结构设计的很好,能达到最优解90%的结果就很不错了。如果能采用数值分析算法进行求解,在公式推导或模型转化较为良好情况下,可以取得接近最优解90%以上的结果。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-22 18:30 , Processed in 0.063136 second(s), 22 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表