2024年数维杯国际大学生数学建模挑战赛D题城市弹性与可持续发展能力评价解题全过程论文及程序

news2025/7/23 18:44:38

2024年数维杯国际大学生数学建模挑战赛

D题 城市弹性与可持续发展能力评价

原题再现:

  中国人口老龄化趋势的加剧和2022年首次出现人口负增长,表明未来一段较长时期内我国人口将呈现下降趋势。这一趋势必将影响许多城市的高质量和可持续发展,特别是二级和三级城市,这些城市的影响可能是多方面的。与此同时,极端全球气候事件的日益频繁和当前的经济衰退将对城市发展的恢复力提出前所未有的挑战。
  通过结合网络爬虫和实地调查,我们从58.com获得了城市1和城市2特定日期待售房产的基本信息,如附录1和2所示。此外,附录3和4提供了城市1和城市2特定年份的一些基本服务的POI数据。请使用这些数据对以下四个问题进行具体的优化和建模。
  问题(1):考虑到上述数据和可以在互联网上收集的数据,如人口和GDP,您能否对城市1和城市2的不同地区的未来房价进行具体预测,并对这两个城市的现有住房总量进行具体估计?
  问题(2):请定量分析城市1和城市2不同部门的服务水平,并提取这两个城市的共同和独特特征,以及各自的优势和劣势。
  问题(3):使用附录3和4中的数据,评估两个城市应对极端天气和紧急情况的弹性,并定量评估城市的可持续发展能力。考虑到有限的财政资源的限制,您的模型应明确确定两个城市的具体弱点、未来需要发展的关键领域以及城市的短期和长期投资计划。
  问题(4):根据上述分析,起草两个城市的未来发展计划,不超过两页。该计划应明确概述主要投资领域、投资金额和城市智能城市发展水平的预期改进。

整体求解过程概述(摘要)

  我国人口老龄化日益严重,未来人口将处于长期下降的趋势。这将对二、三线城市的可持续发展产生深远影响,并对城市弹性提出严重挑战。基于所附数据,建立了城市韧性和可持续发展能力评价的数学模型。
  对于问题1,首先对原始数据进行缺失值和离群值处理,然后使用三个回归模型(线性回归、随机森林和梯度提升)来训练数据,以学习特征与目标之间的关系,从而预测房价。结果表明,随机森林模型和梯度提升模型具有较好的预测效果。因此,城市1的住房存量估计为1459933.97,城市2的住房存量估算为834249.01。
  对于问题2,首先清理和转换附件中的数据,然后采用K均值聚类方法分析City1和City2中各种设施的地理分布和聚类特征,并将结果可视化。聚类结果揭示了它们的共同和独特特征,并分析了它们的优缺点。研究结果表明,与城市2相比,城市1的地理名称和地址信息、汽车服务、医疗保健服务、零售服务、摩托车设施和科学教育等设施的数量和密度明显更高。
  针对问题3,根据服务指数数据,建立了多指标加权城市弹性评价模型。结果表明,City1的整体韧性得分更好,为0.74,而City2的得分为0.67。分析表明,城市1在应急管理资源配置和政府机构覆盖率方面表现突出,但其弱点在于社会支持体系的多样性和基层组织的动员能力。建议加强社区应急设施建设。第二城基层应急资源的分布和可获得性有限,弱点在于社会群体参与度低。建议加强应急保障能力。
  针对问题4,在前三个问题的分析和结果的基础上,在综合分析研究城市1和城市2优劣势的基础上。加大对城市现有优势的投资,进一步巩固和扩大其在智慧城市建设中的领先地位;针对不足,致力于通过精准的资本投入,优化自身不足,促进智慧城市发展水平的全面提升。

模型假设:

  1.数据完整性和准确性:假设使用的数据准确、完整,并代表研究区域的实际情况。
  2.经济发展趋势的一致性:假设该市的经济发展遵循当前趋势,短期内不会出现重大波动或不可预见的政策变化。

