23美赛D题:确定联合国可持续发展目标的优先级(ICM)思路&Python代码

本文探讨了联合国17个可持续发展目标的关系网络构建,利用图论和网络中心性来设定优先级。通过模拟和分析,评估了每个目标在实现其他目标中的作用,并讨论了技术进步、全球流行病等因素对优先级选择的影响。该方法有助于其他组织确定自身目标的优先级。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题D(交叉网络建模题):确定联合国可持续发展目标的优先级(ICM)

  • 赛题目的:对联合国制定的17个可持续发展目标进行关系网络的构建同时评估其可能存在的影响
  • 赛题解读&解题思路链接:交叉网络回归路径分析,如何寻找到能代表可持续发展目标的数值是这道题的难点。

背景
联合国(UN)已经制定了17个可持续发展目标(SDGs)。实现这些目标最终将改善世界各地 许多人的生活。这些目标并不是相互独立的。因此,通常在某些目标中获得的积极收益会对 其他目标产生影响(积极的或消极的,有时两者都有)。这种相互联系使实现所有目标成为一个流动的过程,可以考虑资金限制和其他国家和国际优先事项。此外,技术进步、全球大 流行病、气候变化、区域战争和难民运动的影响也对许多目标产生了严重影响。

要求
要探讨这两个目标之间的关系:
1.建立一个包含17个可持续发展目标之间的关系的网络。
2.利用个别可持续发展目标以及网络结构来设定优先级,以最有效地推动联合国的工作。你是如何评估每个优先级的有效性?如果你的优先事项被启动,在未来10年里还 能有什么合理的目标呢?
3.如果实现了其中一项可持续发展目标(例如,没有贫困或没有饥饿),那么由此产生的网络的结构将是什么呢?此成就将如何影响您的团队的优先事项?是否有 其他目标应该被纳入或建议给联合国纳入?
4.讨论技术进步、全球流行病、气候变化、地区战争、难民运动或其他国际危机对您的团队网络和您的团队的优先级选择的影响。从网络的角度来看,这对联合国的进展有什么重大影响?
5.讨论您的网络方法可以如何帮助其他公司和组织确定其目标的优先级。

SDG Network:https://www.sdg.org/

问题1:

  • 先验知识:目标1(无贫困)直接与目标2(零饥饿)和目标8(体面工作和经济增长)相关。它还间接与目标3(良好健康和福祉)和目标4(优质教育)相关,因为贫困和教育、健康之间存在关联。同样的方式,其他目标之间也有直接和间接的联系。

为了建立可持续发展目标之间的关系网络,我们可以使用图论中的有向图(Directed Graph)来表示目标之间的相互关系。我们可以将每个可持续发展目标看作图中的一个节点,并且用有向边表示目标之间的相互作用。

下面用随机数的方式模拟;

import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

# 随机生成7个可持续发展目标的数字
goals = ['No Poverty', 'Zero Hunger', 'Good Health and Well-being',
         'Quality Education', 'Gender Equality', 'Clean Water and Sanitation',
         'Affordable and Clean Energy']
num_goals = len(goals)
rand_nums = np.random.rand(num_goals)

# 构建有向图
G = nx.DiGraph()

# 添加节点和边
for i in range(num_goals):
    G.add_node(goals[i])
    for j in range(num_goals):
        if rand_nums[i] > rand_nums[j]:
            G.add_edge(goals[i], goals[j])

# 计算关系系数
for edge in G.edges:
    source = edge[0]
    target = edge[1]
    coef = G.in_degree(target, weight='weight') / G.out_degree(source, weight='weight')
    print(f"从 {source}{target} 的关系系数为:{coef:.2f}")

# 绘制关系图
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=1000)
nx.draw_networkx_edges(G, pos, edge_color='grey', arrows=True)
nx.draw_networkx_labels(G, pos, font_size=10, font_weight='bold')
plt.axis('off')
plt.show()

在这里插入图片描述

