2026电工杯b题第二问完整可执行代码+高清可视化结果图
问题2:服务站选址与规模优化1预测的第5年末每个小区老人数量与消费约束的服务需求量,考虑服务站选址与规模优化问题,相关要求说明如下::小型\((服务≤1000人次/日)\))、中型\((服务≤2000人次/日)\)、大型\((服务≤3000人次/日)\),对应建设成本与运营成本见附件3;:10个小区中的任意若干个(仅限小区内部,小区间距离见附件4);:\(有效服务半径≤1000米\);超出距离不产生有效服务需求。:至少享受一项养老服务的老年人数占老年总人口的比例:根据附件5的评分规则(距离服务响应价格)计算,取值范围0.6~1:等于理论需求人次×服务满意度假设总建设预算不超过120万元,服务站建设需满足上述要求,建立优化模型,确定区域内需建设服务站数量位置规模,使得服务覆盖率和服务满意度尽可能高设计求解算法,说明算法的主要步骤,并分析算法的时间复杂度给出最优的站点数量位置(哪个小区)规模(大/中/小)及每个站点覆盖的小区,计算此时每个服务站预计年度利润服务覆盖率和每个小区老人满意度,指出至少3点模型的局限性,并提出至少一种改进方向求解思路步骤1、数据准备。读取问题1输出的第5年末各小区老人数量、老年总人口、考虑消费约束后的各小区各服务项目需求量和。读取附件3中服务站规模集合小型建设成本万元、日均固定管理成本元/日、日最大服务人次中型建设成本万元、日均固定管理成本元/日、日最大服务人次大型建设成本万元、日均固定管理成本元/日、日最大服务人次。设置建设投资按年等额折旧、无残值总建设预算万元。读取附件4中10个小区之间距离矩阵。读取附件5满意度评分公式及分段规则。保留附件2服务价格与支出数据用于年度利润计算。这里仅展示部分内容通过网盘分享的文件电工杯赛前资料链接: https://pan.baidu.com/s/1RzAGtPGv_KrLWQpRwZrDlA 提取码: 6666--来自百度网盘超级会员v6的分享total_zilhi_0 df_base[自理老人].sum() total_ban_0 df_base[半失能老人].sum() total_shi_0 df_base[失能老人].sum() total_old_0 total_zilhi_0 total_ban_0 total_shi_0 ratio_new {0: total_zilhi_0 / total_old_0, 1: total_ban_0 / total_old_0, 2: total_shi_0 / total_old_0} N_results {c: {} for c in communities} for idx, row in df_base.iterrows(): c row[小区编号] N0 np.array([row[自理老人], row[半失能老人], row[失能老人]], dtypefloat) N_results[c][0] N0.copy() for t in range(5): Nt N_results[c][t] total_t Nt.sum() new_total g_rate * total_t A0 new_total * ratio_new[0] A1 new_total * ratio_new[1] A2 new_total * ratio_new[2] N_next_0 (1 - d_rate) * (1 - p01) * Nt[0] A0 N_next_1 (1 - d_rate) * (p01 * Nt[0] (1 - p12) * Nt[1]) A1 N_next_2 (1 - d_rate) * (p12 * Nt[1] Nt[2]) A2 N_results[c][t 1] np.array([N_next_0, N_next_1, N_next_2]) # 第5年末各小区各类老人数量 N5 {} for c in communities: N5[c] N_results[c][5] # 消费约束削减系数 lambda_results {} for idx, row in df_base.iterrows(): c row[小区编号] income row[人均月收入] for k in range(3): E_theory sum(demand_per_person[m][k] * service_price[m] for m in services) U_k beta[k] * income lam min(1.0, U_k / E_theory) if E_theory 0 else 1.0 lambda_results[(c, k)] lam # 第5年末各小区各服务有效月需求次数汇总三类老人 Q_eff {} # Q_eff[(c, m)] 该小区该服务月有效需求总次数 for c in communities: vals5 N5[c] for m in services: total_q 0 for k in range(3): Nk round(vals5[k]) lam lambda_results[(c, k)] adjusted_r round(lam * demand_per_person[m][k]) total_q Nk * adjusted_r # 应用需求缩放因子以测试更低需求下的可行性 Q_eff[(c, m)] int(round(total_q * demand_scale)) # 各小区老年总人口第5年末 N5_total {} for c in communities: N5_total[c] round(N5[c].sum()) # 各小区月总有效需求次数 Q_eff_total {} for c in communities: Q_eff_total[c] sum(Q_eff[(c, m)] for m in services)