问题分析:

  问题一的分析
  对于问题1,目标是根据提供的房地产销售信息和可以获得的其他相关数据(如人口和GDP数据),预测城市1和城市2的未来房价和现有住房存量。结合58.com网站的物业销售数据、基础服务POI数据和相关经济指标,提出了具体的优化方案和建模方法。通过对不同地区房价的趋势分析,并评估人口和GDP等因素的影响,目的是对这两个城市未来的住房市场动态进行全面预测。
  问题二的分析
  对于问题2,该任务要求我们定量分析两个城市的服务,提取共同和独特的特征,并确定各自的优势和劣势。首先,我们将清理和标准化附件中提供的数据。然后,我们将应用K-均值聚类方法来分析这些设施的分布、聚集、数量、覆盖和服务类型比例。通过使用可视化技术和表格数据,我们旨在比较这两个城市。
  问题三的分析
  关于问题3,目标是评估这两个城市在极端天气和紧急情况下的复原力和可持续性。通过分析提供的15个服务指标的数据,初步确定了各指标之间的相关性,以确定对衡量城市韧性和可持续性至关重要的指标。该分析将为城市韧性的进一步评估模型提供理论支持和数据基础。
  问题四的分析
  本部分基于问题1至问题3的分析结论,针对长春和呼和浩特的具体优势和劣势,确定主要投资方向和资本配置,并预测这些投资带来的智慧城市发展水平的提高。在保持城市现有优势的基础上,重点优化和完善短板区域,实现两市在智慧城市建设中的全面进步。以下内容系统梳理和分析了主要投资领域、预算分配和发展预期。

模型的建立与求解整体论文缩略图

在这里插入图片描述
在这里插入图片描述

全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

部分程序代码:

import pandas as pd 
import matplotlib.pyplot as plt 
import folium 
from geopy.distance import geodesic 
import seaborn as sns 
import matplotlib as mpl 
mpl.rcParams['font.family'] = 'SimHei'  
mpl.rcParams['axes.unicode_minus'] = False 
file_path_1 = r"Appendix 1.xlsx" 
file_path_2 = r"Appendix 2.xlsx" 
city1_files = { culture data.csv" } 
city2_files = { data.csv" }
def load_house_data(file_path): 
    data = pd.read_excel(file_path, sheet_name='Sheet1') 
    return data 
 
house_data_1 = load_house_data(file_path_1) 
house_data_2 = load_house_data(file_path_2) 
 
# 处理缺失值和异常值 
def process_missing_and_outliers(data, column_name): 
    print(f"处理前{column_name}缺失值数量:", 
data[column_name].isnull().sum()) 
    data[column_name] = 
data[column_name].fillna(data[column_name].mean())  # 填充缺失值 
    Q1, Q3 = data[column_name].quantile([0.25, 0.75])  # 四分位数 
    IQR = Q3 - Q1  # 四分位距 
    lower_bound, upper_bound = Q1 - 1.5 * IQR, Q3 + 1.5 * IQR 
    data[column_name] = data[column_name].apply(lambda x: max(min(x, 
upper_bound), lower_bound)) 
    print(f"处理后{column_name}缺失值数量:", 
data[column_name].isnull().sum()) 
    return data 
 
house_data_1 = process_missing_and_outliers(house_data_1, 'Price (USD)') 
house_data_2 = process_missing_and_outliers(house_data_2, 'Price (USD)') 
 
# 数据分布分析 
def plot_distribution(data, column_name, title): 
    plt.figure(figsize=(10, 6)) 
    plt.hist(data[column_name], bins=30, color='#3E92CC', 
edgecolor='black', alpha=0.7) 
    plt.title(f"{title}: {column_name}") 
    plt.xlabel(column_name) 
    plt.ylabel('Frequency') 
    plt.grid(axis='y', linestyle='--', alpha=0.7) 
    plt.show() 
 
plot_distribution(house_data_1, 'Price (USD)', 'city1-Price') 
plot_distribution(house_data_2, 'Price (USD)', 'city2-Price') 
 
# 绘制箱型图 
def plot_boxplot(data1, data2, column_name, city1_name, city2_name, 
title):

plt.figure(figsize=(10, 6)) 
 
    # 合并数据用于绘制 
    combined_data = [data1[column_name], data2[column_name]] 
 
    # 绘制箱型图 
    plt.boxplot(combined_data, 
                patch_artist=True, 
                boxprops=dict(facecolor='#3E92CC', color='black', 
alpha=0.7), 
                medianprops=dict(color='red', linewidth=1.5), 
                whiskerprops=dict(color='black', linewidth=1), 
                capprops=dict(color='black', linewidth=1)) 
 
    # 设置x轴和标题 
    plt.xticks([1, 2], [city1_name, city2_name], fontsize=12) 
    plt.title(title, fontsize=16) 
    plt.ylabel(column_name, fontsize=12) 
    plt.grid(axis='y', linestyle='--', alpha=0.7) 
    plt.tight_layout() 
    plt.show() 
 
 
# 绘制城市1和城市2的房价箱型图 
plot_boxplot(house_data_1, house_data_2, 'Price (USD)', 'City 1', 'City 
2', 'Comparison of Price (USD) Between City 1 and City 2') 
 
# 加载设施数据 
def load_facilities(file_dict): 
    datasets = {} 
    for key, path in file_dict.items(): 
        try: 
            data = pd.read_csv(path) 
            if 'lon_gcj02' in data.columns and 'lat_gcj02' in 
data.columns: 
                data['lon_gcj02'] = pd.to_numeric(data['lon_gcj02'], 
errors='coerce')
 data['lat_gcj02'] = pd.to_numeric(data['lat_gcj02'], 
errors='coerce') 
                datasets[key] = data.dropna(subset=['lon_gcj02', 
'lat_gcj02']) 
            else: 
                print(f"{key} 跳过。") 
        except Exception as e: 
            print(f"加载 {key} {e}") 
    return datasets 
 
city1_data = load_facilities(city1_files) 
city2_data = load_facilities(city2_files) 
 
# 计算房产到设施的最近距离 
def calculate_nearest_distance(house_data, facility_data, house_lat_col, 
house_lon_col): 
    distances = [] 
    for _, house in house_data.iterrows(): 
        house_location = (house[house_lat_col], house[house_lon_col]) 
        min_distance = facility_data.apply( 
            lambda row: geodesic(house_location, (row['lat_gcj02'], 
row['lon_gcj02'])).km, axis=1 
        ).min() 
        distances.append(min_distance) 
    return distances 
 
# 为房产添加设施距离特征 
def add_facility_distance_features(house_data, facilities, 
house_lat_col, house_lon_col): 
    for facility_type, facility_data in facilities.items(): 
        print(f"计算房产到最近 {facility_type} 的距离...") 
        house_data[f'nearest_{facility_type}_distance'] = 
calculate_nearest_distance( 
            house_data, facility_data, house_lat_col, house_lon_col 
        ) 
 
add_facility_distance_features(house_data_1, city1_data, 'lat', 'lon') 
add_facility_distance_features(house_data_2, city2_data, 'lat', 'lon') 
 
# 综合相关性分析(城市1和城市2在同一张图中) 
def analyze_feature_correlation_combined(data1, data2, target_col, 
city1_name, city2_name): 
# 选择数值型列 
    numeric_cols1 = data1.select_dtypes(include=['float64', 
'int64']).columns 
    numeric_cols2 = data2.select_dtypes(include=['float64', 
'int64']).columns 
 
    # 计算相关性 
    correlation1 = 
data1[numeric_cols1].corr()[target_col].sort_values(ascending=False)[1:] 
    correlation2 = 
data2[numeric_cols2].corr()[target_col].sort_values(ascending=False)[1:] 
 
    # 合并列索引 
    combined_index = list(set(correlation1.index) | 
set(correlation2.index)) 
    correlation1 = correlation1.reindex(combined_index, fill_value=0) 
    correlation2 = correlation2.reindex(combined_index, fill_value=0) 
 
    # 绘制相关性柱状图 
    x = range(len(combined_index)) 
    plt.figure(figsize=(15, 8)) 
 
    # 城市1的柱状图 
    plt.bar(x, correlation1, width=0.4, label=city1_name, 
color='#3E92CC', edgecolor='black', alpha=0.7, align='center') 
 
    # 城市2的柱状图 
    plt.bar([i + 0.4 for i in x], correlation2, width=0.4, 
label=city2_name, color='#F95D6A', edgecolor='black', 
            alpha=0.7, align='center') 
 
    # 图表美化 
    plt.title(f"Correlation of Features with {target_col}", fontsize=16) 
    plt.ylabel("Correlation Coefficient", fontsize=12) 
    plt.xlabel("Feature Names", fontsize=12) 
    plt.axhline(0, color='black', linewidth=0.8)  # 添加水平线 
    plt.xticks([i + 0.2 for i in x], combined_index, rotation=45, 
ha='right', fontsize=10)  # 调整x轴刻度和标签 
    plt.legend(fontsize=12) 
    plt.grid(axis='y', linestyle='--', alpha=0.7)  # 添加网格线,样式统一 
    plt.tight_layout()  # 调整布局防止溢出 
    plt.show() 
    
全部论文及程序请见下方“ 只会建模 QQ名片” 点击QQ名片即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2400985.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT聊天项目DAY13

1. 重置密码 重置密码label也要实现浮动和点击效果,所以将忘记密码这个标签提升为ClickedLabel 1.1 ClickedLabel的复用 由于样式表(.qss) 文件中可以写入多个控件的状态UI,所以为了ClickedLabel能够复用,将成员变量的初始化方式修改为函数…

Web3如何重塑数据隐私的未来

在这个信息爆炸的时代,数据隐私已成为我们不得不面对的严峻问题。Web3,作为下一代互联网的代表,以其去中心化、用户主权和数据安全等特点,正在重塑数据隐私的未来。它不仅仅是技术的革新,更是对个人隐私保护理念的一次…

【鸿蒙】HarmonyOS NEXT之如何正常加载地图组件

1、不支持模拟器,需要真机! 2、Map地图需要在AGC上申请权限,需要在AGC上创建对应的项目 地址: AppGallery Connect 2.1 AGC中项目创建 2.1.1 添加项目 2.1.2 起个名字 2.1.3 添加应用: 2.1.4 选择HarmonyOS APP&…

前端框架进化史

本内容是对 You’ll Never Manually Update the DOM Again // Here’s Why 内容的翻译与整理。 你再也不需要手工更新DOM, 以下是原因 现代 JavaScript 框架,如 React、Vue、Svelte、Solid、Quick,以及本周推出的其他 786 个框架,都试图做一些…

(二)stm32使用4g模块(移远ec800k)连接mqtt

下面代码是随手写的,没有严谨测试仅供参考测试 uint8_t msgBuf[200]{"msg from mcu"}; uint8_t txBuf[250]{0}; uint16_t msgid0; uint16_t mqttTaskState0; uint16_t t100msCount0; uint8_t sendFlag10; uint8_t sendFlag20; void t100msTask1(void) { …

防火墙iptables项目实战

目录 一、网络规划 三、环境准备与检测 1、firewall (1)配置防火墙各大网卡ip并禁用firewalld和selinux (2)打开firewall路由转发 2、PC1(内网) (1)配置ip并禁用firewalld和s…

webpack继续学习

认识PostCSS工具 PostCSS是一个通过JS来转换样式的工具,这个工具可以帮助我们进行一些CSS的转换和适配,比如自动添加浏览器前缀,css样式的重置 实现这些功能需要借助于PostCSS对应的插件 自动添加浏览器前缀需要: npm install…

Scrapy爬虫框架Spiders爬虫脚本使用技巧

我们都知道Scrapy是一个用于爬取网站数据、提取结构化数据的Python框架。在Scrapy中,Spiders是用户自定义的类,用于定义如何爬取某个(或某些)网站,包括如何执行爬取(即跟踪链接)以及如何从页面中…

PowerBI企业运营分析—全动态盈亏平衡分析

PowerBI企业运营分析—全动态盈亏平衡分析 欢迎来到Powerbi小课堂,在竞争激烈的市场环境中,企业运营分析平台成为提升竞争力的核心工具。 该平台通过整合多源数据,实现关键指标的实时监控,从而迅速洞察业务动态,精准…

docker的基本命令

容器的三大组成 镜像image 一个静态文件,特点:分层结构,不可更改 容器container 镜像运行的结果,容器可以修改,运行完后直接停止 仓库registry 用来存放镜像文件的地方 容器的常用命令介绍 关于镜像的命令 docker …

【运维实战】Rsync将一台主Web服务器上的文件和目录同步到另一台备份服务器!

在管理 Web 服务器时,确保数据安全且在发生故障时能够快速恢复至关重要,备份和镜像 Web 服务器数据最可靠的方法之一是使用 rsync。 Rsync 工具可以帮助在两台服务器之间同步文件和目录,非常适合用于创建 Web 服务器数据的备份和镜像。 下面…

AgenticSeek 本地部署教程(Windows 系统)

#工作记录 Fosowl/agenticSeek:完全本地的 Manus AI。 部署排错参考资料在文末 或查找往期笔记。 AgenticSeek 本地部署教程(Windows 系统) 一、环境准备 1. 安装必备工具 Docker Desktop 下载地址:Docker Desktop 官网 安装后启…

基于 qiankun + vite + vue3 构建微前端应用实践

核心内容摘要​​ ​​技术栈组合​​ 采用 Vite Vue3 Qiankun 构建微前端架构主应用和子应用独立开发部署,通过 Qiankun 集成 ​​2. 主应用关键配置​​通过 registerMicroApps 注册子应用,配置路由匹配规则(activeRule)使用…

机器学习:逻辑回归与混淆矩阵

本文目录: 一、逻辑回归Logistic Regression二、混淆矩阵(一)精确率precision(二)召回率recall(三)F1-score:了解评估方向的综合预测能力(四)Roc曲线&#xf…

20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示

20250602在荣品的PRO-RK3566开发板的Android13下打开HDMI显示 2025/6/2 16:20 缘起:貌似荣品的PRO-RK3566开发板的Android13默认关闭了HDMI显示。 据说:荣品确认RK3566的GPU比较弱,同时开【MIPI接口的】LCD屏显示和HDMI显示容易出现异常。 更…

AI在网络安全领域的应用现状和实践

当前,人工智能技术已深度融入网络安全产品,推动传统防御模式向智能化、自适应方向加速演进。各安全厂商通过机器学习、深度学习与知识图谱等技术的融合应用,提高安全产品在威胁检测、攻击溯源、风险评估等场景的能力跃迁,突破传统…

鸿蒙任务项设置案例实战

目录 案例效果 资源文件与初始化 string.json color.json CommonConstant 添加任务 首页组件 任务列表初始化 任务列表视图 任务编辑页 添加跳转 任务目标设置模型(formatParams) 编辑页面 详情页 任务编辑列表项 目标设置展示 引入目标…

TDengine 的 AI 应用实战——运维异常检测

作者: derekchen Demo数据集准备 我们使用公开的 NAB数据集 里亚马逊 AWS 东海岸数据中心一次 API 网关故障中,某个服务器上的 CPU 使用率数据。数据的频率为 5min,单位为占用率。由于 API 网关的故障,会导致服务器上的相关应用…

使用Plop.js高效生成模板文件

前情 开发是个创造型的职业,也是枯燥的职业,因为开发绝大多数都是每天在业务的代码中无法自拨,说到开发工作,就永远都逃不开新建文件的步骤,特别现在组件化开发胜行,每天都是在新建新建组件的道路上一去不…

Vue框架2(vue搭建方式2:利用脚手架,ElementUI)

一.引入vue第二种搭建方式 在以前的前端项目中,一个项目需要多个html文件实现页面之前的切换,如果页面中需要依赖js或者css文件,那么我们就需要在多个html文件中都需要导入vue.js文件,太过繁琐. 现在前端开发都采用单页面结果,一个项目中只有一个html文件 其他不同的内容都写…