从 Zero Hunger 到 No Poverty 的关系系数为:1.20
从 Zero Hunger 到 Good Health and Well-being 的关系系数为:0.40
从 Zero Hunger 到 Quality Education 的关系系数为:0.80
从 Zero Hunger 到 Gender Equality 的关系系数为:1.00
从 Zero Hunger 到 Affordable and Clean Energy 的关系系数为:0.60
从 Good Health and Well-being 到 No Poverty 的关系系数为:1.50
从 Good Health and Well-being 到 Quality Education 的关系系数为:1.00
从 Good Health and Well-being 到 Gender Equality 的关系系数为:1.25
从 Good Health and Well-being 到 Affordable and Clean Energy 的关系系数为:0.75
从 Quality Education 到 No Poverty 的关系系数为:3.00
从 Quality Education 到 Gender Equality 的关系系数为:2.50
从 Gender Equality 到 No Poverty 的关系系数为:6.00
从 Affordable and Clean Energy 到 No Poverty 的关系系数为:2.00
从 Affordable and Clean Energy 到 Quality Education 的关系系数为:1.33
从 Affordable and Clean Energy 到 Gender Equality 的关系系数为:1.67
从 Clean Water and Sanitation 到 No Poverty 的关系系数为:1.00
从 Clean Water and Sanitation 到 Zero Hunger 的关系系数为:0.17
从 Clean Water and Sanitation 到 Good Health and Well-being 的关系系数为:0.33
从 Clean Water and Sanitation 到 Quality Education 的关系系数为:0.67
从 Clean Water and Sanitation 到 Gender Equality 的关系系数为:0.83
从 Clean Water and Sanitation 到 Affordable and Clean Energy 的关系系数为:0.50

问题2:

要设定优先级,我们需要考虑每个可持续发展目标在实现其他目标时的作用。我们可以使用网络中心性(centrality)来衡量每个目标在网络中的重要性。以下是三种常见的中心性度量:

  • 度中心性(Degree Centrality):一个节点的度数是指与其相连的边的数量。度中心性是所有与一个节点相连的边的数量。节点的度中心性越高,表示该节点在网络中的连接数越多,对其他节点的影响力也更大。

  • 接近度中心性(Closeness Centrality):一个节点的接近度中心性是指该节点与其他节点的平均距离的倒数。接近度中心性高的节点表示它可以更快地与其他节点进行交互和信息传递,因此在网络中更为重要。

  • 介数中心性(Betweenness Centrality):介数中心性度量一个节点在网络中扮演着多少个最短路径的中间人的角色。介数中心性高的节点表示它在网络中连接着很多其他节点,并且可以在不同节点之间传递信息,因此在网络中具有很大的影响力。

import networkx as nx
import random

# 生成7个随机数
targets = [random.random() for _ in range(7)]

# 构建有向图
G = nx.DiGraph()

# 添加节点
for i in range(7):
    G.add_node(i)

# 添加边
G.add_edge(0, 1, weight=random.random())
G.add_edge(1, 2, weight=random.random())
G.add_edge(1, 3, weight=random.random())
G.add_edge(2, 3, weight=random.random())
G.add_edge(3, 4, weight=random.random())
G.add_edge(4, 5, weight=random.random())
G.add_edge(4, 6, weight=random.random())

# 计算度中心性、接近度中心性和介数中心性
degree_centrality = nx.degree_centrality(G)
closeness_centrality = nx.closeness_centrality(G)
betweenness_centrality = nx.betweenness_centrality(G, weight='weight')

# 输出结果
print("度中心性:", degree_centrality)
print("接近度中心性:", closeness_centrality)
print("介数中心性:", betweenness_centrality)

  • 模型输出结果:
度中心性: {0: 0.16666666666666666, 1: 0.5, 2: 0.3333333333333333, 3: 0.5, 4: 0.5, 5: 0.16666666666666666, 6: 0.16666666666666666}
接近度中心性: {0: 0.0, 1: 0.16666666666666666, 2: 0.2222222222222222, 3: 0.375, 4: 0.3333333333333333, 5: 0.32051282051282054, 6: 0.32051282051282054}
介数中心性: {0: 0.0, 1: 0.16666666666666666, 2: 0.0, 3: 0.3, 4: 0.26666666666666666, 5: 0.0, 6: 0.0}

方法2:
下面是一个示例代码,用于将每个目标的优先级分配给网络,并计算每个目标的效益

import networkx as nx
import matplotlib.pyplot as plt
import numpy as np

# 生成随机的7个SDGs的权重
weights = np.random.rand(7, 7)

# 定义每个SDG的名字
sdgs = ['No Poverty', 'Zero Hunger', 'Good Health and Well-being', 'Quality Education', 'Gender Equality', 'Clean Water and Sanitation', 'Affordable and Clean Energy']

# 创建一个空有向图
G = nx.DiGraph()

# 添加节点和边
for i in range(len(sdgs)):
    for j in range(len(sdgs)):
        if weights[i][j] > 0.5:  # 随机产生大于0.5的权重,表示两个SDG有关系
            G.add_edge(sdgs[i], sdgs[j], weight=weights[i][j])

