如果您不想使用 'networkx' 和 'matplotlib' 库来绘制时标网络图,您可以使用纯Python代码来生成一个简单的文本形式的网络图。

以下是修改后的代码示例:

# 创建工作过程字典,键为工作过程,值为前置工作过程列表
workflows = {
    'b': ['a'],
    'c': ['b'],
    'd': ['c'],
    'e': ['d'],
    'f': ['e'],
    'g': ['f'],
    'h': ['g'],
    'i': ['h'],
    'j': ['i']
}

# 定义计算最早开始时间和最晚开始时间的函数
def calculate_earliest_start_time(workflows):
    result = {}
    for process, predecessors in workflows.items():
        if len(predecessors) == 0:
            result[process] = 0
        else:
            result[process] = max(result[predecessor] for predecessor in predecessors)
    return result

def calculate_latest_start_time(workflows, earliest_start_time):
    result = {}
    workflow_keys = list(workflows.keys())
    for process in reversed(workflow_keys):
        if process == workflow_keys[-1]:
            result[process] = earliest_start_time[process]
        else:
            successors = [key for key, value in workflows.items() if process in value]
            result[process] = min(result[successor] for successor in successors)
    return result

# 计算最早开始时间和最晚开始时间
earliest_start_time = calculate_earliest_start_time(workflows)
latest_start_time = calculate_latest_start_time(workflows, earliest_start_time)

# 打印节点的最早开始时间和最晚开始时间
print('节点的最早开始时间(ES):', earliest_start_time)
print('节点的最晚开始时间(LS):', latest_start_time)

# 计算最早完成时间和最晚完成时间
earliest_finish_time = {process: earliest_start_time[process] + 1 for process in workflows.keys()}
latest_finish_time = {process: latest_start_time[process] + 1 for process in workflows.keys()}

# 打印节点的最早完成时间和最晚完成时间
print('节点的最早完成时间(EF):', earliest_finish_time)
print('节点的最晚完成时间(LF):', latest_finish_time)

# 计算总时差
slack = {process: latest_start_time[process] - earliest_start_time[process] for process in workflows.keys()}

# 打印节点的总时差
print('节点的总时差(SLACK):', slack)

以上代码没有使用 'networkx' 和 'matplotlib' 库,而是使用字典和列表来表示工作过程之间的关系,并通过自定义函数计算了最早开始时间(ES)、最晚开始时间(LS)、最早完成时间(EF)、最晚完成时间(LF)和总时差(SLACK)等。

请注意,由于不使用图形库,代码无法绘制时标网络图,而是直接输出了节点的时间参数。如果需要可视化网络图,您可能需要使用 'networkx' 和 'matplotlib' 或其他适合的图形库来实现。

希望以上修改的代码能够满足您的需求!

无需 NetworkX 和 Matplotlib,纯 Python 代码绘制时标网络图

原文地址: https://www.cveoy.top/t/topic/plp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录