我已经在这里和那里读了一段时间,关于使用"蚁群"模型作为优化各种类型算法的启发式方法.但是,我还没有找到一篇文章或书籍,以介绍的方式讨论蚁群优化,甚至还有很多细节.任何人都可以指点我可以了解更多关于这个想法的资源吗?
algorithm computer-science graph-theory montecarlo ant-colony
我正在寻找一个实现蚁群优化的.NET类库或.NET-Framework.你能给我一些关于这个主题的链接,资源等吗?
.net algorithm mathematical-optimization montecarlo ant-colony
我开发了一个aco算法.我认为它不能正常工作......很难解释,但我会尝试.
问题是信息素水平浮动.我认为,最佳路径上的信息素水平必须越来越高,但在我的程序中它并非如此.
Optimal path 是一个路径,通过在起始顶点和目标顶点之间的边缘上找到最大信息素水平来构建.
例:
1 5 3
4 5 10
0 0 0
Run Code Online (Sandbox Code Playgroud)
Optimal path会的1 -> 2 -> 3.
重量矩阵:
0 3 10
0 0 3
0 0 0
Run Code Online (Sandbox Code Playgroud)
最佳路径是:1 -> 2 -> 3 (length: 6)
另一条路径(非最佳路径):1 -> 3 (length: 10)
10只蚂蚁后的信息素水平:
0 5 1
0 0 3
0 0 0
Run Code Online (Sandbox Code Playgroud)
最佳路径: 1 -> 2 -> 3
20只蚂蚁后的信息素水平(10多个):
0 1 5
0 0 1
0 0 0
Run Code Online (Sandbox Code Playgroud)
最佳路径: 1 -> 3
30只蚂蚁后的信息素水平:
0 …Run Code Online (Sandbox Code Playgroud) 所以我正在实现一个启发式算法,我遇到过这个功能.
我有一个1到n的数组(C,0到n-1,w/e).我想选择一些我将复制到另一个数组的元素.给定参数y,(0 <y <= 1),我希望得到平均值为(y*n)的数字分布.这意味着每当我调用此函数时,它会给出一个介于0和n之间的数字,这些数字的平均值为y*n.
根据作者,"l"是一个随机数:0 <l <n.在我的测试代码中,它当前生成0 <= l <= n.我有正确的代码,但我现在已经搞乱这几个小时了,而且我懒得把它编码回来.
所以我编写了函数的第一部分,对于y <= 0.5,我将y设置为0.2,并将n设置为100.这意味着它必须返回0到99之间的数字,平均为20.并且结果不是0和n,但有些漂浮.更大的n是,这个浮子越小.
这是C测试代码."x"是"l"参数.
//hate how code tag works, it's not even working now
int n = 100;
float y = 0.2;
float n_copy;
for(int i = 0 ; i < 20 ; i++)
{
float x = (float) (rand()/(float)RAND_MAX); // 0 <= x <= 1
x = x * n; // 0 <= x <= n
float p1 = (1 - y) / (n*y);
float p2 = …Run Code Online (Sandbox Code Playgroud) 所以我最近对算法非常着迷.我最近实施了一个蚁群优化算法来解决TSP(非常有趣).现在我一直在寻找其他"问题"来解决.现在我想实现一个算法来解决涉及满足百分比要求的问题,并且低于任意限制.
例如:
用户输入:
1)限制 - 可用的能量.
2)"染色体"类型 - 蓝色(亚型 - 靛蓝等),红色(亚型 - 栗色等),黄色(亚型 - 浅黄色等) - 像蓝色这样的主要属性有一个"池"可供选择由不同的亚型组成,如靛蓝,浅蓝,海蓝等. - 每种子类型的颜色都有不同的成本.
3)"理想"解决方案所需类型的百分比(可以引入+/-%以允许更多种类). - 10%红色,30%蓝色,60%黄色.
输出:
1)满足两个要求的可能的最终解决方案,低于 - 但接近 - 所需成本并满足超类型的百分比要求.
所以举个例子.
这是一个非常简单的例子,显然它在现实中比这更复杂.
用户指定的成本应如下95 <=成本<= 105.
用户选择25%蓝色,25%黄色,50%红色.偏差+/- 5%
每种颜色的可用池
蓝色: 靛蓝:成本= 25; 海蓝:成本= 30; 海军蓝:成本= 75;
黄色: 浅黄色:成本= 20; 深黄色:成本= 30; 超级深黄色(lol):成本= 75;
红色: 栗色:成本= 20; 血红色:成本= 45; 鲜红色:成本= 55;
因此算法将运行并返回不同的组合.
组合1:靛蓝,深黄色,血红色:成本= 100:蓝色= 25%,黄色= 30%,红色= 55%.
组合2:海蓝色,浅黄色,血红色:成本= 105:蓝色= ~30%,黄色= ~20%,红色= ~50%
组合3:等等.
编辑:第二次编辑
输出将包含多组不同的组合.
例如,一个解决方案可能包含以下组合:
一个解决方案将由此表示:
组合1:成本= 20; 50%蓝色,25%黄色,25%红色;
组合2:成本= 30; 10%蓝色,50%黄色,40%红色; …
我对算法很新,现在正在处理一些路由优化问题,并且遇到了一些关于以下方法的论文:
元启发式方法 基于种群(遗传算法,蚁群优化等)基于单一解决方案(迭代本地搜索)
基于图的方法 ,例如A*算法
混合整数线性规划方法
我对这些方法之间的关系有点困惑,我们是否使用例如使用GA来解决MILP,或者它们都只是单独的方法?
提前致谢!!
algorithm genetic-algorithm ant-colony mixed-integer-programming
在蚁群优化算法中,我们必须提供多个蚂蚁.是否有任何数学公式来选择蚂蚁数量?
ant-colony ×7
algorithm ×5
montecarlo ×3
.net ×1
c++ ×1
graph-theory ×1
heuristics ×1
probability ×1