# 绘制图形
plt.figure(figsize=(12, 8))
pos = nx.spring_layout(G)
nx.draw_networkx_nodes(G, pos, node_size=1200, node_color='lightblue')
nx.draw_networkx_edges(G, pos, edge_color='gray', arrows=True)
nx.draw_networkx_labels(G, pos, font_size=14, font_family='arial')
nx.draw_networkx_edge_labels(G, pos, font_size=14, font_family='arial', edge_labels={(u, v): f"{d['weight']:.2f}" for u, v, d in G.edges(data=True)})
plt.axis('off')
plt.title('SDGs Network')
plt.show()

# 按照权重排序SDGs
sorted_sdgs = sorted(sdgs, key=lambda x: sum([G.edges[i, j]['weight'] for i, j in G.in_edges(x)]), reverse=True)
print('按照权重排序的SDGs:', sorted_sdgs)

# 计算每个SDG的权重之和
total_weight = sum([sum([G.edges[i, j]['weight'] for i, j in G.in_edges(x)]) for x in sdgs])

# 计算每个SDG的得分
scores = {}
for x in sdgs:
    scores[x] = sum([G.edges[i, j]['weight'] for i, j in G.in_edges(x)]) / total_weight

# 输出每个SDG的得分
print('每个SDG的得分:')
for k, v in scores.items():
    print(k, ':', f"{v:.2f}")

# 绘制按照得分排序的SDGs
plt.figure(figsize=(8, 6))
plt.bar(sorted_sdgs, [scores[s] for s in sorted_sdgs])
plt.xticks(rotation=45)
plt.title('SDGs Priority')
plt.xlabel('SDG')
plt.ylabel('Score')
plt.show()

按照权重排序的SDGs: ['Good Health and Well-being', 'Affordable and Clean Energy', 'Gender Equality', 'Zero Hunger', 'No Poverty', 'Quality Education', 'Clean Water and Sanitation']
每个SDG的得分:
No Poverty : 0.12
Zero Hunger : 0.12
Good Health and Well-being : 0.25
Quality Education : 0.11
Gender Equality : 0.16
Clean Water and Sanitation : 0.08
Affordable and Clean Energy : 0.16

在这里插入图片描述

要评估每个优先级的有效性,可以考虑以下因素:

  • 目标的重要性:目标对于实现可持续发展的整体目标有多重要,以及该目标在当前全球和地区层面的影响力和关注度。

  • 目标的可操作性:目标的实现是否依赖于其他因素,如技术、资源、政治稳定等。如果实现目标需要克服大量的困难,那么优先级可能会较低。

  • 可衡量性:目标是否可以衡量其实现的进展和成果。如果目标没有可衡量的指标,那么就很难评估其有效性。

  • 可持续性:目标是否能够持续地为社会和环境带来积极的影响。如果目标实现后只会带来短暂的好处,那么其优先级可能会较低。

如果我们设定了一组优先事项并开始实施,那么在未来10年里,我们可以设定一些合理的目标来评估其效果。这些目标可以基于已有的可衡量指标或者新开发的指标,例如:

  • 减少贫困率:该指标可以通过对全球贫困人口数量和比例的监测来衡量。如果我们的优先事项可以帮助减少贫困率,那么我们可以设定一个具体的目标,例如将全球贫困人口数量降低50%。

  • 减少温室气体排放:该指标可以通过对全球二氧化碳排放量的监测来衡量。如果我们的优先事项可以帮助减少温室气体排放,那么我们可以设定一个具体的目标,例如将全球二氧化碳排放量降低30%。

  • 提高教育水平:该指标可以通过对全球读写能力和受教育程度的监测来衡量。如果我们的优先事项可以帮助提高教育水平,那么我们可以设定一个具体的目标,例如将全球文盲率降低20%。

  • 保护自然环境:该指标可以通过对全球生物多样性、土地利用和水资源管理等方面的监测来衡量。如果我们的优先事项可以帮助保护自然环境,那么我们可以设定一个具体的目标,例如将全球森林面积增加10%。

通过设定具体的目标并对其进行监测和评估,我们可以更好地了解我们的优先事项是否有效,并在必要时进行调整

问题3

3.如果实现了其中一项可持续发展目标(例如,没有贫困或没有饥饿),那么由此产生的网络的结构将是什么呢?此成就将如何影响您的团队的优先事项?是否有 其他目标应该被纳入或建议给联合国纳入?

4.讨论技术进步、全球流行病、气候变化、地区战争、难民运动或其他国际危机对您的团队网络和您的团队的优先级选择的影响。从网络的角度来看,这对联合国的进展有什么重大影响?
5.讨论您的网络方法可以如何帮助其他公司和组织确定其目标的优先级。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌青羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值