当前位置:   article > 正文

【D题完整论文】2024美赛完整论文+代码参考(无偿分享)

【D题完整论文】2024美赛完整论文+代码参考(无偿分享)

D题:资源可用性和性别比例


第一问:

要求考虑五大湖的以及各个河流的水位在一年当中的最优位置,并且要考虑到多个不同主体的需求。那么在这个当中不同主体的需求也是不同的,有的希望是稳定的高,有的希望是稳定的低,这里需要注意一点,也就是在这个问题当中,不同的人群,它究竟是对河流的水位提出的需求,还是对湖水的水位提出的需求。

从这个图里面我们也可以看出来不同的人它的需求点也是不同的,比如这里的shipping companies。他们主要是对河流的水位需要希望尽可能的高。还有这个人群是希望旁边的一条河能够尽量的低。环境学家则是希望河水的水位是呈现出周期变化。recreational bottles and fishing boats,他主要是希望在湖水的水位呢是比较稳定的一周期。而氢能发电则更加的需要是水的流量比较大。

 

在处理好数后,我们就可以开始着手进行建模的工作了,对于这一个建模问题呢,我们要搞清楚水位和水流量之间的关系。那么水位本质上反映的是湖水的体积,我们可以看到。附件当中所提供的弧的截面图,我们可以把它抽象成一个圆锥体。啊,利用圆锥体去估算这个湖的体积。当然你也可以把它看成是抛物,面对它去求体积,这样子的话呢会复杂一些,我们如果为了简单起见可以使用。

为了保证流量之间的一个平衡,我们就需要去对网络流去进行一个构建。那么解决网络最大流,事实上就可以保证网络当中每条河的流量是最大的,这恰恰满足了氢能发电这样一个主体的需求。

 

  1. import pandas as pd
  2. import numpy as np
  3. data=pd.read_excel("Problem_D_Great_Lakes.xlsx")
  4. a=np.array(data)[6:,1:]
  5. lakes=['Lake Superior','Lake Michigan and Lake Huron','Lake St. Clair','Lake Erie','Lake Ontario']
  6. lakedata={}
  7. for name in lakes:
  8. data=pd.read_excel("Problem_D_Great_Lakes.xlsx",sheet_name=name)
  9. a=np.array(data)[6:,1:]
  10. lakedata[name]=a.flatten()
  11. lakedata=pd.DataFrame(lakedata)
  12. lakedata.index=pd.date_range(end='20230101',periods=276,freq='1M')
  13. lakedata.to_excel("湖水水位数据.xlsx")
  14. rivers=["St. Mary's River","St. Clair River","Detroit River","Niagara River","Ottawa River","St. Lawrence River"]
  15. riverdata={}
  16. for name in rivers:
  17. data=pd.read_excel("Problem_D_Great_Lakes.xlsx",sheet_name=name)
  18. a=np.array(data)[6:,1:]
  19. riverdata[name]=a.flatten()
  20. riverdata=pd.DataFrame(riverdata)
  21. riverdata.index=pd.date_range(end='20230101',periods=276,freq='1M')
  22. riverdata.to_excel("河水流量数据.xlsx")
  23. import networkx as nx
  24. import matplotlib.pyplot as plt
  25. graph=nx.Graph()
  26. graph.add_nodes_from([0,1,2,3,4,5,6])
  27. graph.add_weighted_edges_from([(0,1,1473),(1,2,4714),(2,3,5170),(3,4,6690),(4,5,1924),(4,6,6541)])
  28. nx.draw(graph,with_labels=True)
  29. plt.show()
  30. data=pd.read_excel("整合数据.xlsx")
  31. data=data.replace('---',pd.NA)
  32. data.dropna()

问题二:

针对该问题,开发算法时,考虑湖泊的自然补给(如降雨和雪融水)和人为排放(如水库排放)。算法需要能够动态调整,以响应气候变化和人为干预的不确定性。同时,考虑数据的实时更新,确保算法能够及时反映最新的水文情况。

问题二当中需要维持不同的河流以及不同湖泊的水位,那么本质上是在第一问的基础上做了一个扩展,需要针对不同的时间序列,在每一个时间出去求解一次优化问题。使得水位能够维持住的限制条件就包括相邻两个湖泊存在高度差,流量不得超过高度之差,这一部分的体积限制。这是一个比较基础的扩展,事实上,只要把问题一能够解答出来,问题二也是可以迎刃而解的。

