2025年美赛B题加急版论文首发+B题补充数据集

图片

图片

图片

图片

图片

图片

图片

import numpy as np
import matplotlib.pyplot as plt

from pymoo.core.problem import ElementwiseProblem
from pymoo.algorithms.moo.nsga2 import NSGA2
from pymoo.termination import get_termination
from pymoo.optimize import minimize

def multiobj_sustainable_tourism():
    """
    多目标优化示例:可持续旅游 (Python + pymoo)
    对标 MATLAB gamultiobj 示例。
    """

    # 1. 定义基准值 (以 2021 年为例)
    RP_baseline = 31973.0       # 居住人口
    MI_baseline = 45148.0       # 个人收入中位数
    TR_baseline = 1271412500.0  # 收入总值

    lb = np.array([0.9*RP_baseline, 0.9*MI_baseline, 0.9*TR_baseline])
    ub = np.array([1.1*RP_baseline, 1.1*MI_baseline, 1.1*TR_baseline])

    # 2. 定义多目标问题 (继承自 ElementwiseProblem)
    class TourismProblem(ElementwiseProblem):
        def __init__(self):
            super().__init__(
                n_var=3,           # 决策变量维度
                n_obj=2,           # 目标函数个数
                n_ieq_constr=0,    # 不等式约束个数
                n_eq_constr=1,     # 等式约束个数
                xl=lb,             # 决策变量下界
                xu=ub,             # 决策变量上界
                type_var=np.float64
            )
            # 一些基准值放这里,便于在 _evaluate 中调用
            self.TR_baseline = TR_baseline
            self.baselineEnv = 100.0
            self.alpha = 1e-9

        def _evaluate(self, x, out, *args, **kwargs):
            """
            x: [RP, MI, TR]
            目标1: f1 = 0.006816 * TR - 9.3361e+06 (相当于 -TCT, 需要最小化)
            目标2: f2 = 100 + 1e-9*(TR - TR_baseline) (环境影响)
            约束:  TR - [5.8475e+08 - 6131.7*RP + 19581*MI] = 0
            """
            RP, MI, TR = x[0], x[1], x[2]

            # ---- 目标函数 ----
            f1 = 0.006816 * TR - 9.3361e+06
            f2 = self.baselineEnv + self.alpha*(TR - self.TR_baseline)

            # ---- 等式约束 (h = 0) ----
            #   TR - (5.8475e+08 - 6131.7*RP + 19581*MI) = 0
            model2_val = 5.8475e+08 - 6131.7*RP + 19581.0*MI
            h = TR - model2_val

            # 给 pymoo 输出
            out["F"] = [f1, f2]    # 两个目标
            out["H"] = [h]         # 1 个等式约束

    # 初始化问题
    problem = TourismProblem()

    # 3. 设置算法参数,相当于 gamultiobj 的选项
    algorithm = NSGA2(
        pop_size=100,          # 种群规模
        # 可根据需要增加其他参数设置
    )

    # 4. 设置终止准则 (最大迭代代数)
    termination = get_termination("n_gen", 100)

    # 5. 开始优化
    res = minimize(
        problem,
        algorithm,
        termination,
        seed=1,
        save_history=True,
        verbose=True     # 在控制台输出迭代信息
    )

    # 6. 结果分析
    X = res.X   # 帕累托前沿上的决策变量集合 (可能有多行)
    F = res.F   # 对应的目标函数值 [f1, f2]

    print("=== 帕累托解 (局部查看) ===")
    for i in range(len(X)):
        RP_sol, MI_sol, TR_sol = X[i]
        f1_val, f2_val = F[i]
        print(f"Solution {i+1}:  RP={RP_sol:.2f}, MI={MI_sol:.2f}, TR={TR_sol:.2f}, "
              f"Obj1={f1_val:.2f}, Obj2={f2_val:.6f}")

    print(f"\nExit message: {res.algorithm.verbose}")

    # 7. 绘制帕累托前沿
    # f1 在横轴,f2 在纵轴
    plt.figure(figsize=(6,5))
    plt.scatter(F[:, 0], F[:, 1], c='red', marker='o')
    plt.xlabel('f1 = 0.006816*TR - 9.3361e+06  (minimize)')
    plt.ylabel('f2 = EnvImpact             (minimize)')
    plt.title('Pareto Front (NSGA2 Result)')
    plt.grid(True)
    plt.show()


# 入口
if __name__ == "__main__":
    multiobj_sustainable_tourism()
对于寻找2025国大学生数学建模(US MCM)B的相关数据,通常这类比的具体目会在比开始时公布。因此,在比之前可能无法获取确切的问描述以及直接关联的数据集。 然而,可以提供一些一般性的建议来帮助准备此类竞: 查找类似主的历史数据 过去MCM B往往涉及连续型问,比如物理现象、工程设计等。参者可以通过回顾往找到相似的主,并收集那些领域的公开可用数据源。例如,如果往涉及到环境科学领域,则可以从政府机构网站如NOAA或者NASA下载气候和地球观测数据。 利用学术资源 大学图书馆订阅的专业数据库,像是IEEE Xplore, ScienceDirect等,能为特定研究课提供详尽文献和支持材料;同时Google Scholar也是免费访问大量科研论文的好地方。 探索开源项目与社区贡献 GitHub和其他代码托管平台上有很多开发者分享的案例学习和实际应用场景实现,这些都可能是潜在的数据来源或者是处理复杂模型的方法论参考。 加入在线讨论论坛 Reddit上的r/datascience或Stack Exchange旗下的Cross Validated板块聚集了许多专业人士和技术爱好者交流经验心得,提问有关所需数据的信息可能会得到积极回应。 联系专家或行业人士 通过LinkedIn或其他社交平台尝试接触在目标领域工作的个人,他们或许能够指引向内部报告、专有统计或是其他不易被大众发现但对解决问至关重要的情报。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值