我试图用C#作为编程语言来解决问题陈述。 在输入(双/小数)的问题系统中说 H i ,生成的输出是一种包含多个参数的数据集形式( F 我 , P 我 和 T 我 )。我不得不过滤掉数据集中那些满足以下条件的条目。
我是否可以使用一种有效的算法,在这种情况下,我可以为 H i 的最佳值集合,输出参数值很好在约束内。此外,我认为在这种情况下使用遗传算法是有道理的,但不知何故,我无法制定和适应遗传算法特有的问题。
任何指针/建议都非常感谢。
答案 0 :(得分:0)
您可以使用Linq查询
var result = DataSet.Where(x => x.Fi> Fmin&& x.Pi> Pmin&& Ti< Tmax);
答案 1 :(得分:0)
嗯,我很难猜到。我不知道Fi等功能的属性。 log-Barrier方法可能是一个有趣的东西。或SQP方法。但它必须是不同的。 否则模拟退火可能会很有趣。 但这些只是一些猜测。这真的取决于问题。
答案 2 :(得分:0)
我怀疑遗传算法是否有意义,因为您只有一个确定输出(Fi,Pi,Ti)的输入变量(Hi)。遗传算法的强大之处在于它将良好的解决方案融入新的解决方案中。如果你的解决方案只有一个数字,那么混合两个好的解决方案可能意味着你找到了一些Hi inbetween(例如平均值 - > 0.5Hi1 + 0.5Hi2或其他一些线性组合aHi1 +(1-a)Hi2 with介于0和1之间。
我建议您查看多启动本地搜索启发式算法,例如link。这是一个非常可靠的启发式,允许您探索Hi的解决方案空间。 在这些最简单的形式中,这种启发式方法计算Hi的N个随机值的性能,然后在这N个初始值中搜索最佳性能Hi值的区域的进一步改进。
这种东西对代码来说也很简单,假设您有办法从Hi输入中获取Fi,Ti和Pi值,并且您有办法找出哪些解决方案执行'最佳'(例如通过评论中提到的健身功能)。