最后答案如图所示:

  1. import pandas as pd
  2. import numpy as np
  3. data=pd.read_excel("Problem_D_Great_Lakes.xlsx")
  4. a=np.array(data)[6:,1:]
  5. lakes=['Lake Superior','Lake Michigan and Lake Huron','Lake St. Clair','Lake Erie','Lake Ontario']
  6. lakedata={}
  7. for name in lakes:
  8. data=pd.read_excel("Problem_D_Great_Lakes.xlsx",sheet_name=name)
  9. a=np.array(data)[6:,1:]
  10. lakedata[name]=a.flatten()
  11. lakedata=pd.DataFrame(lakedata)
  12. lakedata.index=pd.date_range(end='20230101',periods=276,freq='1M')
  13. lakedata.to_excel("湖水水位数据.xlsx")
  14. rivers=["St. Mary's River","St. Clair River","Detroit River","Niagara River","Ottawa River","St. Lawrence River"]
  15. riverdata={}
  16. for name in rivers:
  17. data=pd.read_excel("Problem_D_Great_Lakes.xlsx",sheet_name=name)
  18. a=np.array(data)[6:,1:]
  19. riverdata[name]=a.flatten()
  20. from scipy.optimize import minimize
  21. cons=({'type':'ineq','fun':lambda x:x[0]+x[5]},
  22. {'type':'ineq','fun':lambda x:x[1]-x[5]+x[6]},
  23. {'type':'ineq','fun':lambda x:x[2]-x[6]+x[7]},
  24. {'type':'ineq','fun':lambda x:x[3]-x[7]+x[8]},
  25. {'type':'ineq','fun':lambda x:x[4]-x[8]+x[9]+x[10]})
  26. def L(x):
  27. return sum(x[6:])+x[0]*4/(np.pi*244*244)
  28. a=np.array([1521.74,4785.54,5400.02,6570,1881,7560.59,183.09,176.04,175.08,174.40,74.62])-1
  29. b=np.array([1473.32,4714.75,5170.65,6690,1924,6541.19,183.01,175.99,175.02,174.39,74.80])+1
  30. bound=[(min(a[i],b[i]), max(a[i],b[i])) for i in range(len(a))]
  31. res=minimize(L,x0=a,bounds=bound,constraints=cons,method='SLSQP')
  32. data=data.dropna()
  33. data=data.drop(['Unnamed: 0'],axis=1)
  34. data=data.reset_index(drop=True)
  35. data
  36. result=[]

 问题三:

针对该问题,通过历史数据(如2017年的数据)进行模拟测试,评估新算法在不同水文条件下的表现。比较新算法预测的水位与实际记录的差异,分析算法在极端气候事件(如干旱或洪水)中的表现。

问题三,需要探讨针对2017年的数据去进行灵敏性分析,并且探究通过你所给出的优化模型,它与实际数据哪个更好,你这个时候需要不遗余力的去说明你的数据会比问题3的数据要更好,比实际情况更好,

  1. ## 第三问论证好处,评价类模型
  2. def AHP(A):
  3. m=len(A) #获取指标个数
  4. n=len(A[0])
  5. RI=[0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49, 1.51]
  6. R= np.linalg.matrix_rank(A) #求判断矩阵的秩
  7. V,D=np.linalg.eig(A) #求判断矩阵的特征值和特征向量,V特征值,D特征向量;
  8. list1 = list(V)
  9. B= np.max(list1) #最大特征值
  10. index = list1.index(B)
  11. C = D[:, index] #对应特征向量
  12. CI=(B-n)/(n-1) #计算一致性检验指标CI
  13. CR=CI/RI[n]
  14. if CR<0.10:
  15. print("CI=", CI.real)
  16. print("CR=", CR.real)
  17. print('对比矩阵A通过一致性检验,各向量权重向量Q为:')
  18. sum=np.sum(C)
  19. Q=C/sum #特征向量标准化
  20. print(Q.real) # 输出权重向量
  21. return Q.real
  22. else:

 问题四:

针对该问题,研究算法对环境变化的响应能力,特别是在极端天气条件下,如持续降雨、极端低温导致的冰堵。考虑这些因素如何影响水位和流量,以及算法是否能够有效预测和调节这些变化。
首先对于降雨湖泊,从降雨当中可以得到水量补充,这一水量补充与湖泊的表面积有关。湖水的面积乘以雨水的密度,事实上就等于它所获得的降水量补充在第一问的模型里面,我们除了流进流出的一个损失以外,还需要去加上天空降雨给他进行的水量补充,重新去修正我们的优化类模型。
对于冬季结冰湖泊的流量会减小,那么水流量减小的状况之下,我们可以在原有基础之上去成一个比例系数。也就是在结冰以后,水的流通性会怎么变?这一个比例系数我们可以分别探究当系数为0.1、 0.05、 0.01是他们的变化趋势。

  1. ## 第三问论证好处,评价类模型
  2. def AHP(A):
  3. m=len(A) #获取指标个数
  4. n=len(A[0])
  5. RI=[0, 0, 0.58, 0.90, 1.12, 1.24, 1.32, 1.41, 1.45, 1.49, 1.51]
  6. R= np.linalg.matrix_rank(A) #求判断矩阵的秩
  7. V,D=np.linalg.eig(A) #求判断矩阵的特征值和特征向量,V特征值,D特征向量;
  8. list1 = list(V)
  9. B= np.max(list1) #最大特征值
  10. index = list1.index(B)
  11. C = D[:, index] #对应特征向量
  12. CI=(B-n)/(n-1) #计算一致性检验指标CI
  13. CR=CI/RI[n]
  14. if CR<0.10:
  15. print("CI=", CI.real)
  16. print("CR=", CR.real)
  17. print('对比矩阵A通过一致性检验,各向量权重向量Q为:')
  18. sum=np.sum(C)
  19. Q=C/sum #特征向量标准化
  20. print(Q.real) # 输出权重向量
  21. return Q.real
  22. else:
  23. print("对比矩阵A未通过一致性检验,需对对比矩阵A重新构造")
  24. return 0

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/102312
推荐阅读
相关标签
  

闽ICP备14008679号