在Microsoft Project中使用VBA编写遗传算法

时间:2018-08-07 15:54:11

标签: excel-vba genetic-algorithm microsoft-project-vba

是否可以像excel一样在MSP中为遗传算法编写vba代码?

我想根据总成本最小化来优化项目任务的持续时间,为此,我需要运行遗传算法来随机更改每个任务的持续时间,如果我可以在Microsoft项目中使用Vba编写此算法,则MSP将根据每个任务的新工期和新的项目总工时,我可以计算出新成本。

我知道在Excel中可以使用vba遗传代码进行优化,是否可以在MSP的Vba中编写相同的代码?

如果不是,那么如何从MSP导出数据并将其导入到excel以运行算法,然后又将该数据再次导入MSP呢?

非常感谢

1 个答案:

答案 0 :(得分:0)

  

我想根据以下条件优化项目任务的持续时间   最大限度地降低总成本,为此,我需要运行遗传算法来随机更改每个任务的持续时间

是的,您可以使用VBA(Task object methods and properties)在MS Project中执行此操作。由于您依赖于Project的CPM引擎和分级功能,因此需要在MS Project中执行此操作。

算法

  1. 遍历所有任务并将持续时间更改为随机数。将“摘要”任务跳过为“持续时间”是只读的,并跳过已完成的任务,还可以选择跳过已经开始的任务。
  2. 平衡资源。
  3. 计算总费用。
  4. 将所有任务的工期存储在Duration1字段中,并将总成本存储在第一个任务的Cost1中。
  5. 重复步骤1-4九次,将持续时间存储在Duration2-Duration10中,将总成本存储在Cost2-Cost10中。
  6. 确定成本最低的迭代,并将这些持续时间移至Duration1字段。
  7. 重复步骤5-6,直到充分优化成本。
  8. 按照步骤1将持续时间从“ Duration1”字段移动到“ Duration”字段,跳过任务。