Algorithm 基于百分比问题的蚁群优化或遗传算法

Algorithm 基于百分比问题的蚁群优化或遗传算法,algorithm,genetic-algorithm,ant-colony,Algorithm,Genetic Algorithm,Ant Colony,所以我最近对一般的算法非常着迷。我最近实现了一个蚁群优化算法来解决TSP(显然很有趣)。现在我一直在寻找其他需要解决的“问题”。现在我想实现一个算法来解决一个涉及满足百分比要求的问题,并且要低于任意限制 例如: 用户输入: 1) 极限 -i、 e.可用能源消耗量 2) “染色体”类型 -i、 e.蓝色(亚型-靛蓝等)、红色(亚型-褐红色等)、黄色(亚型-浅黄色等) -每个主要属性(如蓝色)都有一个“池”可供选择,其中包含不同的子类型,如靛蓝、浅蓝色、海蓝色等等。 -每种颜色的子类型都有与其相关的

所以我最近对一般的算法非常着迷。我最近实现了一个蚁群优化算法来解决TSP(显然很有趣)。现在我一直在寻找其他需要解决的“问题”。现在我想实现一个算法来解决一个涉及满足百分比要求的问题,并且要低于任意限制

例如:

用户输入:

1) 极限 -i、 e.可用能源消耗量

2) “染色体”类型 -i、 e.蓝色(亚型-靛蓝等)、红色(亚型-褐红色等)、黄色(亚型-浅黄色等) -每个主要属性(如蓝色)都有一个“池”可供选择,其中包含不同的子类型,如靛蓝、浅蓝色、海蓝色等等。 -每种颜色的子类型都有与其相关的不同成本

3) “理想”解决方案所需类型的百分比(可引入+/-%以允许更多种类)。 -i、 e.10%红色,30%蓝色,60%黄色

输出:

1) 满足这两个要求的可能最终解决方案,低于-但接近-所需成本,并满足超类型的百分比要求

比如说

这是一个超级简单的例子,显然比实际情况更复杂

用户指定成本应如下所示
95你的颜色问题对我来说似乎微不足道,我想即使是蛮力也会很快。。所以你的蚁群很可能也能解决这个问题:)

我看到你对ACO的表示的唯一问题是+/-X%

对于每种颜色的固定百分比,您可以按照您所说的那样进行:

蓝色、黄色和红色是位置 不同的子类型表示道路,它们的重量取决于所需的成本和浇注量

然后将AOC方法应用于TSP,但稍微改变蚂蚁的移动方式:

  • 仅当一条路径满足约束条件时才向其添加信息素 成本
  • 选择最接近“最佳长度”的路径长度=的N% 最佳成本(在上面的示例中,对于黄色路径 最接近25%*95)
  • 如果要添加浮动百分比约束,则:

    假设您的最佳成本是:

    Cost = X1*light yellow +X2*sea blue+X3*blood red for example.
    
    如果此成本不是最优的,您可以使用X1 X2和X3上的一些小变量来优化您的成本:

    例如,X1-e和X2+e将通过
    e*(costseablue costLightYellow)


    例如,给定一个小ε,对于每对席Xi,XJ,如 COSIT

    如果你的图满足三角形不等式,我建议你尝试一个最小生成树和一个完美的权重非二部匹配算法。Christofides等人向您保证在最佳值的3/2范围内提供解决方案。AOC可以给你带来好的、快速的结果,但是你必须针对许多问题对它进行优化。我用php编写了一个Christofides算法(phpclasses.org)。欢迎您尝试一下。我不确定它是否有效。它有时会产生奇怪的结果。这可能是我对Fleury算法的实现?

    是的,示例很简单,但我认为如果没有3种颜色,可能会出现运行时间问题。它变成了5+个超类型需求,每个超类型都有数百甚至数千个子类型可供选择。好吧,那么先用固定百分比实施ACO,如果成本不够理想,然后开始在百分比中创建差异,直到达到最佳成本为止?@Odnxe是的,这样ACO应该可以正常工作。你只需要给蚂蚁移动的方式添加一些约束,因为你不是在寻找最小的路径。我想不把信息素放在不需要的路径上应该足够了,但我不确定。你可以在路径选择上添加一个约束,选择最接近中等成本N%的路径。嗯,也许ACO不是最好的选择,因为我正在尝试实现多个好但独特的解决方案-强调独特。我想知道我是否可以跟踪任意数量的可能解决方案,比如5个,而不是跟踪最佳解决方案。这样我就可以使用5种不同类型的蚂蚁来投放不同种类的信息素,蚂蚁的行为就是不惜一切代价避免其他类型的蚂蚁投放信息素,除非没有其他选择。这样我可以保证5个独特的好解决方案。你觉得怎么样?@Odnxe这是一个有趣的方法。我想这应该行得通,你对独特性的限制应该得到尊重。但由于算法并不完全是基本的蚁群算法,我不确定它会一直收敛。添加新的约束(如信息素约束)可能会使算法不再收敛。。。但是我认为你应该尝试一下,这是解决这个问题的一个很好的方法。用5次而不是5次ant类型的方法来运行它怎么样?这似乎是一种初始条件起重要作用的问题。对于您的颜色问题,任何线性优化算法都可以(例如单纯形、内点等),我可以建议您使用ACO解决另一个有趣的问题:资源均衡(有时称为CRSP)。类似于TSP。例如,给定一个软件开发团队和一个工作计划,其中任务相互依赖以完成,并且每个任务分配给一个特定的人,找到让项目最早完成的时间表。我刚刚意识到我的问题问错了。我的意思是,候选解决方案是一组满足初始要求的组合。很多东西都超出了我的头脑,所以我必须研究很多这些术语。但只要看一看其中的每一个,完美的权重非二分匹配算法看起来可能是我想要实现的一个很好的匹配。这很难,我使用的匹配算法是我在互联网上找到的。您可以在javascript中查看这个tsp解算器,它使用