【问题标题】:writing genetic algorithm with vba in microsoft project在 microsoft project 中用 vba 编写遗传算法
【发布时间】:2020-07-01 07:10:04
【问题描述】:

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

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

我知道excel中有vba基因代码可供优化,是否可以在MSP的vba中编写相同的代码?

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

非常感谢,

【问题讨论】:

  • Excel 和 Optimize 很少出现在同一个句子中!你当然可以在 excel 中创建几乎任何算法,但肯定会更进一步,使用 vb.net 会大大提高性能。
  • 我同意使用 vb net 来运行这些算法会更好,但由于我想同时与 ms 项目交互,我可能会在 MS 项目中使用 vba,如果它没有不行,用excel或vb net从MS项目中导入数据来运行算法更容易吗?
  • MS 项目has VBA and its own Object Model。如果您有 Excel VBA 中遗传优化算法的示例,那么应该可以将其移植到 Project 中。这一切都取决于它使用 Excel 对象模型的广泛程度以及将其转换为 Project 的难度(希望只是数据处理)

标签: excel vba genetic-algorithm ms-project


【解决方案1】:

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

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

算法

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 2011-01-11
    • 2012-06-02
    相关资源
    最近更新 更多