利用遗传算法和matlab进行资源分配



我正在处理资源分配问题,在这个问题中,我总共有50000个资源,我想在6个模块上分配它。目标是

f(i)=1-exp(-b(i)*w(i)); for i=1 to 6
g(i)=1+2*exp(-b(i)*w(i)); for i=1 to 6
ff=(c1-c2)*a(i)*v(i)*f(i)/g(i)+c2*a(i)+c3*w(i);  for i=1 to 6

并且a(i)、b(i),c1、c2、c3和v(i)是已知的

消费品是

w(i)<w码头i=1至6

w(i)>=0和

r(i)=1-exp(-b(i)*w(i))/1+2*exp(-b(i)*w(i))>=0.9;即每个模块的r(i)>=0.9

所以我需要W(i)i=1到6,并且总W是50000。

请任何人告诉我如何使用遗传算法。

谢谢。

拥有评估函数不足以确定遗传算法的外观,因为即使评估函数非常重要,它也不是问题的唯一部分。为了充分评估您的问题,至少需要了解以下内容:

  1. 每个模块的限制是什么分配例如,是否每个都有容量限制模块
  2. 我们正在处理什么样的资源?有吗资源之间的依赖关系,是函数还是时间
  3. 我们在处理什么样的问题?所有资源都是分配还是我们打算使用它们来执行某项任务(因此,我们将在每个模块中需要特定类型的资源)

假设你需要分配所有的资源,最简单(也许也是最愚蠢)的解决方案是将每个资源将被指定到的模块编码到染色体中,并有一个由1、2、3。。。和6。当然,所有的位串运算符都可以应用于这个解决方案,并进行一些小的更改。

由于使用50.000个字符长的字符串是可行的,我们需要其他选择。如果每个资源上都有任何数字参数,我们可以考虑创建一个由组中心组成的表示,并根据资源与每个中心的接近程度对资源进行聚类。然而,应该将资源有意义地转换为多维实数集。为了创造这一点,我们需要更多地了解资源本身。

最新更新