使用纸浆库的遗传优化器

问题描述 投票:0回答:1

是否可以通过Pypi遗传算法库使用pulp库创建决策变量并编写适应度函数和惩罚来解决线性问题?我已经这样做了,但似乎没有产生正确的答案。他们互相支持吗?

python linear-programming genetic-algorithm pulp traveling-salesman
1个回答
0
投票

没有。这是不可能的!

一般来说,您可以假设数学优化中的每个建模和求解器工具都假设它在实例化/触发后完全控制一切。外部干扰(没有API)永远是被禁止的!

虽然有创建 math-opt / metaheuristic=gen-prog 混合体的方法,但这些是:

  • 极其复杂
  • 组件之间需要仔细沟通
    • 例如math-opt 组件中的插件系统:例如参见 SCIP Plugin API(可能是最可配置的 math-opt 求解器)
  • 通常需要数月的努力

由于数学优化的复杂性,要表达为什么该方法是不可能的并不容易,但只有两个简单的评论:

  • pulp(据我所知)甚至不允许您在搜索过程中注入原始可行的解决方案(更不用说检查非保证的原始可行的解决方案)
    • 可能需要类似的东西
  • 纸浆选择的后端求解器通常会删除大量变量,并可能严重重写您的问题
    • 如果没有准确的(例如插件 API)通信,外部组件可能会想要对甚至不存在的变量做一些事情

请记住,事情比这要严格得多: 人们经常在建模期间(我们称之为编译时)在数学选择实体(例如变量)上使用 Python 原生

if
max
函数期望它在求解/搜索期间执行某些操作(我们称之为运行时)。

出于同样的原因,这也是错误的并且因为这些东西(对于纸浆和公司来说是未知的)在 math-opt 工具甚至看到它之前就被 python 急切地评估了!

© www.soinside.com 2019 - 2024. All rights reserved.