2021美赛C题经验分享
本科期间对数学建模一直挺感兴趣,自认为在建模方面表现不错,拿过国一、美一也算圆满。
虽然2021年美赛没有亲自参赛,btw作一名热心的学长(??)在家蹲的同时也不忘关注着这场烧脑大战。
美赛已经过半了,目前写了C题和F题,感觉还行吧…
这里也想给学弟学妹们分享下思路啥的,如果感兴趣也可私聊我,白嫖党绕道~
C题思路
问题一是讨论并讨论这种有害生物在一段时间内的传播是否可以预测以及其精确度如何?
我认为关键点是要设计大黄蜂的传播模型以及模型的精确度。
构建一个元胞自动机模型,题目中提到大黄蜂一年内能够在30公里范围内筑巢,所以我们可以设定元胞自动机的迭代速度为一年30公里,所以我们可以构建10*10的地图,每一单位为30公里,以任意三个黄蜂巢(美国华盛顿州农业数据官网得知三个,原本为4个,一个已经交配了,默认死亡)为中心,在规定时间内能够传播的范围作为黄蜂传播的预测(注意在元胞自动机中设定某一个有黄蜂的元胞附近八个位置新的黄蜂元胞的产生概率以及产生了新的元胞后,初始黄蜂元胞会因为交配后死亡)
贴一段自己搞的代码
mport numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import random
bee_num=0
class CA(object):
def __init__(self, cells_shape):
"""
Parameters
----------
cells_shape : 一个元组,表示地图的大小。
"""
# 矩阵的四周不参与运算
self.cells = np.zeros(cells_shape)
real_width = cells_shape[0] - 2
real_height = cells_shape[1] - 2
self.cells[random.randint(12,38),random.randint(12,38)]=1
self.cells[random.randint(12, 38), random.randint(2, 38)] = 1
self.cells[random.randint(12, 38), random.randint(2, 38)] = 1
self.cells[random.randint(12, 38), random.randint(2, 38)] = 1
#self.cells[1:-1, 1:-1] = np.random.randint(2, size=(real_width, real_height))
self.timer = 0
self.bee_count=0
self.list=[]
def update_state(self):
图像处理后面更