├── Data-Story ├── Task3_上_统计分析之回归分析 │ ├── data │ │ ├── test │ │ ├── gpa1.dta │ │ ├── gpa3.dta │ │ ├── mlb1.dta │ │ ├── attend.dta │ │ ├── bwght2.dta │ │ ├── crime1.dta │ │ ├── hprice1.dta │ │ ├── smoke.dta │ │ ├── twoyear.dta │ │ ├── wage1.dta │ │ ├── 401ksubs.dta │ │ ├── P176.txt │ │ └── P130.txt │ └── images │ │ ├── 定性.png │ │ ├── 映射.png │ │ ├── ols.png │ │ ├── 同方差.png │ │ └── 横截面数据.png ├── Task5_上_数据可视化 │ ├── images │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── ._3.png │ │ └── 9.jpeg │ └── data │ │ ├── AirPassengers.csv │ │ └── element.csv ├── Task9_下_随机过程 │ └── images │ │ └── 1.png ├── Task2_上_EDA初体验 │ └── figures │ │ ├── 1_1.png │ │ └── 1_2_特征分析思路.png ├── Task4_上_统计分析之分类分析 │ ├── images │ │ ├── 映射.png │ │ └── 混淆矩阵.png │ └── data │ │ └── loanapp.dta ├── Task8_下_假设检验3_分类数据检验 │ └── images │ │ ├── 洗碗.png │ │ ├── 淘宝.png │ │ ├── 卢瑟福.png │ │ ├── 统一性.png │ │ ├── 单因素频数表.png │ │ └── 双因素列联表.png ├── Task7_下_假设检验2_多元数值向量检验 │ └── data │ │ ├── ex5.xlsx │ │ ├── ex6.xlsx │ │ ├── ex8.xlsx │ │ ├── ex9.xlsx │ │ └── homework2.xlsx ├── Task6_下_假设检验1_方法论与一元数值检验 │ ├── images │ │ ├── 总框架.png │ │ ├── 拒绝域.png │ │ └── 方差分析.png │ └── data │ │ ├── altman_910.txt │ │ └── altman_12_6.txt └── README.md ├── Dr. Strange-TimeSeriesAnalysis ├── tsa_dataset │ ├── test │ ├── air2.dta │ ├── wpi1.dta │ ├── example5.9.txt │ ├── FarmingIncome.txt │ └── AirPassengers.csv ├── README.md └── tsa_images │ ├── SAR1.png │ ├── ar.png │ ├── test.png │ ├── 季节序列.png │ ├── 平稳序列.png │ ├── 建模流程.png │ ├── 趋势序列.png │ ├── MA_ACF.png │ ├── AR1_ACF.png │ ├── arma0110.png │ ├── arma1001.png │ └── time_series.png ├── Wakanda-Optimization ├── Task3_整数规划 │ ├── cij.xlsx │ ├── fig │ │ ├── fig2.1.png │ │ ├── fig2.2.2.png │ │ ├── fig2.3.3-3.png │ │ ├── fig 2.2.3-1.png │ │ ├── fig 2.3.3-1.png │ │ └── fig 2.3.3-2.png │ ├── roilway.csv │ └── solution.txt ├── Task4_多目标规划 │ ├── cij.xlsx │ ├── fig │ │ ├── fig3.1.png │ │ └── fig3.2.png │ └── Task4_Multi Program.ipynb ├── Task5_灵敏度分析 │ ├── fig │ │ └── fig4.1.png │ └── Task5_Sensitivity.ipynb ├── Task1_线性规划(上)模型建立 │ ├── fig │ │ ├── fig1.jpg │ │ ├── fig2.jpg │ │ ├── fig2.png │ │ ├── fig3.jpg │ │ ├── fig4.png │ │ ├── fig5_可行域.png │ │ ├── fig6_凸集.png │ │ ├── fig3 - 副本.png │ │ ├── fig7_非凸集合.png │ │ ├── fig1.3.1_解的情况.png │ │ ├── fig1.3.2_解的情况.png │ │ ├── fig1_5_1.m │ │ ├── fig152.m │ │ ├── fig153.m │ │ └── fig151.m │ └── Task 1_线性规划(上)模型建立.ipynb ├── Task2_线性规划(下)模型求解 │ ├── fig │ │ ├── fig1.jpg │ │ ├── fig1_5_4.m │ │ ├── fig2.jpg │ │ ├── fig2.png │ │ ├── fig3.jpg │ │ ├── fig4.png │ │ ├── fig5_可行域.png │ │ ├── fig6_凸集.png │ │ ├── fig3 - 副本.png │ │ ├── fig7_非凸集合.png │ │ ├── fig8_凸多边形.png │ │ ├── fig9_终止准则.png │ │ ├── fig1.3.1_解的情况.png │ │ ├── fig1.3.2_解的情况.png │ │ ├── fig1_5_1.m │ │ ├── fig9_单纯形表结构.png │ │ ├── fig9_Gradient_descent.gif │ │ ├── fig153.m │ │ ├── fig1534.m │ │ ├── fig152.m │ │ ├── fig153 - 副本.m │ │ ├── fig151.m │ │ └── fig1_5_5.m │ └── Task2_线性规划(下)模型求解.ipynb ├── README.md └── Task0_前言 │ └── Preface.ipynb ├── Thanos-MachineLearning ├── 无监督学习 │ └── 聚类算法 │ │ ├── figure │ │ └── 1.png │ │ └── script │ │ └── 聚类算法.ipynb └── 监督学习 │ ├── 分类篇-单学习器分类算法 │ └── images │ │ ├── 感知机.jpg │ │ ├── 三种情况.jpg │ │ ├── 最大间隔.jpg │ │ ├── 混淆矩阵1.png │ │ └── 线性可分.jpg │ ├── 回归篇-线性回归模型 │ └── images │ │ ├── ols.png │ │ ├── 正则化.png │ │ └── metrics.png │ └── 基础篇-机器学习必知必会 │ ├── images │ ├── 二叉树.jpg │ ├── 多项式.png │ ├── 聚类.jpg │ ├── 误差.png │ ├── 分类范式.jpg │ ├── 回归范式.jpg │ └── 无监督范式.jpg │ └── 机器学习入门篇.ipynb ├── Data Analysis and Statistical Modeling ├── task_01 数据可视化 │ ├── images │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ ├── 8.png │ │ ├── ._3.png │ │ └── 9.jpeg │ └── data │ │ ├── AirPassengers.csv │ │ └── element.csv ├── task_05 分类分析 │ ├── images │ │ └── 映射.png │ └── data │ │ └── loanapp.dta ├── task_02 回归分析1_线性回归模型必知必会 │ ├── data │ │ └── gpa1.dta │ └── images │ │ ├── ols.png │ │ ├── 同方差.png │ │ └── 横截面数据.png ├── task_03 回归分析2_线性回归模型的推断与推广 │ ├── data │ │ ├── gpa1.dta │ │ ├── mlb1.dta │ │ ├── wage1.dta │ │ ├── attend.dta │ │ ├── hprice1.dta │ │ ├── twoyear.dta │ │ └── P130.txt │ └── images │ │ └── 定性.png └── task_04 回归分析3_线性回归模型的误差诊断 │ └── data │ ├── crime1.dta │ ├── gpa1.dta │ ├── gpa3.dta │ ├── smoke.dta │ ├── hprice1.dta │ └── P176.txt ├── .gitignore └── LICENSE /Data-Story/Task3_上_统计分析之回归分析/data/test: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/test: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/README.md: -------------------------------------------------------------------------------- 1 | # 📈奇异博士的时间序列 2 | -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/1.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/2.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/3.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/4.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/5.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/6.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/7.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/8.png -------------------------------------------------------------------------------- /Data-Story/Task9_下_随机过程/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task9_下_随机过程/images/1.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/._3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/._3.png -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/images/9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task5_上_数据可视化/images/9.jpeg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/cij.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/cij.xlsx -------------------------------------------------------------------------------- /Data-Story/Task2_上_EDA初体验/figures/1_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task2_上_EDA初体验/figures/1_1.png -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/gpa1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/gpa1.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/gpa3.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/gpa3.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/mlb1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/mlb1.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/images/定性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/images/定性.png -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/images/映射.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/images/映射.png -------------------------------------------------------------------------------- /Data-Story/Task4_上_统计分析之分类分析/images/映射.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task4_上_统计分析之分类分析/images/映射.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task4_多目标规划/cij.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task4_多目标规划/cij.xlsx -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/attend.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/attend.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/bwght2.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/bwght2.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/crime1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/crime1.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/hprice1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/hprice1.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/smoke.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/smoke.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/twoyear.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/twoyear.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/wage1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/wage1.dta -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/images/ols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/images/ols.png -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/images/同方差.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/images/同方差.png -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/images/横截面数据.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/images/横截面数据.png -------------------------------------------------------------------------------- /Data-Story/Task4_上_统计分析之分类分析/data/loanapp.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task4_上_统计分析之分类分析/data/loanapp.dta -------------------------------------------------------------------------------- /Data-Story/Task4_上_统计分析之分类分析/images/混淆矩阵.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task4_上_统计分析之分类分析/images/混淆矩阵.png -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/洗碗.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/洗碗.png -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/淘宝.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/淘宝.png -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/401ksubs.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task3_上_统计分析之回归分析/data/401ksubs.dta -------------------------------------------------------------------------------- /Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex5.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex5.xlsx -------------------------------------------------------------------------------- /Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex6.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex6.xlsx -------------------------------------------------------------------------------- /Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex8.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex8.xlsx -------------------------------------------------------------------------------- /Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex9.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task7_下_假设检验2_多元数值向量检验/data/ex9.xlsx -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/卢瑟福.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/卢瑟福.png -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/统一性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/统一性.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/无监督学习/聚类算法/figure/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/无监督学习/聚类算法/figure/1.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig2.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig2.1.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task4_多目标规划/fig/fig3.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task4_多目标规划/fig/fig3.1.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task4_多目标规划/fig/fig3.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task4_多目标规划/fig/fig3.2.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task5_灵敏度分析/fig/fig4.1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task5_灵敏度分析/fig/fig4.1.png -------------------------------------------------------------------------------- /Data-Story/Task2_上_EDA初体验/figures/1_2_特征分析思路.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task2_上_EDA初体验/figures/1_2_特征分析思路.png -------------------------------------------------------------------------------- /Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/总框架.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/总框架.png -------------------------------------------------------------------------------- /Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/拒绝域.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/拒绝域.png -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/单因素频数表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/单因素频数表.png -------------------------------------------------------------------------------- /Data-Story/Task8_下_假设检验3_分类数据检验/images/双因素列联表.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task8_下_假设检验3_分类数据检验/images/双因素列联表.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/SAR1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/SAR1.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/ar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/ar.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/test.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/季节序列.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/季节序列.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/平稳序列.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/平稳序列.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/建模流程.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/建模流程.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/趋势序列.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/趋势序列.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig2.2.2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig2.2.2.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig2.3.3-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig2.3.3-3.png -------------------------------------------------------------------------------- /Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/方差分析.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task6_下_假设检验1_方法论与一元数值检验/images/方差分析.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/air2.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_dataset/air2.dta -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/wpi1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_dataset/wpi1.dta -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/MA_ACF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/MA_ACF.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig2.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig2.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig3.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig4.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1_5_4.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:40); 3 | z=-2*x+3*y+5; 4 | mesh(x,y,z); 5 | whitebg([1 1 1]); 6 | grid minor; -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig2.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig2.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig3.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig4.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig 2.2.3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig 2.2.3-1.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig 2.3.3-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig 2.3.3-1.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/fig/fig 2.3.3-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task3_整数规划/fig/fig 2.3.3-2.png -------------------------------------------------------------------------------- /Data-Story/Task7_下_假设检验2_多元数值向量检验/data/homework2.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data-Story/Task7_下_假设检验2_多元数值向量检验/data/homework2.xlsx -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/AR1_ACF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/AR1_ACF.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/arma0110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/arma0110.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/arma1001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/arma1001.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/感知机.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/感知机.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/ols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/ols.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/正则化.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/正则化.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/二叉树.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/二叉树.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/多项式.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/多项式.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/聚类.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/聚类.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/误差.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/误差.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig5_可行域.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig5_可行域.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig6_凸集.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig6_凸集.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig5_可行域.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig5_可行域.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig6_凸集.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig6_凸集.png -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_images/time_series.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Dr. Strange-TimeSeriesAnalysis/tsa_images/time_series.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/三种情况.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/三种情况.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/最大间隔.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/最大间隔.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/混淆矩阵1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/混淆矩阵1.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/线性可分.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/分类篇-单学习器分类算法/images/线性可分.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/回归篇-线性回归模型/images/metrics.png -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/分类范式.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/分类范式.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/回归范式.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/回归范式.jpg -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/无监督范式.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/images/无监督范式.jpg -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig3 - 副本.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig3 - 副本.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig7_非凸集合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig7_非凸集合.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig3 - 副本.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig3 - 副本.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig7_非凸集合.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig7_非凸集合.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig8_凸多边形.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig8_凸多边形.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_终止准则.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_终止准则.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.3.1_解的情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.3.1_解的情况.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.3.2_解的情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1.3.2_解的情况.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig1_5_1.m: -------------------------------------------------------------------------------- 1 | [x,y]=meshgrid(0:1:2000); 2 | z=-228.2*x+253.1*y; 3 | z(x>1000)=NaN; 4 | z(y>1600)=NaN; 5 | z(x+y>2000)=NaN; 6 | mesh(x,y,z); 7 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.3.1_解的情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.3.1_解的情况.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.3.2_解的情况.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1.3.2_解的情况.png -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1_5_1.m: -------------------------------------------------------------------------------- 1 | [x,y]=meshgrid(0:1:2000); 2 | z=-228.2*x+253.1*y; 3 | z(x>1000)=NaN; 4 | z(y>1600)=NaN; 5 | z(x+y>2000)=NaN; 6 | mesh(x,y,z); 7 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_单纯形表结构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_单纯形表结构.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/1.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/2.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/3.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/4.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/5.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/6.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/7.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/8.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_05 分类分析/images/映射.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_05 分类分析/images/映射.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/._3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/._3.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/images/9.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_01 数据可视化/images/9.jpeg -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_05 分类分析/data/loanapp.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_05 分类分析/data/loanapp.dta -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_Gradient_descent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig9_Gradient_descent.gif -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/data/gpa1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/data/gpa1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/ols.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/ols.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/同方差.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/同方差.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/横截面数据.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_02 回归分析1_线性回归模型必知必会/images/横截面数据.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/gpa1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/gpa1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/mlb1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/mlb1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/wage1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/wage1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/images/定性.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/images/定性.png -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/crime1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/crime1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/gpa1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/gpa1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/gpa3.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/gpa3.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/smoke.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/smoke.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/attend.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/attend.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/hprice1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/hprice1.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/twoyear.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/twoyear.dta -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/hprice1.dta: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Git-Model/Modeling-Universe/HEAD/Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/hprice1.dta -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig153.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | plot3(0,0,0) 3 | ax = cla 4 | ax.XLim = [-4 4]; 5 | ax.XAxisLocation = 'origin' 6 | ax.YLim = [-4 4]; 7 | ax.YAxisLocation = 'right' 8 | 9 | 10 | xlabel('axis X') 11 | ylabel('axis Y') 12 | 13 | -------------------------------------------------------------------------------- /Data-Story/Task6_下_假设检验1_方法论与一元数值检验/data/altman_910.txt: -------------------------------------------------------------------------------- 1 | 243, 1 2 | 251, 1 3 | 275, 1 4 | 291, 1 5 | 347, 1 6 | 354, 1 7 | 380, 1 8 | 392, 1 9 | 206, 2 10 | 210, 2 11 | 226, 2 12 | 249, 2 13 | 255, 2 14 | 273, 2 15 | 285, 2 16 | 295, 2 17 | 309, 2 18 | 241, 3 19 | 258, 3 20 | 270, 3 21 | 293, 3 22 | 328, 3 23 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig152.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:30); 3 | z=2*x+3*y; 4 | z(x<5)=NaN; 5 | z(y<8)=NaN; 6 | z(x+y<25)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 10 | axis([0 30 0 30]); 11 | whitebg([.5 .5 .5]); 12 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig153.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:30); 3 | z=2*x+2*y-50; 4 | z(x<5)=NaN; 5 | z(y<8)=NaN; 6 | z(x+y<25)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 10 | axis([0 30 0 30]); 11 | whitebg([.5 .5 .5]); 12 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1534.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:30); 3 | z=2*x+2*y-50; 4 | z(x<5)=NaN; 5 | z(y<8)=NaN; 6 | z(x+y<25)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 10 | axis([0 30 0 30]); 11 | whitebg([.5 .5 .5]); 12 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig152.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:40); 3 | z=3*y; 4 | z(x<5)=NaN; 5 | z(y<8)=NaN; 6 | z(x+y<25)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 10 | axis([5 40 8 40]); 11 | whitebg([1 1 1]); 12 | grid minor; 13 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig153 - 副本.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:30); 3 | z=2*x+2*y-50; 4 | z(x<5)=NaN; 5 | z(y<8)=NaN; 6 | z(x+y<25)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 10 | axis([0 30 0 30]); 11 | whitebg([.5 .5 .5]); 12 | -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/P176.txt: -------------------------------------------------------------------------------- 1 | X Y 2 | 294 30 3 | 247 32 4 | 267 37 5 | 358 44 6 | 423 47 7 | 311 49 8 | 450 56 9 | 534 62 10 | 438 68 11 | 697 78 12 | 688 80 13 | 630 84 14 | 709 88 15 | 627 97 16 | 615 100 17 | 999 109 18 | 1022 114 19 | 1015 117 20 | 700 106 21 | 850 128 22 | 980 130 23 | 1025 160 24 | 1021 97 25 | 1200 180 26 | 1250 112 27 | 1500 210 28 | 1650 135 29 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/fig/fig151.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:20); 3 | z=-2*x-3*y+56; 4 | z(x>10)=NaN; 5 | z(y>16)=NaN; 6 | z(x+y>20)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | [x1,y1]=meshgrid(0:0.01:20); 10 | z1=0*x1+0*y1; 11 | z1(x1>10)=NaN; 12 | z1(y1>16)=NaN; 13 | z1(x1+y1>20)=NaN; 14 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 15 | axis([0 12 0 18 0 56]); 16 | whitebg([.5 .5 .5]); 17 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig151.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | [x,y]=meshgrid(0:0.01:20); 3 | z=-2*x-3*y+56; 4 | z(x>10)=NaN; 5 | z(y>16)=NaN; 6 | z(x+y>20)=NaN; 7 | mesh(x,y,z); 8 | hold on; 9 | [x1,y1]=meshgrid(0:0.01:20); 10 | z1=0*x1+0*y1; 11 | z1(x1>10)=NaN; 12 | z1(y1>16)=NaN; 13 | z1(x1+y1>20)=NaN; 14 | mesh(x,y,0*z,'FaceColor','c','FaceAlpha',0.5,'EdgeColor','none') 15 | axis([0 12 0 18 0 56]); 16 | whitebg([.5 .5 .5]); 17 | -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_04 回归分析3_线性回归模型的误差诊断/data/P176.txt: -------------------------------------------------------------------------------- 1 | X Y 2 | 294 30 3 | 247 32 4 | 267 37 5 | 358 44 6 | 423 47 7 | 311 49 8 | 450 56 9 | 534 62 10 | 438 68 11 | 697 78 12 | 688 80 13 | 630 84 14 | 709 88 15 | 627 97 16 | 615 100 17 | 999 109 18 | 1022 114 19 | 1015 117 20 | 700 106 21 | 850 128 22 | 980 130 23 | 1025 160 24 | 1021 97 25 | 1200 180 26 | 1250 112 27 | 1500 210 28 | 1650 135 29 | -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/example5.9.txt: -------------------------------------------------------------------------------- 1 | 1.1 0.5 0.4 0.7 1.6 0.6 0.5 0.7 2 | 1.3 0.6 0.5 0.7 1.2 0.5 0.4 0.6 3 | 0.9 0.5 0.5 1.1 2.9 2.1 1.7 2 4 | 2.7 1.3 0.9 1 1.6 0.6 0.5 0.7 5 | 1.1 0.5 0.5 0.6 1.2 0.7 0.7 1 6 | 1.5 1 0.9 1.1 1.5 1 1 1.6 7 | 2.6 2.1 2.3 3.6 5 4.5 4.5 4.9 8 | 5.7 4.3 4 4.4 5.2 4.3 4.2 4.5 9 | 5.2 4.1 3.9 4.1 4.8 3.5 3.4 3.5 10 | 4.2 3.4 3.6 4.3 5.5 4.8 5.4 6.5 11 | 8 7 7.4 8.5 10.1 8.9 8.8 9 12 | 10 8.7 8.8 8.9 10.4 8.9 8.9 9 13 | 10.2 8.6 8.4 8.4 9.9 8.5 8.6 8.7 14 | 9.8 8.6 8.4 8.2 8.8 7.6 7.5 7.6 15 | 8.1 7.1 6.9 6.6 6.8 6 6.2 6.2 16 | -------------------------------------------------------------------------------- /Data-Story/Task6_下_假设检验1_方法论与一元数值检验/data/altman_12_6.txt: -------------------------------------------------------------------------------- 1 | 14.3, 1, 1 2 | 14.0, 1, 1 3 | 14.8, 1, 1 4 | 13.6, 1, 2 5 | 13.6, 1, 2 6 | 13.8, 1, 2 7 | 13.9, 1, 3 8 | 13.7, 1, 3 9 | 13.8, 1, 3 10 | 13.8, 1, 4 11 | 14.7, 1, 4 12 | 13.9, 1, 4 13 | 19.7, 2, 1 14 | 19.9, 2, 1 15 | 19.8, 2, 1 16 | 19.8, 2, 2 17 | 19.3, 2, 2 18 | 19.8, 2, 2 19 | 19.5, 2, 3 20 | 19.8, 2, 3 21 | 19.5, 2, 3 22 | 19.8, 2, 4 23 | 19.6, 2, 4 24 | 19.8, 2, 4 25 | 13.0, 3, 1 26 | 12.6, 3, 1 27 | 12.9, 3, 1 28 | 12.4, 3, 2 29 | 12.8, 3, 2 30 | 12.5, 3, 2 31 | 12.8, 3, 3 32 | 12.7, 3, 3 33 | 12.5, 3, 3 34 | 13.0, 3, 4 35 | 12.9, 3, 4 36 | 13.8, 3, 4 37 | 38 | -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/FarmingIncome.txt: -------------------------------------------------------------------------------- 1 | 1952 100 2 | 1953 101.6 3 | 1954 103.3 4 | 1955 111.5 5 | 1956 116.5 6 | 1957 120.1 7 | 1958 120.3 8 | 1959 100.6 9 | 1960 83.6 10 | 1961 84.7 11 | 1962 88.7 12 | 1963 98.9 13 | 1964 111.9 14 | 1965 122.9 15 | 1966 131.9 16 | 1967 134.2 17 | 1968 131.6 18 | 1969 132.2 19 | 1970 139.8 20 | 1971 142 21 | 1972 140.5 22 | 1973 153.1 23 | 1974 159.2 24 | 1975 162.3 25 | 1976 159.1 26 | 1977 155.1 27 | 1978 161.2 28 | 1979 171.5 29 | 1980 168.4 30 | 1981 180.4 31 | 1982 201.6 32 | 1983 218.7 33 | 1984 247 34 | 1985 253.7 35 | 1986 261.4 36 | 1987 273.2 37 | 1988 279.4 38 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/roilway.csv: -------------------------------------------------------------------------------- 1 | ,S1,S2,S3,S4,S5,S6,S7 2 | 1,160.0,210.0,220.0,255.0,225.0,255.0,265.0 3 | 2,140.0,190.0,200.0,235.0,245.0,235.0,250.0 4 | 3,80.0,130.0,140.0,175.0,165.0,175.0,185.0 5 | 4,37.0,110.0,120.0,155.0,145.0,155.0,165.0 6 | 5,20.0,95.0,105.0,140.0,130.0,140.0,150.0 7 | 6,20.0,85.0,95.0,130.0,120.0,130.0,140.0 8 | 7,20.0,75.0,85.0,120.0,110.0,120.0,130.0 9 | 8,60.0,110.0,44.0,80.0,75.0,85.0,95.0 10 | 9,85.0,135.0,75.0,55.0,50.0,55.0,70.0 11 | 10,100.0,130.0,85.0,50.0,32.0,50.0,65.0 12 | 11,105.0,155.0,95.0,60.0,50.0,44.0,55.0 13 | 12,115.0,165.0,105.0,70.0,65.0,20.0,32.0 14 | 13,125.0,175.0,115.0,80.0,70.0,20.0,23.0 15 | 14,140.0,190.0,130.0,95.0,85.0,26.0,20.0 16 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/fig/fig1_5_5.m: -------------------------------------------------------------------------------- 1 | clear all; 2 | x=0:0.01:30; 3 | y1=(x-10).^2+50; 4 | y2=0.5*(x-20).^2+100; 5 | hold on; 6 | plot(x,y1,'color',[0 0.4470 0.7410],'linewidth',2) 7 | plot(x,y2,'color',[0.4940 0.1840 0.5560],'linewidth',2) 8 | line(10*ones(10001,1),50:0.01:150,'linewidth',2,'linestyle','--','color',[0.9290 0.6940 0.1250]) 9 | line(20*ones(10001,1),50:0.01:150,'linewidth',2,'linestyle','--','color',[0.9290 0.6940 0.1250]) 10 | line(10:0.01:20,50*ones(1001,1),'linewidth',2,'color',[0.9290 0.6940 0.1250]) 11 | text(5,100,'(50,150)\rightarrow') 12 | text(20.5,75,'\leftarrow(150,100)') 13 | text(15,45,'\uparrow') 14 | text(5,27,'线段上对应两个函数的函数值(y_1,y_2)都是 Pareto 解') 15 | legend('第一个目标函数','第二个目标函数') 16 | axis([0 30 0 350]) -------------------------------------------------------------------------------- /Data-Story/Task3_上_统计分析之回归分析/data/P130.txt: -------------------------------------------------------------------------------- 1 | S X E M 2 | 13876 1 1 1 3 | 11608 1 3 0 4 | 18701 1 3 1 5 | 11283 1 2 0 6 | 11767 1 3 0 7 | 20872 2 2 1 8 | 11772 2 2 0 9 | 10535 2 1 0 10 | 12195 2 3 0 11 | 12313 3 2 0 12 | 14975 3 1 1 13 | 21371 3 2 1 14 | 19800 3 3 1 15 | 11417 4 1 0 16 | 20263 4 3 1 17 | 13231 4 3 0 18 | 12884 4 2 0 19 | 13245 5 2 0 20 | 13677 5 3 0 21 | 15965 5 1 1 22 | 12336 6 1 0 23 | 21352 6 3 1 24 | 13839 6 2 0 25 | 22884 6 2 1 26 | 16978 7 1 1 27 | 14803 8 2 0 28 | 17404 8 1 1 29 | 22184 8 3 1 30 | 13548 8 1 0 31 | 14467 10 1 0 32 | 15942 10 2 0 33 | 23174 10 3 1 34 | 23780 10 2 1 35 | 25410 11 2 1 36 | 14861 11 1 0 37 | 16882 12 2 0 38 | 24170 12 3 1 39 | 15990 13 1 0 40 | 26330 13 2 1 41 | 17949 14 2 0 42 | 25685 15 3 1 43 | 27837 16 2 1 44 | 18838 16 2 0 45 | 17483 16 1 0 46 | 19207 17 2 0 47 | 19346 20 1 0 48 | -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_03 回归分析2_线性回归模型的推断与推广/data/P130.txt: -------------------------------------------------------------------------------- 1 | S X E M 2 | 13876 1 1 1 3 | 11608 1 3 0 4 | 18701 1 3 1 5 | 11283 1 2 0 6 | 11767 1 3 0 7 | 20872 2 2 1 8 | 11772 2 2 0 9 | 10535 2 1 0 10 | 12195 2 3 0 11 | 12313 3 2 0 12 | 14975 3 1 1 13 | 21371 3 2 1 14 | 19800 3 3 1 15 | 11417 4 1 0 16 | 20263 4 3 1 17 | 13231 4 3 0 18 | 12884 4 2 0 19 | 13245 5 2 0 20 | 13677 5 3 0 21 | 15965 5 1 1 22 | 12336 6 1 0 23 | 21352 6 3 1 24 | 13839 6 2 0 25 | 22884 6 2 1 26 | 16978 7 1 1 27 | 14803 8 2 0 28 | 17404 8 1 1 29 | 22184 8 3 1 30 | 13548 8 1 0 31 | 14467 10 1 0 32 | 15942 10 2 0 33 | 23174 10 3 1 34 | 23780 10 2 1 35 | 25410 11 2 1 36 | 14861 11 1 0 37 | 16882 12 2 0 38 | 24170 12 3 1 39 | 15990 13 1 0 40 | 26330 13 2 1 41 | 17949 14 2 0 42 | 25685 15 3 1 43 | 27837 16 2 1 44 | 18838 16 2 0 45 | 17483 16 1 0 46 | 19207 17 2 0 47 | 19346 20 1 0 48 | -------------------------------------------------------------------------------- /Wakanda-Optimization/README.md: -------------------------------------------------------------------------------- 1 | # 🙅‍♂️ 黑豹的优化之路 2 | > **课程编号**:🇬🇲1️⃣0️⃣1️⃣ \ 3 | > **英文名**:Wakanda-Optimization 4 | 5 | 👋优化,是数学建模一个永恒的话题,面对实际问题,我们总想着花费的代价更少,得到的收益更好,甚至想着时间等等各种各样的因素都能追求更优的效果.\ 6 | 从竞赛的角度出发,几乎每种类型的题目都跟优化脱离不了关系,或多或少,都朝着优化的目标而去。但是从实际的问题中抽象出一个优化模型,这可是一个技术活. 不仅如此,从所给的条件中,找到需要优化的变量与参数,这也是需要训练与经验沉淀的工作. 因此在这个专题中,我们会带领大家从往年的数学建模竞赛真题出发,在实战中,将我们所需要用到的知识点以及编程技能点亮,在真实的应用背景中,了解优化的乐趣! 7 | 8 | 在这门课中,主要讲解了运筹优化中最基础,但也非常常见的两大模型————**线性规划**、**整数规划**,包含四大板块: 9 | - 线性规划 10 | - 整数规划 11 | - 混合整数规划 12 | - 模型优化与参数调整 13 | 14 | 15 | ## 🎯课程目标 16 | 介绍数学建模中运筹优化的基本模型,着重介绍线性规划以及整数规划模型,手把手带你由真实背景出发,从抽象实际问题,建立数学模型,再到最后求解代码的编写!真正从0到1,运筹帷幄! 17 | 18 | ### ✨ 课程亮点 19 | 1. 基于真实国赛赛题改编,原汁原味背景,又更好服务于知识点体系 20 | 21 | 22 | 23 | 2. 对话式教材书写模式,任务驱动型的学习方式,沉浸式体验优化建模的乐趣 24 | 25 | ## 📆课程安排(12天) 26 | > 预计每日学习时长1~2小时. 27 | 1. 线性规划【3天】 28 | 2. 整数规划【2天】 29 | 3. 混合整数规划【3天】 30 | 4. 模型优化【2天】 31 | 5. 灵敏度分析【2天】 32 | 33 | ## 🛠️我们将用到的工具 34 |

35 | 36 | 37 |

38 | 39 | ## 🧑‍💻贡献者 40 | ### 🧑‍🔧课程开发 41 | | 昵称 | 内容 | 联系方式 | 42 | | ------ | ---------------- | --------------------------------------------- | 43 | | 刘斯豪 | 代码整理 |amihua@mail2.gdut.edu.cn| 44 | | 郑伯斌 | 知识点整理 |20182232011@m.scnu.cn| 45 | 46 | ### 🏃‍♀️课程运营 47 | 48 | ### 🧩改进优化 49 | - @ 何清旋 50 | - @ 周好蠢 51 | 52 |

📫 欢迎沟通鸭!

53 | 54 | - 📧 **邮箱**:gitmodel@163.com 55 | - 📺 **bilibili**:[GitModel](https://space.bilibili.com/1051016998) 56 | 57 |

🆕 关注公众号

58 |

59 | 60 | 61 | 62 |

63 | 64 | **我们非常期待有兴趣的你一同加入,我们共同维护国内第一个数学建模开源社区!** 65 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /Data-Story/README.md: -------------------------------------------------------------------------------- 1 | # 📊 数据总动员 2 | > **课程编号**:🇬🇲1️⃣0️⃣0️⃣ \ 3 | > **英文名**:Data-Story 4 | 5 | 👋在许多次在数学建模中,当你走投无路时,统计分析的题目或许是你最后的救命稻草···\ 6 | 从竞赛经验出发,我们认为统计分析模型对于新手而言非常友好,也是在许多题目会使用到的高频模型,因此在了解了基础的数学工具后,我们建议你从统计分析模型开始你的数模之旅~ 7 | 8 | 在这门课中,主要包含四大板块:**探索性数据分析(EDA)与数据可视化、计量经济学(回归分析、分类分析)、假设检验专题、随机过程与金融随机模拟专题**. 9 | 10 | 统计分析(上): 11 | - 为了照顾零基础的学员,首先我们加入了一个`pandas`库的动手学教程,我们给出了具体知识点的文档地址,要求大家自行阅读文档后,进行问题解决; 12 | - 在学习完`pandas`的基础后,给大家带来了一个实战案例————**Boston房价预测实战**,从实际的数据集中,让大家直观的认识什么是数据探索性分析的过程,以及讲解数据分析中使用的Python库——Pandas; 13 | - 在回归分析的部分中,我们讲解了在数学建模中最常用到的回归模型——线性回归,以及关于线性回归的一些参数检验手段,并且带领大家手把手的采用Python进行实战,目的是可以更好的为模型解释服务; 14 | - 在分类分析的部分中,我们简单介绍了分类问题,并介绍如何将回归模型迁移运用到分类问题之中; 15 | - 在数据可视化的部分,我们讲解了Python三大数据可视化工具库:Matplotlib、Seaborn和Plotnine,以及在实际应用中应该如何选择合适的图表正确表达数据. 16 | 17 | 统计分析(下): 18 | - 在假设检验部分,我们将学习到日常生活与工作中最经常用到的所有假设检验(如:正态性检验、方差分析等等),学完假设检验部分,你将解锁假设检验几乎所有的技能; 19 | - 在随机过程专题,我们将时间变量引入概率论中,将会学习到随机过程中最著名的——泊松过程、马尔可夫过程,并使用案例的形式讲解了如何将随机过程与仿真技术结合起来解决实际问题; 20 | - 在随机模拟专题,我们将学习到的随机过程相关理论运用到实际的金融案例中,从0学会如何使用对数布朗运动描述股价的分布并求解看涨期权的报酬分布。随后,我们将总结随机模拟的关键——生成随机数,将会学习生成各种随机数的采样方法(如:拒绝采样、MCMC采样等等)。 21 | 22 | ## 🎯课程目标 23 | 介绍数学建模中数据分析问题的完整链路,着重介绍回归&分类问题的建模以及分析过程,并且手把手带你画出专业性满满的可视化图表! 24 | 25 | ## 📆课程安排(15天) 26 | > 预计每日学习时长1~2小时. 27 | 1. 动手学Pandas【2天】 28 | 2. Boston房价数据集的EDA【2天】 29 | 3. 回归分析与模型诊断【5天】 30 | 4. 分类分析与模型诊断【2天】 31 | 5. 数据可视化【4天】 32 | 6. 假设检验1: 方法论与一元数值检验【5天】 33 | 7. 假设检验2: 多元数值向量检验【2天】 34 | 8. 假设检验3: 分类数据检验【2天】 35 | 9. 应用随机过程与仿真系统【3天】 36 | 10. 金融量化分析与随机模拟【3天】 37 | 38 | ## 🛠️我们将用到的工具 39 |

40 | 41 | 42 |

43 | 44 | ## 🧑‍💻贡献者 45 | ### 🧑‍🔧课程开发 46 | | 昵称 | 内容 | 联系方式 | 47 | | ------ | ---------------- | --------------------------------------------- | 48 | | 刘斯豪 | pandas与Boston房价数据集的EDA |amihua@mail2.gdut.edu.cn| 49 | | 黎卓然 | 回归分析、分类分析 |975371984@qq.com| 50 | | 李祖贤 | 数据可视化 |1028851587@qq.com| 51 | 52 | ### 🏃‍♀️课程运营 53 | 54 | ### 🧩改进优化 55 | 56 |

📫 欢迎沟通鸭!

57 | 58 | - 📧 **邮箱**:gitmodel@163.com 59 | - 📺 **bilibili**:[GitModel](https://space.bilibili.com/1051016998) 60 | 61 |

🆕 关注公众号

62 |

63 | 64 | 65 | 66 |

67 | 68 | **我们非常期待有兴趣的你一同加入,我们共同维护国内第一个数学建模开源社区!** 69 | 70 | -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/data/AirPassengers.csv: -------------------------------------------------------------------------------- 1 | date,value 2 | 1949-1-1,112 3 | 1949-2-1,118 4 | 1949-3-1,132 5 | 1949-4-1,129 6 | 1949-5-1,121 7 | 1949-6-1,135 8 | 1949-7-1,148 9 | 1949-8-1,148 10 | 1949-9-1,136 11 | 1949-10-1,119 12 | 1949-11-1,104 13 | 1949-12-1,118 14 | 1950-1-1,115 15 | 1950-2-1,126 16 | 1950-3-1,141 17 | 1950-4-1,135 18 | 1950-5-1,125 19 | 1950-6-1,149 20 | 1950-7-1,170 21 | 1950-8-1,170 22 | 1950-9-1,158 23 | 1950-10-1,133 24 | 1950-11-1,114 25 | 1950-12-1,140 26 | 1951-1-1,145 27 | 1951-2-1,150 28 | 1951-3-1,178 29 | 1951-4-1,163 30 | 1951-5-1,172 31 | 1951-6-1,178 32 | 1951-7-1,199 33 | 1951-8-1,199 34 | 1951-9-1,184 35 | 1951-10-1,162 36 | 1951-11-1,146 37 | 1951-12-1,166 38 | 1952-1-1,171 39 | 1952-2-1,180 40 | 1952-3-1,193 41 | 1952-4-1,181 42 | 1952-5-1,183 43 | 1952-6-1,218 44 | 1952-7-1,230 45 | 1952-8-1,242 46 | 1952-9-1,209 47 | 1952-10-1,191 48 | 1952-11-1,172 49 | 1952-12-1,194 50 | 1953-1-1,196 51 | 1953-2-1,196 52 | 1953-3-1,236 53 | 1953-4-1,235 54 | 1953-5-1,229 55 | 1953-6-1,243 56 | 1953-7-1,264 57 | 1953-8-1,272 58 | 1953-9-1,237 59 | 1953-10-1,211 60 | 1953-11-1,180 61 | 1953-12-1,201 62 | 1954-1-1,204 63 | 1954-2-1,188 64 | 1954-3-1,235 65 | 1954-4-1,227 66 | 1954-5-1,234 67 | 1954-6-1,264 68 | 1954-7-1,302 69 | 1954-8-1,293 70 | 1954-9-1,259 71 | 1954-10-1,229 72 | 1954-11-1,203 73 | 1954-12-1,229 74 | 1955-1-1,242 75 | 1955-2-1,233 76 | 1955-3-1,267 77 | 1955-4-1,269 78 | 1955-5-1,270 79 | 1955-6-1,315 80 | 1955-7-1,364 81 | 1955-8-1,347 82 | 1955-9-1,312 83 | 1955-10-1,274 84 | 1955-11-1,237 85 | 1955-12-1,278 86 | 1956-1-1,284 87 | 1956-2-1,277 88 | 1956-3-1,317 89 | 1956-4-1,313 90 | 1956-5-1,318 91 | 1956-6-1,374 92 | 1956-7-1,413 93 | 1956-8-1,405 94 | 1956-9-1,355 95 | 1956-10-1,306 96 | 1956-11-1,271 97 | 1956-12-1,306 98 | 1957-1-1,315 99 | 1957-2-1,301 100 | 1957-3-1,356 101 | 1957-4-1,348 102 | 1957-5-1,355 103 | 1957-6-1,422 104 | 1957-7-1,465 105 | 1957-8-1,467 106 | 1957-9-1,404 107 | 1957-10-1,347 108 | 1957-11-1,305 109 | 1957-12-1,336 110 | 1958-1-1,340 111 | 1958-2-1,318 112 | 1958-3-1,362 113 | 1958-4-1,348 114 | 1958-5-1,363 115 | 1958-6-1,435 116 | 1958-7-1,491 117 | 1958-8-1,505 118 | 1958-9-1,404 119 | 1958-10-1,359 120 | 1958-11-1,310 121 | 1958-12-1,337 122 | 1959-1-1,360 123 | 1959-2-1,342 124 | 1959-3-1,406 125 | 1959-4-1,396 126 | 1959-5-1,420 127 | 1959-6-1,472 128 | 1959-7-1,548 129 | 1959-8-1,559 130 | 1959-9-1,463 131 | 1959-10-1,407 132 | 1959-11-1,362 133 | 1959-12-1,405 134 | 1960-1-1,417 135 | 1960-2-1,391 136 | 1960-3-1,419 137 | 1960-4-1,461 138 | 1960-5-1,472 139 | 1960-6-1,535 140 | 1960-7-1,622 141 | 1960-8-1,606 142 | 1960-9-1,508 143 | 1960-10-1,461 144 | 1960-11-1,390 145 | 1960-12-1,432 146 | -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/data/AirPassengers.csv: -------------------------------------------------------------------------------- 1 | date,value 2 | 1949-1-1,112 3 | 1949-2-1,118 4 | 1949-3-1,132 5 | 1949-4-1,129 6 | 1949-5-1,121 7 | 1949-6-1,135 8 | 1949-7-1,148 9 | 1949-8-1,148 10 | 1949-9-1,136 11 | 1949-10-1,119 12 | 1949-11-1,104 13 | 1949-12-1,118 14 | 1950-1-1,115 15 | 1950-2-1,126 16 | 1950-3-1,141 17 | 1950-4-1,135 18 | 1950-5-1,125 19 | 1950-6-1,149 20 | 1950-7-1,170 21 | 1950-8-1,170 22 | 1950-9-1,158 23 | 1950-10-1,133 24 | 1950-11-1,114 25 | 1950-12-1,140 26 | 1951-1-1,145 27 | 1951-2-1,150 28 | 1951-3-1,178 29 | 1951-4-1,163 30 | 1951-5-1,172 31 | 1951-6-1,178 32 | 1951-7-1,199 33 | 1951-8-1,199 34 | 1951-9-1,184 35 | 1951-10-1,162 36 | 1951-11-1,146 37 | 1951-12-1,166 38 | 1952-1-1,171 39 | 1952-2-1,180 40 | 1952-3-1,193 41 | 1952-4-1,181 42 | 1952-5-1,183 43 | 1952-6-1,218 44 | 1952-7-1,230 45 | 1952-8-1,242 46 | 1952-9-1,209 47 | 1952-10-1,191 48 | 1952-11-1,172 49 | 1952-12-1,194 50 | 1953-1-1,196 51 | 1953-2-1,196 52 | 1953-3-1,236 53 | 1953-4-1,235 54 | 1953-5-1,229 55 | 1953-6-1,243 56 | 1953-7-1,264 57 | 1953-8-1,272 58 | 1953-9-1,237 59 | 1953-10-1,211 60 | 1953-11-1,180 61 | 1953-12-1,201 62 | 1954-1-1,204 63 | 1954-2-1,188 64 | 1954-3-1,235 65 | 1954-4-1,227 66 | 1954-5-1,234 67 | 1954-6-1,264 68 | 1954-7-1,302 69 | 1954-8-1,293 70 | 1954-9-1,259 71 | 1954-10-1,229 72 | 1954-11-1,203 73 | 1954-12-1,229 74 | 1955-1-1,242 75 | 1955-2-1,233 76 | 1955-3-1,267 77 | 1955-4-1,269 78 | 1955-5-1,270 79 | 1955-6-1,315 80 | 1955-7-1,364 81 | 1955-8-1,347 82 | 1955-9-1,312 83 | 1955-10-1,274 84 | 1955-11-1,237 85 | 1955-12-1,278 86 | 1956-1-1,284 87 | 1956-2-1,277 88 | 1956-3-1,317 89 | 1956-4-1,313 90 | 1956-5-1,318 91 | 1956-6-1,374 92 | 1956-7-1,413 93 | 1956-8-1,405 94 | 1956-9-1,355 95 | 1956-10-1,306 96 | 1956-11-1,271 97 | 1956-12-1,306 98 | 1957-1-1,315 99 | 1957-2-1,301 100 | 1957-3-1,356 101 | 1957-4-1,348 102 | 1957-5-1,355 103 | 1957-6-1,422 104 | 1957-7-1,465 105 | 1957-8-1,467 106 | 1957-9-1,404 107 | 1957-10-1,347 108 | 1957-11-1,305 109 | 1957-12-1,336 110 | 1958-1-1,340 111 | 1958-2-1,318 112 | 1958-3-1,362 113 | 1958-4-1,348 114 | 1958-5-1,363 115 | 1958-6-1,435 116 | 1958-7-1,491 117 | 1958-8-1,505 118 | 1958-9-1,404 119 | 1958-10-1,359 120 | 1958-11-1,310 121 | 1958-12-1,337 122 | 1959-1-1,360 123 | 1959-2-1,342 124 | 1959-3-1,406 125 | 1959-4-1,396 126 | 1959-5-1,420 127 | 1959-6-1,472 128 | 1959-7-1,548 129 | 1959-8-1,559 130 | 1959-9-1,463 131 | 1959-10-1,407 132 | 1959-11-1,362 133 | 1959-12-1,405 134 | 1960-1-1,417 135 | 1960-2-1,391 136 | 1960-3-1,419 137 | 1960-4-1,461 138 | 1960-5-1,472 139 | 1960-6-1,535 140 | 1960-7-1,622 141 | 1960-8-1,606 142 | 1960-9-1,508 143 | 1960-10-1,461 144 | 1960-11-1,390 145 | 1960-12-1,432 146 | -------------------------------------------------------------------------------- /Dr. Strange-TimeSeriesAnalysis/tsa_dataset/AirPassengers.csv: -------------------------------------------------------------------------------- 1 | year,month,Number,Time 2 | 1949,1,112,1949-1 3 | 1949,2,118,1949-2 4 | 1949,3,132,1949-3 5 | 1949,4,129,1949-4 6 | 1949,5,121,1949-5 7 | 1949,6,135,1949-6 8 | 1949,7,148,1949-7 9 | 1949,8,148,1949-8 10 | 1949,9,136,1949-9 11 | 1949,10,119,1949-10 12 | 1949,11,104,1949-11 13 | 1949,12,118,1949-12 14 | 1950,1,115,1950-1 15 | 1950,2,126,1950-2 16 | 1950,3,141,1950-3 17 | 1950,4,135,1950-4 18 | 1950,5,125,1950-5 19 | 1950,6,149,1950-6 20 | 1950,7,170,1950-7 21 | 1950,8,170,1950-8 22 | 1950,9,158,1950-9 23 | 1950,10,133,1950-10 24 | 1950,11,114,1950-11 25 | 1950,12,140,1950-12 26 | 1951,1,145,1951-1 27 | 1951,2,150,1951-2 28 | 1951,3,178,1951-3 29 | 1951,4,163,1951-4 30 | 1951,5,172,1951-5 31 | 1951,6,178,1951-6 32 | 1951,7,199,1951-7 33 | 1951,8,199,1951-8 34 | 1951,9,184,1951-9 35 | 1951,10,162,1951-10 36 | 1951,11,146,1951-11 37 | 1951,12,166,1951-12 38 | 1952,1,171,1952-1 39 | 1952,2,180,1952-2 40 | 1952,3,193,1952-3 41 | 1952,4,181,1952-4 42 | 1952,5,183,1952-5 43 | 1952,6,218,1952-6 44 | 1952,7,230,1952-7 45 | 1952,8,242,1952-8 46 | 1952,9,209,1952-9 47 | 1952,10,191,1952-10 48 | 1952,11,172,1952-11 49 | 1952,12,194,1952-12 50 | 1953,1,196,1953-1 51 | 1953,2,196,1953-2 52 | 1953,3,236,1953-3 53 | 1953,4,235,1953-4 54 | 1953,5,229,1953-5 55 | 1953,6,243,1953-6 56 | 1953,7,264,1953-7 57 | 1953,8,272,1953-8 58 | 1953,9,237,1953-9 59 | 1953,10,211,1953-10 60 | 1953,11,180,1953-11 61 | 1953,12,201,1953-12 62 | 1954,1,204,1954-1 63 | 1954,2,188,1954-2 64 | 1954,3,235,1954-3 65 | 1954,4,227,1954-4 66 | 1954,5,234,1954-5 67 | 1954,6,264,1954-6 68 | 1954,7,302,1954-7 69 | 1954,8,293,1954-8 70 | 1954,9,259,1954-9 71 | 1954,10,229,1954-10 72 | 1954,11,203,1954-11 73 | 1954,12,229,1954-12 74 | 1955,1,242,1955-1 75 | 1955,2,233,1955-2 76 | 1955,3,267,1955-3 77 | 1955,4,269,1955-4 78 | 1955,5,270,1955-5 79 | 1955,6,315,1955-6 80 | 1955,7,364,1955-7 81 | 1955,8,347,1955-8 82 | 1955,9,312,1955-9 83 | 1955,10,274,1955-10 84 | 1955,11,237,1955-11 85 | 1955,12,278,1955-12 86 | 1956,1,284,1956-1 87 | 1956,2,277,1956-2 88 | 1956,3,317,1956-3 89 | 1956,4,313,1956-4 90 | 1956,5,318,1956-5 91 | 1956,6,374,1956-6 92 | 1956,7,413,1956-7 93 | 1956,8,405,1956-8 94 | 1956,9,355,1956-9 95 | 1956,10,306,1956-10 96 | 1956,11,271,1956-11 97 | 1956,12,306,1956-12 98 | 1957,1,315,1957-1 99 | 1957,2,301,1957-2 100 | 1957,3,356,1957-3 101 | 1957,4,348,1957-4 102 | 1957,5,355,1957-5 103 | 1957,6,422,1957-6 104 | 1957,7,465,1957-7 105 | 1957,8,467,1957-8 106 | 1957,9,404,1957-9 107 | 1957,10,347,1957-10 108 | 1957,11,305,1957-11 109 | 1957,12,336,1957-12 110 | 1958,1,340,1958-1 111 | 1958,2,318,1958-2 112 | 1958,3,362,1958-3 113 | 1958,4,348,1958-4 114 | 1958,5,363,1958-5 115 | 1958,6,435,1958-6 116 | 1958,7,491,1958-7 117 | 1958,8,505,1958-8 118 | 1958,9,404,1958-9 119 | 1958,10,359,1958-10 120 | 1958,11,310,1958-11 121 | 1958,12,337,1958-12 122 | 1959,1,360,1959-1 123 | 1959,2,342,1959-2 124 | 1959,3,406,1959-3 125 | 1959,4,396,1959-4 126 | 1959,5,420,1959-5 127 | 1959,6,472,1959-6 128 | 1959,7,548,1959-7 129 | 1959,8,559,1959-8 130 | 1959,9,463,1959-9 131 | 1959,10,407,1959-10 132 | 1959,11,362,1959-11 133 | 1959,12,405,1959-12 134 | 1960,1,417,1960-1 135 | 1960,2,391,1960-2 136 | 1960,3,419,1960-3 137 | 1960,4,461,1960-4 138 | 1960,5,472,1960-5 139 | 1960,6,535,1960-6 140 | 1960,7,622,1960-7 141 | 1960,8,606,1960-8 142 | 1960,9,508,1960-9 143 | 1960,10,461,1960-10 144 | 1960,11,390,1960-11 145 | 1960,12,432,1960-12 146 | -------------------------------------------------------------------------------- /Thanos-MachineLearning/无监督学习/聚类算法/script/聚类算法.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "source": [ 6 | "# 聚类算法" 7 | ], 8 | "metadata": { 9 | "collapsed": false 10 | } 11 | }, 12 | { 13 | "cell_type": "markdown", 14 | "source": [ 15 | "本任务,我们跳出有监督学习的框架,进入到无监督学习的领域。在之前的有监督学习的框架中,我们主要使用回归、分类模型学习因变量与各个自变量(特征)的关系,而无监督学习的一个重要特征就是没有因变量,只有自变量,这会导致两个问题的产生:\n", 16 | "- 如何建立无监督学习模型\n", 17 | "- 如何评价无监督学习模型\n", 18 | "\n", 19 | "事实上,只要把握以上两个问题,那么无监督学习也就掌握得十分清楚了。在进入无监督学习的具体算法学习开始之前,我们先来看看无监督学习任务的目的是什么?在无监督学习中,我们只知道我们手头上拥有一个数据集,每个数据集只有自变量(特征),数据中并没有正确的标签(因变量),因此我们需要在这组数据集上解决两个问题:\n", 20 | "- 问题1:数据集中的每个数据对应的正确标签是什么?\n", 21 | "- 问题2:数据集中的数据应该如何处理?\n", 22 | "\n", 23 | "针对“问题1:数据集中的每个数据对应的正确标签是什么?”,我们的任务就是通过数据预测最符合数据的正确标签是什么,比如:给出鸢尾花的花萼和花瓣的长度和宽度特征,预测该朵鸢尾花属于哪种鸢尾花(注意,这里的鸢尾花数据应该是没有因变量标签的),该问题的解决办法叫“聚类”(具体什么是聚类,聚类的相关原理我们在后面再讲)。聚类算法的一个典型应用就是——RFM模型,RFM模型是电商公司客户分群的一个重要模型,它是通过一个客户的“近期购买行为(Recency)”、“购买的总体频率(Frequency)”以及“购买金额 (Monetary)”三个维度来描述该客户价值状况,进而给客户打上标签,如:有价值客户、重要发展客户等等。\n", 24 | "\"聚类案例描述\"\n", 25 | "\n", 26 | "针对“问题2:数据集中的数据应该如何处理?”,我们的任务是通过无监督学习算法找到数据中有用的信息,这类无监督学习算法叫做——降维。在大数据的背景下,数据维度呈现爆炸式的增长,如果没一个特征逐一分析是否有用,是否应该留在模型中将会花费很长的时间 ,而且绝大部分的特征其实都是对模型没什么贡献的,而降维算法就是能在减少数据集中特征数量的同时,避免丢失太多信息并保持/改进模型性能的方法。本节内容我们先不涉及降维算法,将在降维章节具体学习。\n", 27 | "\n", 28 | "关于聚类算法的章节任务,我们主要学习以下内容:\n", 29 | "- 1、常用的聚类算法\n", 30 | " - 1.1 K-means聚类算法\n", 31 | " - 1.2 K-means算法的改进:K-means++\n", 32 | " - 1.3 高斯混合模型(GMM)\n", 33 | " - 1.4 基于密度的聚类方法:DBSCAN\n", 34 | " - 1.5 层次聚类算法\n", 35 | "- 2、聚类算法的内部性评价指标:\n", 36 | " - 2.1 轮廓系数(Silhouette Coefficient Index)\n", 37 | " - 2.2 CH分数(Calinski Harabasz Score)\n", 38 | " - 2.3 戴维森堡丁指数(DBI)\n", 39 | "- 3、聚类算法案例分析:淘宝用户数据RFM客户分群\n", 40 | " - 3.1 如何定义R、F、M的相关特征\n", 41 | " - 3.2 Kmeans算法得到用户分群\n", 42 | " - 3.3 客群分群的相关业务解释\n" 43 | ], 44 | "metadata": { 45 | "collapsed": false 46 | } 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 2, 51 | "outputs": [], 52 | "source": [ 53 | "# 引入数据科学常用工具库\n", 54 | "import numpy as np\n", 55 | "import pandas as pd\n", 56 | "import warnings\n", 57 | "import matplotlib.pyplot as plt\n", 58 | "%matplotlib inline\n", 59 | "warnings.filterwarnings(\"ignore\")\n", 60 | "pd.set_option(\"display.max_columns\", 100) # 设置最大列数\n", 61 | "pd.set_option(\"display.max_rows\", 1000) # 设置显示最大行数" 62 | ], 63 | "metadata": { 64 | "collapsed": false 65 | } 66 | }, 67 | { 68 | "cell_type": "markdown", 69 | "source": [ 70 | "## 1、常用的聚类算法\n", 71 | "\n", 72 | "聚类算法的主要工作是将数据集中的样本划分为若干个不相交的子集,每个样本子集叫做一个“簇”,也可以称为“类”。值得注意的是,聚类算法是不能事先知道业务从而得到某个类的,只能通过**数据的结构关系**得到数据中的结构存在的簇,如:聚类算法没有办法得到实际的客户分群中存在“”\n" 73 | ], 74 | "metadata": { 75 | "collapsed": false 76 | } 77 | }, 78 | { 79 | "cell_type": "markdown", 80 | "source": [], 81 | "metadata": { 82 | "collapsed": false 83 | } 84 | } 85 | ], 86 | "metadata": { 87 | "kernelspec": { 88 | "display_name": "Python 3", 89 | "language": "python", 90 | "name": "python3" 91 | }, 92 | "language_info": { 93 | "codemirror_mode": { 94 | "name": "ipython", 95 | "version": 2 96 | }, 97 | "file_extension": ".py", 98 | "mimetype": "text/x-python", 99 | "name": "python", 100 | "nbconvert_exporter": "python", 101 | "pygments_lexer": "ipython2", 102 | "version": "2.7.6" 103 | } 104 | }, 105 | "nbformat": 4, 106 | "nbformat_minor": 0 107 | } 108 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task3_整数规划/solution.txt: -------------------------------------------------------------------------------- 1 | Solution: 2 | Objective value = 1692353.9999999998 3 | y1 = 1.0 4 | y2 = 1.0 5 | y3 = 0.0 6 | y4 = 1.0 7 | y5 = 0.0 8 | y6 = 0.0 9 | y7 = 1.0 10 | z_1_1_p = 0.0 11 | z_1_1_n = 0.0 12 | z_1_2_p = 0.0 13 | z_1_2_n = 0.0 14 | z_1_3_p = 0.0 15 | z_1_3_n = 0.0 16 | z_1_4_p = 0.0 17 | z_1_4_n = 0.0 18 | z_1_5_p = 0.0 19 | z_1_5_n = 0.0 20 | z_1_6_p = 0.0 21 | z_1_6_n = 0.0 22 | z_1_7_p = 0.0 23 | z_1_7_n = 0.0 24 | z_1_8_p = 0.0 25 | z_1_8_n = 0.0 26 | z_1_9_p = 0.0 27 | z_1_9_n = 0.0 28 | z_1_10_p = 0.0 29 | z_1_10_n = 0.0 30 | z_1_11_p = 0.0 31 | z_1_11_n = 0.0 32 | z_1_12_p = 0.0 33 | z_1_12_n = 0.0 34 | z_1_13_p = 0.0 35 | z_1_13_n = 0.0 36 | z_1_14_p = 500.0000000000001 37 | z_1_14_n = 500.0000000000001 38 | z_1_15_p = 0.0 39 | z_1_15_n = 0.0 40 | z_2_1_p = 0.0 41 | z_2_1_n = 0.0 42 | z_2_2_p = 0.0 43 | z_2_2_n = 0.0 44 | z_2_3_p = 0.0 45 | z_2_3_n = 0.0 46 | z_2_4_p = 0.0 47 | z_2_4_n = 0.0 48 | z_2_5_p = 0.0 49 | z_2_5_n = 0.0 50 | z_2_6_p = 0.0 51 | z_2_6_n = 0.0 52 | z_2_7_p = 0.0 53 | z_2_7_n = 0.0 54 | z_2_8_p = 0.0 55 | z_2_8_n = 0.0 56 | z_2_9_p = 0.0 57 | z_2_9_n = 0.0 58 | z_2_10_p = 0.0 59 | z_2_10_n = 0.0 60 | z_2_11_p = 0.0 61 | z_2_11_n = 0.0 62 | z_2_12_p = 0.0 63 | z_2_12_n = 0.0 64 | z_2_13_p = 0.0 65 | z_2_13_n = 0.0 66 | z_2_14_p = 0.0 67 | z_2_14_n = 0.0 68 | z_2_15_p = 0.0 69 | z_2_15_n = 0.0 70 | z_3_1_p = 0.0 71 | z_3_1_n = 0.0 72 | z_3_2_p = 0.0 73 | z_3_2_n = 0.0 74 | z_3_3_p = 0.0 75 | z_3_3_n = 0.0 76 | z_3_4_p = 0.0 77 | z_3_4_n = 0.0 78 | z_3_5_p = 0.0 79 | z_3_5_n = 0.0 80 | z_3_6_p = 0.0 81 | z_3_6_n = 0.0 82 | z_3_7_p = 0.0 83 | z_3_7_n = 0.0 84 | z_3_8_p = 0.0 85 | z_3_8_n = 0.0 86 | z_3_9_p = 0.0 87 | z_3_9_n = 0.0 88 | z_3_10_p = 0.0 89 | z_3_10_n = 0.0 90 | z_3_11_p = 0.0 91 | z_3_11_n = 0.0 92 | z_3_12_p = 0.0 93 | z_3_12_n = 0.0 94 | z_3_13_p = 0.0 95 | z_3_13_n = 0.0 96 | z_3_14_p = 0.0 97 | z_3_14_n = 0.0 98 | z_3_15_p = 0.0 99 | z_3_15_n = 0.0 100 | z_4_1_p = 0.0 101 | z_4_1_n = 0.0 102 | z_4_2_p = 273.0000000000001 103 | z_4_2_n = 273.0000000000001 104 | z_4_3_p = 0.0 105 | z_4_3_n = 0.0 106 | z_4_4_p = 0.0 107 | z_4_4_n = 0.0 108 | z_4_5_p = 194.0 109 | z_4_5_n = 194.0 110 | z_4_6_p = 0.0 111 | z_4_6_n = 0.0 112 | z_4_7_p = 0.0 113 | z_4_7_n = 0.0 114 | z_4_8_p = 0.0 115 | z_4_8_n = 0.0 116 | z_4_9_p = 0.0 117 | z_4_9_n = 0.0 118 | z_4_10_p = 0.0 119 | z_4_10_n = 0.0 120 | z_4_11_p = 0.0 121 | z_4_11_n = 0.0 122 | z_4_12_p = 0.0 123 | z_4_12_n = 0.0 124 | z_4_13_p = 0.0 125 | z_4_13_n = 0.0 126 | z_4_14_p = 0.0 127 | z_4_14_n = 0.0 128 | z_4_15_p = 0.0 129 | z_4_15_n = 0.0 130 | z_5_1_p = 0.0 131 | z_5_1_n = 0.0 132 | z_5_2_p = 0.0 133 | z_5_2_n = 0.0 134 | z_5_3_p = 0.0 135 | z_5_3_n = 0.0 136 | z_5_4_p = 0.0 137 | z_5_4_n = 0.0 138 | z_5_5_p = 0.0 139 | z_5_5_n = 0.0 140 | z_5_6_p = 0.0 141 | z_5_6_n = 0.0 142 | z_5_7_p = 0.0 143 | z_5_7_n = 0.0 144 | z_5_8_p = 0.0 145 | z_5_8_n = 0.0 146 | z_5_9_p = 0.0 147 | z_5_9_n = 0.0 148 | z_5_10_p = 0.0 149 | z_5_10_n = 0.0 150 | z_5_11_p = 0.0 151 | z_5_11_n = 0.0 152 | z_5_12_p = 0.0 153 | z_5_12_n = 0.0 154 | z_5_13_p = 0.0 155 | z_5_13_n = 0.0 156 | z_5_14_p = 0.0 157 | z_5_14_n = 0.0 158 | z_5_15_p = 0.0 159 | z_5_15_n = 0.0 160 | z_6_1_p = 0.0 161 | z_6_1_n = 0.0 162 | z_6_2_p = 0.0 163 | z_6_2_n = 0.0 164 | z_6_3_p = 0.0 165 | z_6_3_n = 0.0 166 | z_6_4_p = 0.0 167 | z_6_4_n = 0.0 168 | z_6_5_p = 0.0 169 | z_6_5_n = 0.0 170 | z_6_6_p = 0.0 171 | z_6_6_n = 0.0 172 | z_6_7_p = 0.0 173 | z_6_7_n = 0.0 174 | z_6_8_p = 0.0 175 | z_6_8_n = 0.0 176 | z_6_9_p = 0.0 177 | z_6_9_n = 0.0 178 | z_6_10_p = 0.0 179 | z_6_10_n = 0.0 180 | z_6_11_p = 0.0 181 | z_6_11_n = 0.0 182 | z_6_12_p = 0.0 183 | z_6_12_n = 0.0 184 | z_6_13_p = 0.0 185 | z_6_13_n = 0.0 186 | z_6_14_p = 0.0 187 | z_6_14_n = 0.0 188 | z_6_15_p = 0.0 189 | z_6_15_n = 0.0 190 | z_7_1_p = 0.0 191 | z_7_1_n = 0.0 192 | z_7_2_p = 27.99999999999993 193 | z_7_2_n = 27.99999999999993 194 | z_7_3_p = 750.0 195 | z_7_3_n = 750.0 196 | z_7_4_p = 606.0 197 | z_7_4_n = 606.0 198 | z_7_5_p = 0.0 199 | z_7_5_n = 0.0 200 | z_7_6_p = 205.00000000000003 201 | z_7_6_n = 205.00000000000003 202 | z_7_7_p = 201.00000000000003 203 | z_7_7_n = 201.00000000000003 204 | z_7_8_p = 680.0 205 | z_7_8_n = 680.0 206 | z_7_9_p = 479.99999999999994 207 | z_7_9_n = 479.99999999999994 208 | z_7_10_p = 50.000000000000284 209 | z_7_10_n = 50.000000000000284 210 | z_7_11_p = 0.0 211 | z_7_11_n = 0.0 212 | z_7_12_p = 0.0 213 | z_7_12_n = 0.0 214 | z_7_13_p = 0.0 215 | z_7_13_n = 0.0 216 | z_7_14_p = 0.0 217 | z_7_14_n = 0.0 218 | z_7_15_p = 0.0 219 | z_7_15_n = 0.0 -------------------------------------------------------------------------------- /Wakanda-Optimization/Task0_前言/Preface.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 0 写在课程前面的话\n", 8 | "\n" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "metadata": {}, 14 | "source": [ 15 | "在食用课程之前$,$ 笔者想简单介绍一下这门课到底讲什么$,$ 又想传递给读者什么信息.\n", 16 | "\n", 17 | "相信有过数模参赛经验的小伙伴对优化这个词并不陌生$,$ 我们在比赛中总会遇到诸如\"确定最佳方案\"\"求出最佳的配比\"此类的\"最值\"问题$,$ 而在比赛细节中我们往往也需要\"拟合最佳的参数\"$,$ 这些都是大大小小的**优化问题**$,$ 而笔者想利用这门课抛砖引玉$,$ 当成是未接触过优化以及曾接触但不熟悉的同学的一块优化敲门砖. 本课程旨在以最简单但不平凡的例子渗透介绍优化范畴的两个核心内容: **优化建模**$,$ **下降算法**$,$ 而对于优化类的问题$,$ 如何建模与如何算法求解也是最重要的部分.\n", 18 | "\n", 19 | "我们涉及的优化模型由三个基本组成: 决策变量 $x_1,x_2,\\cdots,x_n$——影响目标的自变量$,$ 目标函数 $f(x_1,x_2,\\cdots,x_n)$——确定最佳决策的指标依据$,$ 约束条件 $c_i(x_1,x_2,\\cdots,x_n)\\leqslant(=,\\geqslant) 0$——现实中的限制. 由于本次课程讨论的大多数都是最简单的线性函数$,$ 为表述简单$,$ 我们会尽可能多的采用向量语言: 如利用向量 $\\boldsymbol{x}=(x_1,x_2,\\cdots,x_n)^T$ 表示决策变量$,$ 或利用矩阵来表达如下的约束\n", 20 | "\n", 21 | "$$A\\boldsymbol{x}\\leqslant \\boldsymbol{b}\\Leftrightarrow \n", 22 | "\\begin{cases}\n", 23 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n\\leqslant b_1\\\\\n", 24 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n\\leqslant b_2\\\\\n", 25 | "\\vdots\\\\\n", 26 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n\\leqslant b_m\\\\\n", 27 | "\\end{cases},A=\\begin{bmatrix}\n", 28 | "a_{11}&a_{12}&\\cdots&a_{1n}\\\\\n", 29 | "a_{21}&a_{22}&\\cdots&a_{2n}\\\\\n", 30 | "\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 31 | "a_{m1}&a_{m2}&\\cdots&a_{mn}\\\\\n", 32 | "\\end{bmatrix}.$$\n", 33 | "\n", 34 | "此外$,$ 我们用 $R,R^n$ 代表实数域以及 $n$ 维实数 (向量) 空间$,f:R^n\\to R$ 代表 $n$ 元实值函数. \n", 35 | "\n", 36 | "用规范化的语言$,$ 我们现实中遇到的所有优化问题都可描述为如下的形式:\n", 37 | "\n", 38 | "\\begin{align}\n", 39 | "\\tag{0.1}\\label{eq 0.1}&\\min f(\\boldsymbol{x})\\\\\n", 40 | "s.t.&\\tag{0.2}\\label{eq 0.2}\\begin{cases}\n", 41 | "c_i(\\boldsymbol{x})\\leqslant 0,i=1,2,\\cdots,m\\\\\n", 42 | "c_j(\\boldsymbol{x})=0,j=1,2,\\cdots,k\n", 43 | "\\end{cases}\n", 44 | "\\end{align}\n", 45 | "\n", 46 | "其中$,\\boldsymbol{x}\\in R^n,f:R^n\\to R,$ 并且我们不要求目标函数 $f$ 以及约束函数 $c_i,c_j$ 有什么多余的性质如可微 (这一点对刚入门的初学者而言是比较反直觉的)$,$ 对于求极大值的问题$,$ 可以等价写为\n", 47 | "\n", 48 | "$$\\max f(\\boldsymbol{x})\\Leftrightarrow \\min -f(\\boldsymbol{x}).$$\n", 49 | "\n", 50 | "优化问题 $\\eqref{eq 0.1}$ 中$,$ 约束 $\\eqref{eq 0.2}$ 构成的子集称为**可行域** $D,$ $D$ 中的点是符合 $\\eqref{eq 0.1}$ 要求的点$,$ 称为**可行解**$,$ 令 $f(\\boldsymbol{x})$ 最小的可行解 $\\boldsymbol{x}_0$ 称为**最优解**$,$ 我们一般用\n", 51 | "\n", 52 | "$$\\mathrm{argmin} \\{f(\\boldsymbol{x})\\mid \\boldsymbol{x}\\in D\\}$$\n", 53 | "\n", 54 | "记为 $\\eqref{eq 0.1}$ 的最优解. 当 $D=R^n$ 时 $\\eqref{eq 0.1}$ 称为**无约束优化问题**$,$ 相应地 $D\\subsetneq R^n$ 时称之为**约束优化问题**. \n", 55 | "\n", 56 | "\n", 57 | "\n", 58 | "在高中的时候我们就已经学过利用导数零点求极值点的方式$,$ 然而对于一个大规模的优化问题而言 (决策变量多$,$ 即 $\\boldsymbol{x}$ 维数高)$,$ 求导 (梯度) 并非那么简单$,$ 而且目标函数 $f$ 不一定可导$,$ 同时局部最优值(最大值或最小值)不一定是全局最优值(最大值或最小值,凸问题的性质)$,$ 这使得我们求解难度大大攀升. 在一般的问题求解中$,$ 我们往往是采用**迭代**的**下降算法**求解局部的“最优值”.\n", 59 | "\n", 60 | "我们涉及的下降算法基本思想是生成一列递减的点 $\\{\\boldsymbol{x}_n\\}_{n=1}^{\\infty}$ 来逼近 $\\eqref{eq 0.1}$ 的最优解$,$ 一般由以下几步组成:\n", 61 | "\n", 62 | "1. 确定初始解 $\\boldsymbol{x}_1$.\n", 63 | "\n", 64 | "2. 确定迭代方式 $\\boldsymbol{x}_{n+1}=g(\\boldsymbol{x}_n)$ 使得 $f(\\boldsymbol{x}_{n+1})\\leqslant f(\\boldsymbol{x}_n),n=1,2,\\cdots$.\n", 65 | "\n", 66 | "3. 确定终止准则 (计算机只能迭代有限点$,$ 我们希望在有限步能尽可能接近最优解)——当 $\\boldsymbol{x}_n$ 与 $f(\\boldsymbol{x}_n)$ 满足什么条件时$,$ 认为 $\\boldsymbol{x}_n$ 最小值的近似点$,$ 终止算法.\n", 67 | "\n", 68 | "\n", 69 | "迭代方式是下降算法最核心的一步$,$ 它决定算法生成的点列能否收敛得到最优解$,$ 迭代步长决定算法收敛的速度 (即算法运行的时间)$,$ 这在求解实际的优化问题过程中是非常关键的内容.\n", 70 | "\n", 71 | "本课程介绍的是最简单的一类优化问题: 目标函数与约束条件都是线性的$,$ 称为**线性规划问题(模型)**$,$ 在日常生活中蕴含着非常多地线性规划问题$,$ 如生产策略$,$ 工作指派等等$,$ 所以建立线性规划模型事实上是在现实生活中非常常见的$,$ 而由于性质的优越$,$ 线性规划问题的下降算法设计也是非常简单的——即我们接下来要学习的单纯形法与分支定界法.\n", 72 | "\n", 73 | "笔者在这里$,$ 借用比赛真题$,$ 详细展开线性规划模型如何应用到题目的建模中$,$ 以及讨论建模后如何设计对应的算法进行求解$,$ 带同学们感受建模与设计算法过程中的思路$,$ 以此让同学们熟悉优化范畴的问题$,$ 激发同学们解决优化问题的思维. 而由于课程设置是入门性的$,$ 加之笔者笔力与时间有限$,$ 故在本次课程中没有介绍更高级的优化知识$,$ 如非线性优化问题 (连续变量类)$,$ 组合优化问题 (离散变量类) 相关的建模以及理论知识$,$ 当然$,$ 笔者希望同学们在本次课程中能体会到优化建模的魅力$,$ 更加有信心的去学习更高深的优化知识.
\n", 74 | "\n", 75 | "
\n" 76 | ] 77 | } 78 | ], 79 | "metadata": { 80 | "kernelspec": { 81 | "display_name": "Python 3", 82 | "language": "python", 83 | "name": "python3" 84 | }, 85 | "language_info": { 86 | "codemirror_mode": { 87 | "name": "ipython", 88 | "version": 3 89 | }, 90 | "file_extension": ".py", 91 | "mimetype": "text/x-python", 92 | "name": "python", 93 | "nbconvert_exporter": "python", 94 | "pygments_lexer": "ipython3", 95 | "version": "3.8.8" 96 | }, 97 | "latex_envs": { 98 | "LaTeX_envs_menu_present": true, 99 | "autoclose": false, 100 | "autocomplete": true, 101 | "bibliofile": "biblio.bib", 102 | "cite_by": "apalike", 103 | "current_citInitial": 1, 104 | "eqLabelWithNumbers": true, 105 | "eqNumInitial": 1, 106 | "hotkeys": { 107 | "equation": "Ctrl-E", 108 | "itemize": "Ctrl-I" 109 | }, 110 | "labels_anchors": false, 111 | "latex_user_defs": false, 112 | "report_style_numbering": false, 113 | "user_envs_cfg": false 114 | } 115 | }, 116 | "nbformat": 4, 117 | "nbformat_minor": 2 118 | } 119 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task5_灵敏度分析/Task5_Sensitivity.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 5 问题引导的灵敏性分析" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## 5.1 题目简介:2000年国赛B题 Quadra Kill\n", 15 | "\n", 16 | "![rat](fig/fig4.1.png)\n", 17 | "\n", 18 | "如上图所示$,$要铺设一条 $A_1\\rightarrow A_2\\rightarrow \\cdots\\rightarrow A_{15}$ 的输送天然气的主管道$,$经筛选后可以生产这种主管道钢管的钢厂有 $S_1,S_2,\\cdots,S_7$。图中粗线表示铁路$,$单细线表示公路$,$双细线表示要铺设的管道(假设沿管道或者原来有公路$,$或者建有施工公路)$,$圆圈表示火车站$,$每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km).\n", 19 | "\n", 20 | "为方便计$,1$ km 主管道钢管称为 $1$ 单位钢管.\n", 21 | "\n", 22 | "一个钢厂如果承担制造这种钢管$,$ 至少需要生产 $500$ 个单位.钢厂 $S_i$ 在指定期限内能生产该钢管的最大数量为 $s_i$ 个单位$,$钢管出厂销价 $1$ 单位钢管为 $p_i$ 万元$,$ 如下表:\n", 23 | "\n", 24 | "$i$|$1$|$2$|$3$|$4$|$5$|$6$|$7$\n", 25 | ":--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:\n", 26 | "$s_i$|$800$|$800$|$1000$|$2000$|$2000$|$2000$|$3000$\n", 27 | "$p_i$|$160$|$155$|$155$|$160$|$155$|$150$|$160$\n", 28 | "$1$ 单位钢管的铁路运价如下表:\n", 29 | "\n", 30 | "里程(km)\t|$\\leqslant 300$\t|$301$~$350$\t|$351$~$400$\t|$401$~$450$\t|$451$~$500$\n", 31 | ":--:|:--:|:--:|:--:|:--:|:--:\n", 32 | "运价(万元)\t|$20$\t|$23$\t|$26$\t|$29$\t|$32$\n", 33 | "\n", 34 | "里程(km)\t|$501$~$600$\t|$601$~$700$\t|$701$~$800$\t|$801$~$900$\t|$901$~$1000$\n", 35 | ":--:|:--:|:--:|:--:|:--:|:--:\n", 36 | "运价(万元)\t|$37$\t|$44$\t|$50$\t|$55$\t|$60$\n", 37 | "\n", 38 | "$1000$ km以上每增加 $1$ 至 $100$ km 运价增加 $5$ 万元.\n", 39 | "\n", 40 | "公路运输费用为1单位钢管每公里 $0.1$ 万元 (不足整公里部分按整公里计算)$,$ 铺设费用为每公里 $0.1$ 万元.\n", 41 | "\n", 42 | "钢管可由铁路$,$公路运往铺设地点 (不只是运到点 $A_1,A_2,\\cdots,A_{15},$而是管道全线).\n", 43 | "\n", 44 | "**问题一(已解决):** 请制定一个主管道钢管的订购和运输计划$,$使总费用最小(给出总费用).\n", 45 | "\n", 46 | "**问题四:** 请就问题一的模型分析:哪个钢厂钢管的销价的变化对购运计划和总费用影响最大,哪个钢厂钢管的产量的上限的变化对购运计划和总费用的影响最大,并给出相应的数字结果." 47 | ] 48 | }, 49 | { 50 | "cell_type": "markdown", 51 | "metadata": {}, 52 | "source": [ 53 | "## 5.2 灵敏性分析的引入\n", 54 | "\n", 55 | "### 5.2.1 如何探究参数 (钢管销价 $p_i$ 以及产量上线 $s_i$) 对结果的影响\n", 56 | "\n", 57 | "我们回顾 Task 3 中建立起来的完善的混合整数规划模型\n", 58 | "\n", 59 | "\\begin{align}\n", 60 | "&\\min \\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-}),\\\\\n", 61 | "s.t. &\\begin{cases}\n", 62 | "500 y_i\\leqslant \\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,15\\\\\n", 63 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant s_iy_i,i=1,2,\\cdots,15\\\\\n", 64 | "\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant L\\\\\n", 65 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 66 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\\\\\n", 67 | "y_i=0,1,i=1,2,\\cdots,7\\\\\n", 68 | "\\end{cases}\n", 69 | "\\end{align}\n", 70 | "\n", 71 | "问题四希望我们分析的是 $p_i$ 以及 $s_i$ 变化对购运计划的影响并且量化相应结果$,$ 那么既然是探究变化$,p_i,s_i$ 就从固定的数值变成了变动的参数值$,$ 记购运计划的最小总成本为 $W_{total-min},$ 本质上我们便是在分析函数 $W_{total-min}(\\boldsymbol{p},\\boldsymbol{s}),$ 其中 $\\boldsymbol{p}=(p_1,p_2,\\cdots,p_7),\\boldsymbol{s}=(s_1,s_2,\\cdots,s_7)$.\n", 72 | "\n", 73 | "直接的想法并非那么容易实现: 尽管 $W_{total-min}$ 看似是 $p_i$ 的线性函数$,$ 但却嵌套了一个求最小值的操作$,$\n", 74 | "$$W_{total-min}(\\boldsymbol{p})=\\min \\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-}),$$\n", 75 | "这使得函数形式表达起来非常麻烦$,$ 更别说出现在约束中的 $s_i$ 了$!$ 我们需要找到另外的捷径去分析 $\\boldsymbol{p},\\boldsymbol{s}$ 对 $W_{total-min}$ 的影响——既然分析的是变化的影响$,$ 我们用 $\\Delta W_{total-min},\\Delta \\boldsymbol{p},\\Delta \\boldsymbol{s}$ 来表示 $W_{total-min},\\boldsymbol{p},\\boldsymbol{s}$ 的变化量$,$ 这不就是变化率 $\\dfrac{\\Delta W_{total-min}}{\\Delta \\boldsymbol{p}},\\dfrac{\\Delta W_{total-min}}{\\Delta \\boldsymbol{s}}$ 吗$?$ 那么我们可以从两种方式入手:\n", 76 | "\n", 77 | "1. 求 $W_{total-min}$ 关于 $\\boldsymbol{p},\\boldsymbol{s}$ 的梯度$,$ 这依赖函数有简单明确的表达式$,$ 所以不适合解决问题四.\n", 78 | "\n", 79 | "2. 离散化: 不求函数的微分$,$ 而是将 $\\Delta \\boldsymbol{p},\\Delta \\boldsymbol{s}$ 看作一个非常小的常数$,$ 求差分 $\\Delta W_{total-min}$. \n", 80 | "\n", 81 | "方式 2 其实是我们非常熟悉的——物理实验中分析变化的常用手段控制变量法$,$ 分析单个变量 $p_i$ 或 $s_i$ 可以固定其他变量不变$,$ 只让分析的变量开始变动$,$ 如$,$ 限制其他参数不变$,$ 让 $p_5$ 以 $1$ 万元/单位为变动步长在 $140\\sim 165$ 上变动$,$ 接着求解出相应的 $W_{total-min}$. 我们可以从参数的变化所引起的变量变化中。如果参数的小范围波动,模型输出的结果会有剧烈波动,那么说明模型的对参数比较敏感,需要根据具体背景设置最优参数;若参数的变化对模型结果的影响较小,说明该模型是鲁棒的,比较稳定.
\n", 82 | "在国赛这样的数学建模竞赛中,灵敏性分析是非常重要的环节,你需要给出你设置的参数的合理性,枚举分析这一手段. 通常是固定其他参数,对单一个参数给出一个参数池(给定参数的范围与步长),遍历这些参数进行建模,然后观测模型输出的波动情况,从而分析模型的稳定性.\n", 83 | "\n", 84 | "\n", 85 | "\n", 86 | "相似的$,$ 我们可以求出其他参数对最优值 $W_{total-min}$ 的变化影响$,$ 再利用比值 $\\dfrac{\\Delta W_{total-min}}{\\Delta p_i},\\dfrac{\\Delta W_{total-min}}{\\Delta s_i}$ 消除量纲之间的影响来统一比较.\n", 87 | "\n", 88 | "### 5.2.2 为什么要做这样的参数分析呢$?$\n", 89 | "\n", 90 | "对于赛题我们仅仅只是将其看作一道需要解决的数学题目$,$ 然而建模是需要贴近现实的$,$ 我们需要考虑的不仅仅是得出一个答案$,$ 还要做更完善的分析: 以该题为例$,$ 钢厂由于现实生活中不断在变动的供需情况$,$ 供应上限以及销价是不稳定的$,$ 抑或是在运输过程中还会产生其他的费用如钢管在运输途中的损耗$,$ 突发情况的支出$,$ 这些是无法估计的. 在这种不稳定的情况下$,$ 我们需要确保能分析出: 模型对什么因素的变动是敏感的$,$ 有多敏感$?$ 而模型在参数变动后会不会在结果上稳定 (与原结果偏离量是否大 $?$ 会不会出现特异的结果$?$)$?$ 这便是建模中不可或缺的一环——**(参数)灵敏性$,$ (模型)鲁棒性分析**.\n" 91 | ] 92 | }, 93 | { 94 | "cell_type": "markdown", 95 | "metadata": {}, 96 | "source": [ 97 | "
\n", 98 | "

恭喜你完成了学习!

\n", 99 | "

到这里,我们已经完成了一个数学建模案例的全流程. 一般地,数学建模的过程从抽象建模,模型求解,再到模型的检验优化,它总是有迹可循的. 在写这份教程的过程中我们一直想传达的一个观点是:学习建模,绝对不是简单知识点的学习! 建模的过程更多是如何将实际生活中每一步的决策转化为数学的模式. 之所以这么做是因为生活中许多看似不同的问题,本质上都可以采用相同的数学工具解决,这就是数学建模的意义所在~


\n", 100 | "由于我们也在探索的路上,这份教程也有不足之处,还希望您看的过程多与我们交流,一起讲这个系列完善下去,非常期待您的贡献!但愿这份教程,能在您学习优化的路上,给你一些小小的启示!\n", 101 | " \n", 102 | "
\n", 103 | "


最后,江湖路远,但我们一定会再相见!--GitModel极客数模 团队

\n", 104 | "
" 105 | ] 106 | } 107 | ], 108 | "metadata": { 109 | "kernelspec": { 110 | "display_name": "Python 3", 111 | "language": "python", 112 | "name": "python3" 113 | }, 114 | "language_info": { 115 | "codemirror_mode": { 116 | "name": "ipython", 117 | "version": 3 118 | }, 119 | "file_extension": ".py", 120 | "mimetype": "text/x-python", 121 | "name": "python", 122 | "nbconvert_exporter": "python", 123 | "pygments_lexer": "ipython3", 124 | "version": "3.8.8" 125 | }, 126 | "latex_envs": { 127 | "LaTeX_envs_menu_present": true, 128 | "autoclose": false, 129 | "autocomplete": true, 130 | "bibliofile": "biblio.bib", 131 | "cite_by": "apalike", 132 | "current_citInitial": 1, 133 | "eqLabelWithNumbers": true, 134 | "eqNumInitial": 1, 135 | "hotkeys": { 136 | "equation": "Ctrl-E", 137 | "itemize": "Ctrl-I" 138 | }, 139 | "labels_anchors": false, 140 | "latex_user_defs": false, 141 | "report_style_numbering": false, 142 | "user_envs_cfg": false 143 | } 144 | }, 145 | "nbformat": 4, 146 | "nbformat_minor": 2 147 | } 148 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /Data-Story/Task5_上_数据可视化/data/element.csv: -------------------------------------------------------------------------------- 1 | atomic number,symbol,name,atomic mass,CPK,electronic configuration,electronegativity,atomic radius,ion radius,van der Waals radius,IE-1,EA,standard state,bonding type,melting point,boiling point,density,metal,year discovered,group,period 2 | 1,H,Hydrogen,1.00794,#FFFFFF,1s1,2.2,37.0,,120.0,1312.0,-73.0,gas,diatomic,14,20,8.99E-05,nonmetal,1766,1,1 3 | 2,He,Helium,4.002602,#D9FFFF,1s2,,32.0,,140.0,2372.0,0.0,gas,atomic,,4,0,noble gas,1868,18,1 4 | 3,Li,Lithium,6.941,#CC80FF,[He] 2s1,0.98,134.0,76 (+1),182.0,520.0,-60.0,solid,metallic,454,1615,0.54,alkali metal,1817,1,2 5 | 4,Be,Beryllium,9.012182,#C2FF00,[He] 2s2,1.57,90.0,45 (+2),,900.0,0.0,solid,metallic,1560,2743,1.85,alkaline earth metal,1798,2,2 6 | 5,B,Boron,10.811,#FFB5B5,[He] 2s2 2p1,2.04,82.0,27 (+3),,801.0,-27.0,solid,covalent network,2348,4273,2.46,metalloid,1807,13,2 7 | 6,C,Carbon,12.0107,#909090,[He] 2s2 2p2,2.55,77.0,16 (+4),170.0,1087.0,-154.0,solid,covalent network,3823,4300,2.26,nonmetal,Ancient,14,2 8 | 7,N,Nitrogen,14.0067,#3050F8,[He] 2s2 2p3,3.04,75.0,146 (-3),155.0,1402.0,-7.0,gas,diatomic,63,77,0,nonmetal,1772,15,2 9 | 8,O,Oxygen,15.9994,#FF0D0D,[He] 2s2 2p4,3.44,73.0,140 (-2),152.0,1314.0,-141.0,gas,diatomic,55,90,0,nonmetal,1774,16,2 10 | 9,F,Fluorine,18.9984032,#90E050,[He] 2s2 2p5,3.98,71.0,133 (-1),147.0,1681.0,-328.0,gas,atomic,54,85,0,halogen,1670,17,2 11 | 10,Ne,Neon,20.1797,#B3E3F5,[He] 2s2 2p6,,69.0,,154.0,2081.0,0.0,gas,atomic,25,27,0,noble gas,1898,18,2 12 | 11,Na,Sodium,22.98976928,#AB5CF2,[Ne] 3s1,0.93,154.0,102 (+1),227.0,496.0,-53.0,solid,metallic,371,1156,0.97,alkali metal,1807,1,3 13 | 12,Mg,Magnesium,24.3050,#8AFF00,[Ne] 3s2,1.31,130.0,72 (+2),173.0,738.0,0.0,solid,metallic,923,1363,1.74,alkaline earth metal,1808,2,3 14 | 13,Al,Aluminum,26.9815386,#BFA6A6,[Ne] 3s2 3p1,1.61,118.0,53.5 (+3),,578.0,-43.0,solid,metallic,933,2792,2.7,metal,Ancient,13,3 15 | 14,Si,Silicon,28.0855,#F0C8A0,[Ne] 3s2 3p2,1.9,111.0,40 (+4),210.0,787.0,-134.0,solid,metallic,1687,3173,2.33,metalloid,1854,14,3 16 | 15,P,Phosphorus,30.973762,#FF8000,[Ne] 3s2 3p3,2.19,106.0,44 (+3),180.0,1012.0,-72.0,solid,covalent network,317,554,1.82,nonmetal,1669,15,3 17 | 16,S,Sulfur,32.065,#FFFF30,[Ne] 3s2 3p4,2.58,102.0,184 (-2),180.0,1000.0,-200.0,solid,covalent network,388,718,1.96,nonmetal,Ancient,16,3 18 | 17,Cl,Chlorine,35.453,#1FF01F,[Ne] 3s2 3p5,3.16,99.0,181 (-1),175.0,1251.0,-349.0,gas,covalent network,172,239,0,halogen,1774,17,3 19 | 18,Ar,Argon,39.948,#80D1E3,[Ne] 3s2 3p6,,97.0,,188.0,1521.0,0.0,gas,atomic,84,87,0,noble gas,1894,18,3 20 | 19,K,Potassium,39.0983,#8F40D4,[Ar] 4s1,0.82,196.0,138 (+1),275.0,419.0,-48.0,solid,metallic,337,1032,0.86,alkali metal,1807,1,4 21 | 20,Ca,Calcium,40.078,#3DFF00,[Ar] 4s2,1.0,174.0,100 (+2),,590.0,-2.0,solid,metallic,1115,1757,1.55,alkaline earth metal,Ancient,2,4 22 | 21,Sc,Scandium,44.955912,#E6E6E6,[Ar] 3d1 4s2,1.36,144.0,74.5 (+3),,633.0,-18.0,solid,metallic,1814,3103,2.99,transition metal,1876,3,4 23 | 22,Ti,Titanium,47.867,#BFC2C7,[Ar] 3d2 4s2,1.54,136.0,86 (+2),,659.0,-8.0,solid,metallic,1941,3560,4.51,transition metal,1791,4,4 24 | 23,V,Vanadium,50.9415,#A6A6AB,[Ar] 3d3 4s2,1.63,125.0,79 (+2),,651.0,-51.0,solid,metallic,2183,3680,6.11,transition metal,1803,5,4 25 | 24,Cr,Chromium,51.9961,#8A99C7,[Ar] 3d5 4s1,1.66,127.0,80 (+2*),,653.0,-64.0,solid,metallic,2180,2944,7.14,transition metal,Ancient,6,4 26 | 25,Mn,Manganese,54.938045,#9C7AC7,[Ar] 3d5 4s2,1.55,139.0,67 (+2),,717.0,0.0,solid,metallic,1519,2334,7.47,transition metal,1774,7,4 27 | 26,Fe,Iron,55.845,#E06633,[Ar] 3d6 4s2,1.83,125.0,78 (+2*),,763.0,-16.0,solid,metallic,1811,3134,7.87,transition metal,Ancient,8,4 28 | 27,Co,Cobalt,58.933195,#F090A0,[Ar] 3d7 4s2,1.88,126.0,74.5 (+2*),,760.0,-64.0,solid,metallic,1768,3200,8.9,transition metal,Ancient,9,4 29 | 28,Ni,Nickel,58.6934,#50D050,[Ar] 3d8 4s2,1.91,121.0,69 (+2),163.0,737.0,-112.0,solid,metallic,1728,3186,8.91,transition metal,1751,10,4 30 | 29,Cu,Copper,63.546,#C88033,[Ar] 3d10 4s1,1.9,138.0,77 (+1),140.0,746.0,-118.0,solid,metallic,1358,3200,8.92,transition metal,Ancient,11,4 31 | 30,Zn,Zinc,65.38,#7D80B0,[Ar] 3d10 4s2,1.65,131.0,74 (+2),139.0,906.0,0.0,solid,metallic,693,1180,7.14,transition metal,1746,12,4 32 | 31,Ga,Gallium,69.723,#C28F8F,[Ar] 3d10 4s2 4p1,1.81,126.0,62 (+3),187.0,579.0,-29.0,solid,metallic,303,2477,5.9,metal,1875,13,4 33 | 32,Ge,Germanium,72.64,#668F8F,[Ar] 3d10 4s2 4p2,2.01,122.0,73 (+2),,762.0,-119.0,solid,metallic,1211,3093,5.32,metalloid,1886,14,4 34 | 33,As,Arsenic,74.92160,#BD80E3,[Ar] 3d10 4s2 4p3,2.18,119.0,58 (+3),185.0,947.0,-78.0,solid,metallic,1090,887,5.73,metalloid,Ancient,15,4 35 | 34,Se,Selenium,78.96,#FFA100,[Ar] 3d10 4s2 4p4,2.55,116.0,198 (-2),190.0,941.0,-195.0,solid,metallic,494,958,4.82,nonmetal,1817,16,4 36 | 35,Br,Bromine,79.904,#A62929,[Ar] 3d10 4s2 4p5,2.96,114.0,196 (-1),185.0,1140.0,-325.0,liquid,covalent network,266,332,3.12,halogen,1826,17,4 37 | 36,Kr,Krypton,83.798,#5CB8D1,[Ar] 3d10 4s2 4p6,,110.0,,202.0,1351.0,0.0,gas,atomic,116,120,0,noble gas,1898,18,4 38 | 37,Rb,Rubidium,85.4678,#702EB0,[Kr] 5s1,0.82,211.0,152 (+1),,403.0,-47.0,solid,metallic,312,961,1.53,alkali metal,1861,1,5 39 | 38,Sr,Strontium,87.62,#00FF00,[Kr] 5s2,0.95,192.0,118 (+2),,550.0,-5.0,solid,metallic,1050,1655,2.63,alkaline earth metal,1790,2,5 40 | 39,Y,Yttrium,88.90585,#94FFFF,[Kr] 4d1 5s2,1.22,162.0,90 (+3),,600.0,-30.0,solid,metallic,1799,3618,4.47,transition metal,1794,3,5 41 | 40,Zr,Zirconium,91.224,#94E0E0,[Kr] 4d2 5s2,1.33,148.0,72 (+4),,640.0,-41.0,solid,metallic,2128,4682,6.51,transition metal,1789,4,5 42 | 41,Nb,Niobium,92.90638,#73C2C9,[Kr] 4d4 5s1,1.6,137.0,72 (+3),,652.0,-86.0,solid,metallic,2750,5017,8.57,transition metal,1801,5,5 43 | 42,Mo,Molybdenum,95.96,#54B5B5,[Kr] 4d5 5s1,2.16,145.0,69 (+3),,684.0,-72.0,solid,metallic,2896,4912,10.28,transition metal,1778,6,5 44 | 43,Tc,Technetium,[98],#3B9E9E,[Kr] 4d5 5s2,1.9,156.0,64.5 (+4),,702.0,-53.0,solid,metallic,2430,4538,11.5,transition metal,1937,7,5 45 | 44,Ru,Ruthenium,101.07,#248F8F,[Kr] 4d7 5s1,2.2,126.0,68 (+3),,710.0,-101.0,solid,metallic,2607,4423,12.37,transition metal,1827,8,5 46 | 45,Rh,Rhodium,102.90550,#0A7D8C,[Kr] 4d8 5s1,2.28,135.0,66.5 (+3),,720.0,-110.0,solid,metallic,2237,3968,12.45,transition metal,1803,9,5 47 | 46,Pd,Palladium,106.42,#006985,[Kr] 4d10,2.2,131.0,59 (+1),163.0,804.0,-54.0,solid,metallic,1828,3236,12.02,transition metal,1803,10,5 48 | 47,Ag,Silver,107.8682,#C0C0C0,[Kr] 4d10 5s1,1.93,153.0,115 (+1),172.0,731.0,-126.0,solid,metallic,1235,2435,10.49,transition metal,Ancient,11,5 49 | 48,Cd,Cadmium,112.411,#FFD98F,[Kr] 4d10 5s2,1.69,148.0,95 (+2),158.0,868.0,0.0,solid,metallic,594,1040,8.65,transition metal,1817,12,5 50 | 49,In,Indium,114.818,#A67573,[Kr] 4d10 5s2 5p1,1.78,144.0,80 (+3),193.0,558.0,-29.0,solid,metallic,430,2345,7.31,metal,1863,13,5 51 | 50,Sn,Tin,118.710,#668080,[Kr] 4d10 5s2 5p2,1.96,141.0,112 (+2),217.0,709.0,-107.0,solid,metallic,505,2875,7.31,metal,Ancient,14,5 52 | 51,Sb,Antimony,121.760,#9E63B5,[Kr] 4d10 5s2 5p3,2.05,138.0,76 (+3),,834.0,-103.0,solid,metallic,904,1860,6.7,metalloid,Ancient,15,5 53 | 52,Te,Tellurium,127.60,#D47A00,[Kr] 4d10 5s2 5p4,2.1,135.0,221 (-2),206.0,869.0,-190.0,solid,metallic,723,1261,6.24,metalloid,1782,16,5 54 | 53,I,Iodine,126.90447,#940094,[Kr] 4d10 5s2 5p5,2.66,133.0,220 (-1),198.0,1008.0,-295.0,solid,covalent network,387,457,4.94,halogen,1811,17,5 55 | 54,Xe,Xenon,131.293,#429EB0,[Kr] 4d10 5s2 5p6,,130.0,48 (+8),216.0,1170.0,0.0,gas,atomic,161,165,0.01,noble gas,1898,18,5 56 | 55,Cs,Cesium,132.9054519,#57178F,[Xe] 6s1,0.79,225.0,167 (+1),,376.0,-46.0,solid,metallic,302,944,1.88,alkali metal,1860,1,6 57 | 56,Ba,Barium,137.327,#00C900,[Xe] 6s2,0.89,198.0,135 (+2),,503.0,-14.0,solid,metallic,1000,2143,3.51,alkaline earth metal,1808,2,6 58 | 57,La,Lanthanum,138.90547,#70D4FF,[Xe] 5d1 6s2,1.1,169.0,103.2 (+3),,538.0,-48.0,solid,metallic,1193,3737,6.15,lanthanoid,1839,-,6 59 | 58,Ce,Cerium,140.116,#FFFFC7,[Xe] 4f1 5d1 6s2,1.12,,102 (+3),,534.0,-50.0,solid,metallic,1071,3633,6.69,lanthanoid,1803,-,6 60 | 59,Pr,Praseodymium,140.90765,#D9FFC7,[Xe] 4f3 6s2,1.13,,99 (+3),,527.0,-50.0,solid,metallic,1204,3563,6.64,lanthanoid,1885,-,6 61 | 60,Nd,Neodymium,144.242,#C7FFC7,[Xe] 4f4 6s2,1.14,,129 (+2),,533.0,-50.0,solid,metallic,1294,3373,7.01,lanthanoid,1885,-,6 62 | 61,Pm,Promethium,[145],#A3FFC7,[Xe] 4f5 6s2,1.13,,97 (+3),,540.0,-50.0,solid,metallic,1373,3273,7.26,lanthanoid,1947,-,6 63 | 62,Sm,Samarium,150.36,#8FFFC7,[Xe] 4f6 6s2,1.17,,122 (+2),,545.0,-50.0,solid,metallic,1345,2076,7.35,lanthanoid,1853,-,6 64 | 63,Eu,Europium,151.964,#61FFC7,[Xe] 4f7 6s2,1.2,,117 (+2),,547.0,-50.0,solid,metallic,1095,1800,5.24,lanthanoid,1901,-,6 65 | 64,Gd,Gadolinium,157.25,#45FFC7,[Xe] 4f7 5d1 6s2,1.2,,93.8 (+3),,593.0,-50.0,solid,metallic,1586,3523,7.9,lanthanoid,1880,-,6 66 | 65,Tb,Terbium,158.92535,#30FFC7,[Xe] 4f9 6s2,1.2,,92.3 (+3),,566.0,-50.0,solid,metallic,1629,3503,8.22,lanthanoid,1843,-,6 67 | 66,Dy,Dysprosium,162.500,#1FFFC7,[Xe] 4f10 6s2,1.22,,107 (+2),,573.0,-50.0,solid,metallic,1685,2840,8.55,lanthanoid,1886,-,6 68 | 67,Ho,Holmium,164.93032,#00FF9C,[Xe] 4f11 6s2,1.23,,90.1 (+3),,581.0,-50.0,solid,metallic,1747,2973,8.8,lanthanoid,1878,-,6 69 | 68,Er,Erbium,167.259,#00E675,[Xe] 4f12 6s2,1.24,,89 (+3),,589.0,-50.0,solid,metallic,1770,3141,9.07,lanthanoid,1842,-,6 70 | 69,Tm,Thulium,168.93421,#00D452,[Xe] 4f13 6s2,1.25,,103 (+2),,597.0,-50.0,solid,metallic,1818,2223,9.32,lanthanoid,1879,-,6 71 | 70,Yb,Ytterbium,173.054,#00BF38,[Xe] 4f14 6s2,1.1,,102 (+2),,603.0,-50.0,solid,metallic,1092,1469,6.57,lanthanoid,1878,-,6 72 | 71,Lu,Lutetium,174.9668,#00AB24,[Xe] 4f14 5d1 6s2,1.27,160.0,86.1 (+3),,524.0,-50.0,solid,metallic,1936,3675,9.84,transition metal,1907,3,6 73 | 72,Hf,Hafnium,178.49,#4DC2FF,[Xe] 4f14 5d2 6s2,1.3,150.0,71 (+4),,659.0,0.0,solid,metallic,2506,4876,13.31,transition metal,1923,4,6 74 | 73,Ta,Tantalum,180.94788,#4DA6FF,[Xe] 4f14 5d3 6s2,1.5,138.0,72 (+3),,761.0,-31.0,solid,metallic,3290,5731,16.65,transition metal,1802,5,6 75 | 74,W,Tungsten,183.84,#2194D6,[Xe] 4f14 5d4 6s2,2.36,146.0,66 (+4),,770.0,-79.0,solid,metallic,3695,5828,19.25,transition metal,1783,6,6 76 | 75,Re,Rhenium,186.207,#267DAB,[Xe] 4f14 5d5 6s2,1.9,159.0,63 (+4),,760.0,-15.0,solid,metallic,3459,5869,21.02,transition metal,1925,7,6 77 | 76,Os,Osmium,190.23,#266696,[Xe] 4f14 5d6 6s2,2.2,128.0,63 (+4),,840.0,-106.0,solid,metallic,3306,5285,22.59,transition metal,1803,8,6 78 | 77,Ir,Iridium,192.217,#175487,[Xe] 4f14 5d7 6s2,2.2,137.0,68 (+3),,880.0,-151.0,solid,metallic,2739,4701,22.56,transition metal,1803,9,6 79 | 78,Pt,Platinum,195.084,#D0D0E0,[Xe] 4f14 5d9 6s1,2.28,128.0,86 (+2),175.0,870.0,-205.0,solid,metallic,2041,4098,21.09,transition metal,Ancient,10,6 80 | 79,Au,Gold,196.966569,#FFD123,[Xe] 4f14 5d10 6s1,2.54,144.0,137 (+1),166.0,890.0,-223.0,solid,metallic,1337,3129,19.3,transition metal,Ancient,11,6 81 | 80,Hg,Mercury,200.59,#B8B8D0,[Xe] 4f14 5d10 6s2,2.0,149.0,119 (+1),155.0,1007.0,0.0,liquid,metallic,234,630,13.53,transition metal,Ancient,12,6 82 | 81,Tl,Thallium,204.3833,#A6544D,[Xe] 4f14 5d10 6s2 6p1,2.04,148.0,150 (+1),196.0,589.0,-19.0,solid,metallic,577,1746,11.85,metal,1861,13,6 83 | 82,Pb,Lead,207.2,#575961,[Xe] 4f14 5d10 6s2 6p2,2.33,147.0,119 (+2),202.0,716.0,-35.0,solid,metallic,601,2022,11.34,metal,Ancient,14,6 84 | 83,Bi,Bismuth,208.98040,#9E4FB5,[Xe] 4f14 5d10 6s2 6p3,2.02,146.0,103 (+3),,703.0,-91.0,solid,metallic,544,1837,9.78,metal,Ancient,15,6 85 | 84,Po,Polonium,[209],#AB5C00,[Xe] 4f14 5d10 6s2 6p4,2.0,,94 (+4),,812.0,-183.0,solid,metallic,527,1235,9.2,metalloid,1898,16,6 86 | 85,At,Astatine,[210],#754F45,[Xe] 4f14 5d10 6s2 6p5,2.2,,62 (+7),,920.0,-270.0,solid,covalent network,575,,,halogen,1940,17,6 87 | 86,Rn,Radon,[222],#428296,[Xe] 4f14 5d10 6s2 6p6,,145.0,,,1037.0,,gas,atomic,202,211,0.01,noble gas,1900,18,6 88 | 87,Fr,Francium,[223],#420066,[Rn] 7s1,0.7,,180 (+1),,380.0,,solid,metallic,,,,alkali metal,1939,1,7 89 | 88,Ra,Radium,[226],#007D00,[Rn] 7s2,0.9,,148 (+2),,509.0,,solid,metallic,973,2010,5,alkaline earth metal,1898,2,7 90 | 89,Ac,Actinium,[227],#70ABFA,[Rn] 6d1 7s2,1.1,,112 (+3),,499.0,,solid,metallic,1323,3473,10.07,actinoid,1899,-,7 91 | 90,Th,Thorium,232.03806,#00BAFF,[Rn] 6d2 7s2,1.3,,94 (+4),,587.0,,solid,metallic,2023,5093,11.72,actinoid,1828,-,7 92 | 91,Pa,Protactinium,231.03588,#00A1FF,[Rn] 5f2 6d1 7s2,1.5,,104 (+3),,568.0,,solid,metallic,1845,4273,15.37,actinoid,1913,-,7 93 | 92,U,Uranium,238.02891,#008FFF,[Rn] 5f3 6d1 7s2,1.38,,102.5 (+3),186.0,598.0,,solid,metallic,1408,4200,19.05,actinoid,1789,-,7 94 | 93,Np,Neptunium,[237],#0080FF,[Rn] 5f4 6d1 7s2,1.36,,110 (+2),,605.0,,solid,metallic,917,4273,20.45,actinoid,1940,-,7 95 | 94,Pu,Plutonium,[244],#006BFF,[Rn] 5f6 7s2,1.28,,100 (+3),,585.0,,solid,metallic,913,3503,19.82,actinoid,1940,-,7 96 | 95,Am,Americium,[243],#545CF2,[Rn] 5f7 7s2,1.3,,126 (+2),,578.0,,solid,metallic,1449,2284,13.67,actinoid,1944,-,7 97 | 96,Cm,Curium,[247],#785CE3,[Rn] 5f7 6d1 7s2,1.3,,97 (+3),,581.0,,solid,metallic,1618,3383,13.51,actinoid,1944,-,7 98 | 97,Bk,Berkelium,[247],#8A4FE3,[Rn] 5f9 7s2,1.3,,96 (+3),,601.0,,solid,metallic,1323,,14.78,actinoid,1949,-,7 99 | 98,Cf,Californium,[251],#A136D4,[Rn] 5f10 7s2,1.3,,95 (+3),,608.0,,solid,metallic,1173,,15.1,actinoid,1950,-,7 100 | 99,Es,Einsteinium,[252],#B31FD4,[Rn] 5f11 7s2,1.3,,,,619.0,,solid,,1133,,,actinoid,1952,-,7 101 | 100,Fm,Fermium,[257],#B31FBA,[Rn] 5f12 7s2,1.3,,,,627.0,,,,1800,,,actinoid,1952,-,7 102 | 101,Md,Mendelevium,[258],#B30DA6,[Rn] 5f13 7s2,1.3,,,,635.0,,,,1100,,,actinoid,1955,-,7 103 | 102,No,Nobelium,[259],#BD0D87,[Rn] 5f14 7s2,1.3,,,,642.0,,,,1100,,,actinoid,1957,-,7 104 | 103,Lr,Lawrencium,[262],#C70066,[Rn] 5f14 7s2 7p1,1.3,,,,,,,,1900,,,transition metal,1961,3,7 105 | 104,Rf,Rutherfordium,[267],#CC0059,[Rn] 5f14 6d2 7s2,,,,,,,,,,,,transition metal,1969,4,7 106 | 105,Db,Dubnium,[268],#D1004F,[Rn].5f14.6d3.7s2,,,,,,,,,,,,transition metal,1967,5,7 107 | 106,Sg,Seaborgium,[271],#D90045,[Rn].5f14.6d4.7s2,,,,,,,,,,,,transition metal,1974,6,7 108 | 107,Bh,Bohrium,[272],#E00038,[Rn].5f14.6d5.7s2,,,,,,,,,,,,transition metal,1976,7,7 109 | 108,Hs,Hassium,[270],#E6002E,[Rn].5f14.6d6.7s2,,,,,,,,,,,,transition metal,1984,8,7 110 | 109,Mt,Meitnerium,[276],#EB0026,[Rn].5f14.6d7.7s2,,,,,,,,,,,,transition metal,1982,9,7 111 | 110,Ds,Darmstadtium,[281],#FF1493,[Rn].5f14.6d9.7s1,,,,,,,,,,,,transition metal,1994,10,7 112 | 111,Rg,Roentgenium,[280],#FF1493,[Rn].5f14.6d10.7s1,,,,,,,,,,,,transition metal,1994,11,7 113 | 112,Cn,Copernicium,[285],#FF1493,[Rn].5f14.6d10.7s2,,,,,,,,,,,,transition metal,1996,12,7 114 | 113,Uut,Ununtrium,[284],#FF1493,[Rn].5f14.6d10.7s2.7p1,,,,,,,,,,,,metal,2003,13,7 115 | 114,Fl,Flerovium,[289],#FF1493,[Rn].5f14.6d10.7s2.7p2,,,,,,,,,,,,metal,1998,14,7 116 | 115,Uup,Ununpentium,[288],#FF1493,[Rn].5f14.6d10.7s2.7p3,,,,,,,,,,,,metal,2003,15,7 117 | 116,Lv,Livermorium,[293],#FF1493,[Rn].5f14.6d10.7s2.7p4,,,,,,,,,,,,metal,2000,16,7 118 | 117,Uus,Ununseptium,[294],#FF1493,[Rn].5f14.6d10.7s2.7p5,,,,,,,,,,,,halogen,2010,17,7 119 | 118,Uuo,Ununoctium,[294],#FF1493,[Rn].5f14.6d10.7s2.7p6,,,,,,,,,,,,noble gas,2002,18,7 -------------------------------------------------------------------------------- /Data Analysis and Statistical Modeling/task_01 数据可视化/data/element.csv: -------------------------------------------------------------------------------- 1 | atomic number,symbol,name,atomic mass,CPK,electronic configuration,electronegativity,atomic radius,ion radius,van der Waals radius,IE-1,EA,standard state,bonding type,melting point,boiling point,density,metal,year discovered,group,period 2 | 1,H,Hydrogen,1.00794,#FFFFFF,1s1,2.2,37.0,,120.0,1312.0,-73.0,gas,diatomic,14,20,8.99E-05,nonmetal,1766,1,1 3 | 2,He,Helium,4.002602,#D9FFFF,1s2,,32.0,,140.0,2372.0,0.0,gas,atomic,,4,0,noble gas,1868,18,1 4 | 3,Li,Lithium,6.941,#CC80FF,[He] 2s1,0.98,134.0,76 (+1),182.0,520.0,-60.0,solid,metallic,454,1615,0.54,alkali metal,1817,1,2 5 | 4,Be,Beryllium,9.012182,#C2FF00,[He] 2s2,1.57,90.0,45 (+2),,900.0,0.0,solid,metallic,1560,2743,1.85,alkaline earth metal,1798,2,2 6 | 5,B,Boron,10.811,#FFB5B5,[He] 2s2 2p1,2.04,82.0,27 (+3),,801.0,-27.0,solid,covalent network,2348,4273,2.46,metalloid,1807,13,2 7 | 6,C,Carbon,12.0107,#909090,[He] 2s2 2p2,2.55,77.0,16 (+4),170.0,1087.0,-154.0,solid,covalent network,3823,4300,2.26,nonmetal,Ancient,14,2 8 | 7,N,Nitrogen,14.0067,#3050F8,[He] 2s2 2p3,3.04,75.0,146 (-3),155.0,1402.0,-7.0,gas,diatomic,63,77,0,nonmetal,1772,15,2 9 | 8,O,Oxygen,15.9994,#FF0D0D,[He] 2s2 2p4,3.44,73.0,140 (-2),152.0,1314.0,-141.0,gas,diatomic,55,90,0,nonmetal,1774,16,2 10 | 9,F,Fluorine,18.9984032,#90E050,[He] 2s2 2p5,3.98,71.0,133 (-1),147.0,1681.0,-328.0,gas,atomic,54,85,0,halogen,1670,17,2 11 | 10,Ne,Neon,20.1797,#B3E3F5,[He] 2s2 2p6,,69.0,,154.0,2081.0,0.0,gas,atomic,25,27,0,noble gas,1898,18,2 12 | 11,Na,Sodium,22.98976928,#AB5CF2,[Ne] 3s1,0.93,154.0,102 (+1),227.0,496.0,-53.0,solid,metallic,371,1156,0.97,alkali metal,1807,1,3 13 | 12,Mg,Magnesium,24.3050,#8AFF00,[Ne] 3s2,1.31,130.0,72 (+2),173.0,738.0,0.0,solid,metallic,923,1363,1.74,alkaline earth metal,1808,2,3 14 | 13,Al,Aluminum,26.9815386,#BFA6A6,[Ne] 3s2 3p1,1.61,118.0,53.5 (+3),,578.0,-43.0,solid,metallic,933,2792,2.7,metal,Ancient,13,3 15 | 14,Si,Silicon,28.0855,#F0C8A0,[Ne] 3s2 3p2,1.9,111.0,40 (+4),210.0,787.0,-134.0,solid,metallic,1687,3173,2.33,metalloid,1854,14,3 16 | 15,P,Phosphorus,30.973762,#FF8000,[Ne] 3s2 3p3,2.19,106.0,44 (+3),180.0,1012.0,-72.0,solid,covalent network,317,554,1.82,nonmetal,1669,15,3 17 | 16,S,Sulfur,32.065,#FFFF30,[Ne] 3s2 3p4,2.58,102.0,184 (-2),180.0,1000.0,-200.0,solid,covalent network,388,718,1.96,nonmetal,Ancient,16,3 18 | 17,Cl,Chlorine,35.453,#1FF01F,[Ne] 3s2 3p5,3.16,99.0,181 (-1),175.0,1251.0,-349.0,gas,covalent network,172,239,0,halogen,1774,17,3 19 | 18,Ar,Argon,39.948,#80D1E3,[Ne] 3s2 3p6,,97.0,,188.0,1521.0,0.0,gas,atomic,84,87,0,noble gas,1894,18,3 20 | 19,K,Potassium,39.0983,#8F40D4,[Ar] 4s1,0.82,196.0,138 (+1),275.0,419.0,-48.0,solid,metallic,337,1032,0.86,alkali metal,1807,1,4 21 | 20,Ca,Calcium,40.078,#3DFF00,[Ar] 4s2,1.0,174.0,100 (+2),,590.0,-2.0,solid,metallic,1115,1757,1.55,alkaline earth metal,Ancient,2,4 22 | 21,Sc,Scandium,44.955912,#E6E6E6,[Ar] 3d1 4s2,1.36,144.0,74.5 (+3),,633.0,-18.0,solid,metallic,1814,3103,2.99,transition metal,1876,3,4 23 | 22,Ti,Titanium,47.867,#BFC2C7,[Ar] 3d2 4s2,1.54,136.0,86 (+2),,659.0,-8.0,solid,metallic,1941,3560,4.51,transition metal,1791,4,4 24 | 23,V,Vanadium,50.9415,#A6A6AB,[Ar] 3d3 4s2,1.63,125.0,79 (+2),,651.0,-51.0,solid,metallic,2183,3680,6.11,transition metal,1803,5,4 25 | 24,Cr,Chromium,51.9961,#8A99C7,[Ar] 3d5 4s1,1.66,127.0,80 (+2*),,653.0,-64.0,solid,metallic,2180,2944,7.14,transition metal,Ancient,6,4 26 | 25,Mn,Manganese,54.938045,#9C7AC7,[Ar] 3d5 4s2,1.55,139.0,67 (+2),,717.0,0.0,solid,metallic,1519,2334,7.47,transition metal,1774,7,4 27 | 26,Fe,Iron,55.845,#E06633,[Ar] 3d6 4s2,1.83,125.0,78 (+2*),,763.0,-16.0,solid,metallic,1811,3134,7.87,transition metal,Ancient,8,4 28 | 27,Co,Cobalt,58.933195,#F090A0,[Ar] 3d7 4s2,1.88,126.0,74.5 (+2*),,760.0,-64.0,solid,metallic,1768,3200,8.9,transition metal,Ancient,9,4 29 | 28,Ni,Nickel,58.6934,#50D050,[Ar] 3d8 4s2,1.91,121.0,69 (+2),163.0,737.0,-112.0,solid,metallic,1728,3186,8.91,transition metal,1751,10,4 30 | 29,Cu,Copper,63.546,#C88033,[Ar] 3d10 4s1,1.9,138.0,77 (+1),140.0,746.0,-118.0,solid,metallic,1358,3200,8.92,transition metal,Ancient,11,4 31 | 30,Zn,Zinc,65.38,#7D80B0,[Ar] 3d10 4s2,1.65,131.0,74 (+2),139.0,906.0,0.0,solid,metallic,693,1180,7.14,transition metal,1746,12,4 32 | 31,Ga,Gallium,69.723,#C28F8F,[Ar] 3d10 4s2 4p1,1.81,126.0,62 (+3),187.0,579.0,-29.0,solid,metallic,303,2477,5.9,metal,1875,13,4 33 | 32,Ge,Germanium,72.64,#668F8F,[Ar] 3d10 4s2 4p2,2.01,122.0,73 (+2),,762.0,-119.0,solid,metallic,1211,3093,5.32,metalloid,1886,14,4 34 | 33,As,Arsenic,74.92160,#BD80E3,[Ar] 3d10 4s2 4p3,2.18,119.0,58 (+3),185.0,947.0,-78.0,solid,metallic,1090,887,5.73,metalloid,Ancient,15,4 35 | 34,Se,Selenium,78.96,#FFA100,[Ar] 3d10 4s2 4p4,2.55,116.0,198 (-2),190.0,941.0,-195.0,solid,metallic,494,958,4.82,nonmetal,1817,16,4 36 | 35,Br,Bromine,79.904,#A62929,[Ar] 3d10 4s2 4p5,2.96,114.0,196 (-1),185.0,1140.0,-325.0,liquid,covalent network,266,332,3.12,halogen,1826,17,4 37 | 36,Kr,Krypton,83.798,#5CB8D1,[Ar] 3d10 4s2 4p6,,110.0,,202.0,1351.0,0.0,gas,atomic,116,120,0,noble gas,1898,18,4 38 | 37,Rb,Rubidium,85.4678,#702EB0,[Kr] 5s1,0.82,211.0,152 (+1),,403.0,-47.0,solid,metallic,312,961,1.53,alkali metal,1861,1,5 39 | 38,Sr,Strontium,87.62,#00FF00,[Kr] 5s2,0.95,192.0,118 (+2),,550.0,-5.0,solid,metallic,1050,1655,2.63,alkaline earth metal,1790,2,5 40 | 39,Y,Yttrium,88.90585,#94FFFF,[Kr] 4d1 5s2,1.22,162.0,90 (+3),,600.0,-30.0,solid,metallic,1799,3618,4.47,transition metal,1794,3,5 41 | 40,Zr,Zirconium,91.224,#94E0E0,[Kr] 4d2 5s2,1.33,148.0,72 (+4),,640.0,-41.0,solid,metallic,2128,4682,6.51,transition metal,1789,4,5 42 | 41,Nb,Niobium,92.90638,#73C2C9,[Kr] 4d4 5s1,1.6,137.0,72 (+3),,652.0,-86.0,solid,metallic,2750,5017,8.57,transition metal,1801,5,5 43 | 42,Mo,Molybdenum,95.96,#54B5B5,[Kr] 4d5 5s1,2.16,145.0,69 (+3),,684.0,-72.0,solid,metallic,2896,4912,10.28,transition metal,1778,6,5 44 | 43,Tc,Technetium,[98],#3B9E9E,[Kr] 4d5 5s2,1.9,156.0,64.5 (+4),,702.0,-53.0,solid,metallic,2430,4538,11.5,transition metal,1937,7,5 45 | 44,Ru,Ruthenium,101.07,#248F8F,[Kr] 4d7 5s1,2.2,126.0,68 (+3),,710.0,-101.0,solid,metallic,2607,4423,12.37,transition metal,1827,8,5 46 | 45,Rh,Rhodium,102.90550,#0A7D8C,[Kr] 4d8 5s1,2.28,135.0,66.5 (+3),,720.0,-110.0,solid,metallic,2237,3968,12.45,transition metal,1803,9,5 47 | 46,Pd,Palladium,106.42,#006985,[Kr] 4d10,2.2,131.0,59 (+1),163.0,804.0,-54.0,solid,metallic,1828,3236,12.02,transition metal,1803,10,5 48 | 47,Ag,Silver,107.8682,#C0C0C0,[Kr] 4d10 5s1,1.93,153.0,115 (+1),172.0,731.0,-126.0,solid,metallic,1235,2435,10.49,transition metal,Ancient,11,5 49 | 48,Cd,Cadmium,112.411,#FFD98F,[Kr] 4d10 5s2,1.69,148.0,95 (+2),158.0,868.0,0.0,solid,metallic,594,1040,8.65,transition metal,1817,12,5 50 | 49,In,Indium,114.818,#A67573,[Kr] 4d10 5s2 5p1,1.78,144.0,80 (+3),193.0,558.0,-29.0,solid,metallic,430,2345,7.31,metal,1863,13,5 51 | 50,Sn,Tin,118.710,#668080,[Kr] 4d10 5s2 5p2,1.96,141.0,112 (+2),217.0,709.0,-107.0,solid,metallic,505,2875,7.31,metal,Ancient,14,5 52 | 51,Sb,Antimony,121.760,#9E63B5,[Kr] 4d10 5s2 5p3,2.05,138.0,76 (+3),,834.0,-103.0,solid,metallic,904,1860,6.7,metalloid,Ancient,15,5 53 | 52,Te,Tellurium,127.60,#D47A00,[Kr] 4d10 5s2 5p4,2.1,135.0,221 (-2),206.0,869.0,-190.0,solid,metallic,723,1261,6.24,metalloid,1782,16,5 54 | 53,I,Iodine,126.90447,#940094,[Kr] 4d10 5s2 5p5,2.66,133.0,220 (-1),198.0,1008.0,-295.0,solid,covalent network,387,457,4.94,halogen,1811,17,5 55 | 54,Xe,Xenon,131.293,#429EB0,[Kr] 4d10 5s2 5p6,,130.0,48 (+8),216.0,1170.0,0.0,gas,atomic,161,165,0.01,noble gas,1898,18,5 56 | 55,Cs,Cesium,132.9054519,#57178F,[Xe] 6s1,0.79,225.0,167 (+1),,376.0,-46.0,solid,metallic,302,944,1.88,alkali metal,1860,1,6 57 | 56,Ba,Barium,137.327,#00C900,[Xe] 6s2,0.89,198.0,135 (+2),,503.0,-14.0,solid,metallic,1000,2143,3.51,alkaline earth metal,1808,2,6 58 | 57,La,Lanthanum,138.90547,#70D4FF,[Xe] 5d1 6s2,1.1,169.0,103.2 (+3),,538.0,-48.0,solid,metallic,1193,3737,6.15,lanthanoid,1839,-,6 59 | 58,Ce,Cerium,140.116,#FFFFC7,[Xe] 4f1 5d1 6s2,1.12,,102 (+3),,534.0,-50.0,solid,metallic,1071,3633,6.69,lanthanoid,1803,-,6 60 | 59,Pr,Praseodymium,140.90765,#D9FFC7,[Xe] 4f3 6s2,1.13,,99 (+3),,527.0,-50.0,solid,metallic,1204,3563,6.64,lanthanoid,1885,-,6 61 | 60,Nd,Neodymium,144.242,#C7FFC7,[Xe] 4f4 6s2,1.14,,129 (+2),,533.0,-50.0,solid,metallic,1294,3373,7.01,lanthanoid,1885,-,6 62 | 61,Pm,Promethium,[145],#A3FFC7,[Xe] 4f5 6s2,1.13,,97 (+3),,540.0,-50.0,solid,metallic,1373,3273,7.26,lanthanoid,1947,-,6 63 | 62,Sm,Samarium,150.36,#8FFFC7,[Xe] 4f6 6s2,1.17,,122 (+2),,545.0,-50.0,solid,metallic,1345,2076,7.35,lanthanoid,1853,-,6 64 | 63,Eu,Europium,151.964,#61FFC7,[Xe] 4f7 6s2,1.2,,117 (+2),,547.0,-50.0,solid,metallic,1095,1800,5.24,lanthanoid,1901,-,6 65 | 64,Gd,Gadolinium,157.25,#45FFC7,[Xe] 4f7 5d1 6s2,1.2,,93.8 (+3),,593.0,-50.0,solid,metallic,1586,3523,7.9,lanthanoid,1880,-,6 66 | 65,Tb,Terbium,158.92535,#30FFC7,[Xe] 4f9 6s2,1.2,,92.3 (+3),,566.0,-50.0,solid,metallic,1629,3503,8.22,lanthanoid,1843,-,6 67 | 66,Dy,Dysprosium,162.500,#1FFFC7,[Xe] 4f10 6s2,1.22,,107 (+2),,573.0,-50.0,solid,metallic,1685,2840,8.55,lanthanoid,1886,-,6 68 | 67,Ho,Holmium,164.93032,#00FF9C,[Xe] 4f11 6s2,1.23,,90.1 (+3),,581.0,-50.0,solid,metallic,1747,2973,8.8,lanthanoid,1878,-,6 69 | 68,Er,Erbium,167.259,#00E675,[Xe] 4f12 6s2,1.24,,89 (+3),,589.0,-50.0,solid,metallic,1770,3141,9.07,lanthanoid,1842,-,6 70 | 69,Tm,Thulium,168.93421,#00D452,[Xe] 4f13 6s2,1.25,,103 (+2),,597.0,-50.0,solid,metallic,1818,2223,9.32,lanthanoid,1879,-,6 71 | 70,Yb,Ytterbium,173.054,#00BF38,[Xe] 4f14 6s2,1.1,,102 (+2),,603.0,-50.0,solid,metallic,1092,1469,6.57,lanthanoid,1878,-,6 72 | 71,Lu,Lutetium,174.9668,#00AB24,[Xe] 4f14 5d1 6s2,1.27,160.0,86.1 (+3),,524.0,-50.0,solid,metallic,1936,3675,9.84,transition metal,1907,3,6 73 | 72,Hf,Hafnium,178.49,#4DC2FF,[Xe] 4f14 5d2 6s2,1.3,150.0,71 (+4),,659.0,0.0,solid,metallic,2506,4876,13.31,transition metal,1923,4,6 74 | 73,Ta,Tantalum,180.94788,#4DA6FF,[Xe] 4f14 5d3 6s2,1.5,138.0,72 (+3),,761.0,-31.0,solid,metallic,3290,5731,16.65,transition metal,1802,5,6 75 | 74,W,Tungsten,183.84,#2194D6,[Xe] 4f14 5d4 6s2,2.36,146.0,66 (+4),,770.0,-79.0,solid,metallic,3695,5828,19.25,transition metal,1783,6,6 76 | 75,Re,Rhenium,186.207,#267DAB,[Xe] 4f14 5d5 6s2,1.9,159.0,63 (+4),,760.0,-15.0,solid,metallic,3459,5869,21.02,transition metal,1925,7,6 77 | 76,Os,Osmium,190.23,#266696,[Xe] 4f14 5d6 6s2,2.2,128.0,63 (+4),,840.0,-106.0,solid,metallic,3306,5285,22.59,transition metal,1803,8,6 78 | 77,Ir,Iridium,192.217,#175487,[Xe] 4f14 5d7 6s2,2.2,137.0,68 (+3),,880.0,-151.0,solid,metallic,2739,4701,22.56,transition metal,1803,9,6 79 | 78,Pt,Platinum,195.084,#D0D0E0,[Xe] 4f14 5d9 6s1,2.28,128.0,86 (+2),175.0,870.0,-205.0,solid,metallic,2041,4098,21.09,transition metal,Ancient,10,6 80 | 79,Au,Gold,196.966569,#FFD123,[Xe] 4f14 5d10 6s1,2.54,144.0,137 (+1),166.0,890.0,-223.0,solid,metallic,1337,3129,19.3,transition metal,Ancient,11,6 81 | 80,Hg,Mercury,200.59,#B8B8D0,[Xe] 4f14 5d10 6s2,2.0,149.0,119 (+1),155.0,1007.0,0.0,liquid,metallic,234,630,13.53,transition metal,Ancient,12,6 82 | 81,Tl,Thallium,204.3833,#A6544D,[Xe] 4f14 5d10 6s2 6p1,2.04,148.0,150 (+1),196.0,589.0,-19.0,solid,metallic,577,1746,11.85,metal,1861,13,6 83 | 82,Pb,Lead,207.2,#575961,[Xe] 4f14 5d10 6s2 6p2,2.33,147.0,119 (+2),202.0,716.0,-35.0,solid,metallic,601,2022,11.34,metal,Ancient,14,6 84 | 83,Bi,Bismuth,208.98040,#9E4FB5,[Xe] 4f14 5d10 6s2 6p3,2.02,146.0,103 (+3),,703.0,-91.0,solid,metallic,544,1837,9.78,metal,Ancient,15,6 85 | 84,Po,Polonium,[209],#AB5C00,[Xe] 4f14 5d10 6s2 6p4,2.0,,94 (+4),,812.0,-183.0,solid,metallic,527,1235,9.2,metalloid,1898,16,6 86 | 85,At,Astatine,[210],#754F45,[Xe] 4f14 5d10 6s2 6p5,2.2,,62 (+7),,920.0,-270.0,solid,covalent network,575,,,halogen,1940,17,6 87 | 86,Rn,Radon,[222],#428296,[Xe] 4f14 5d10 6s2 6p6,,145.0,,,1037.0,,gas,atomic,202,211,0.01,noble gas,1900,18,6 88 | 87,Fr,Francium,[223],#420066,[Rn] 7s1,0.7,,180 (+1),,380.0,,solid,metallic,,,,alkali metal,1939,1,7 89 | 88,Ra,Radium,[226],#007D00,[Rn] 7s2,0.9,,148 (+2),,509.0,,solid,metallic,973,2010,5,alkaline earth metal,1898,2,7 90 | 89,Ac,Actinium,[227],#70ABFA,[Rn] 6d1 7s2,1.1,,112 (+3),,499.0,,solid,metallic,1323,3473,10.07,actinoid,1899,-,7 91 | 90,Th,Thorium,232.03806,#00BAFF,[Rn] 6d2 7s2,1.3,,94 (+4),,587.0,,solid,metallic,2023,5093,11.72,actinoid,1828,-,7 92 | 91,Pa,Protactinium,231.03588,#00A1FF,[Rn] 5f2 6d1 7s2,1.5,,104 (+3),,568.0,,solid,metallic,1845,4273,15.37,actinoid,1913,-,7 93 | 92,U,Uranium,238.02891,#008FFF,[Rn] 5f3 6d1 7s2,1.38,,102.5 (+3),186.0,598.0,,solid,metallic,1408,4200,19.05,actinoid,1789,-,7 94 | 93,Np,Neptunium,[237],#0080FF,[Rn] 5f4 6d1 7s2,1.36,,110 (+2),,605.0,,solid,metallic,917,4273,20.45,actinoid,1940,-,7 95 | 94,Pu,Plutonium,[244],#006BFF,[Rn] 5f6 7s2,1.28,,100 (+3),,585.0,,solid,metallic,913,3503,19.82,actinoid,1940,-,7 96 | 95,Am,Americium,[243],#545CF2,[Rn] 5f7 7s2,1.3,,126 (+2),,578.0,,solid,metallic,1449,2284,13.67,actinoid,1944,-,7 97 | 96,Cm,Curium,[247],#785CE3,[Rn] 5f7 6d1 7s2,1.3,,97 (+3),,581.0,,solid,metallic,1618,3383,13.51,actinoid,1944,-,7 98 | 97,Bk,Berkelium,[247],#8A4FE3,[Rn] 5f9 7s2,1.3,,96 (+3),,601.0,,solid,metallic,1323,,14.78,actinoid,1949,-,7 99 | 98,Cf,Californium,[251],#A136D4,[Rn] 5f10 7s2,1.3,,95 (+3),,608.0,,solid,metallic,1173,,15.1,actinoid,1950,-,7 100 | 99,Es,Einsteinium,[252],#B31FD4,[Rn] 5f11 7s2,1.3,,,,619.0,,solid,,1133,,,actinoid,1952,-,7 101 | 100,Fm,Fermium,[257],#B31FBA,[Rn] 5f12 7s2,1.3,,,,627.0,,,,1800,,,actinoid,1952,-,7 102 | 101,Md,Mendelevium,[258],#B30DA6,[Rn] 5f13 7s2,1.3,,,,635.0,,,,1100,,,actinoid,1955,-,7 103 | 102,No,Nobelium,[259],#BD0D87,[Rn] 5f14 7s2,1.3,,,,642.0,,,,1100,,,actinoid,1957,-,7 104 | 103,Lr,Lawrencium,[262],#C70066,[Rn] 5f14 7s2 7p1,1.3,,,,,,,,1900,,,transition metal,1961,3,7 105 | 104,Rf,Rutherfordium,[267],#CC0059,[Rn] 5f14 6d2 7s2,,,,,,,,,,,,transition metal,1969,4,7 106 | 105,Db,Dubnium,[268],#D1004F,[Rn].5f14.6d3.7s2,,,,,,,,,,,,transition metal,1967,5,7 107 | 106,Sg,Seaborgium,[271],#D90045,[Rn].5f14.6d4.7s2,,,,,,,,,,,,transition metal,1974,6,7 108 | 107,Bh,Bohrium,[272],#E00038,[Rn].5f14.6d5.7s2,,,,,,,,,,,,transition metal,1976,7,7 109 | 108,Hs,Hassium,[270],#E6002E,[Rn].5f14.6d6.7s2,,,,,,,,,,,,transition metal,1984,8,7 110 | 109,Mt,Meitnerium,[276],#EB0026,[Rn].5f14.6d7.7s2,,,,,,,,,,,,transition metal,1982,9,7 111 | 110,Ds,Darmstadtium,[281],#FF1493,[Rn].5f14.6d9.7s1,,,,,,,,,,,,transition metal,1994,10,7 112 | 111,Rg,Roentgenium,[280],#FF1493,[Rn].5f14.6d10.7s1,,,,,,,,,,,,transition metal,1994,11,7 113 | 112,Cn,Copernicium,[285],#FF1493,[Rn].5f14.6d10.7s2,,,,,,,,,,,,transition metal,1996,12,7 114 | 113,Uut,Ununtrium,[284],#FF1493,[Rn].5f14.6d10.7s2.7p1,,,,,,,,,,,,metal,2003,13,7 115 | 114,Fl,Flerovium,[289],#FF1493,[Rn].5f14.6d10.7s2.7p2,,,,,,,,,,,,metal,1998,14,7 116 | 115,Uup,Ununpentium,[288],#FF1493,[Rn].5f14.6d10.7s2.7p3,,,,,,,,,,,,metal,2003,15,7 117 | 116,Lv,Livermorium,[293],#FF1493,[Rn].5f14.6d10.7s2.7p4,,,,,,,,,,,,metal,2000,16,7 118 | 117,Uus,Ununseptium,[294],#FF1493,[Rn].5f14.6d10.7s2.7p5,,,,,,,,,,,,halogen,2010,17,7 119 | 118,Uuo,Ununoctium,[294],#FF1493,[Rn].5f14.6d10.7s2.7p6,,,,,,,,,,,,noble gas,2002,18,7 -------------------------------------------------------------------------------- /Thanos-MachineLearning/监督学习/基础篇-机器学习必知必会/机器学习入门篇.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 机器学习入门——必知必会" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "# 0. 导言" 15 | ] 16 | }, 17 | { 18 | "cell_type": "markdown", 19 | "metadata": {}, 20 | "source": [ 21 | "# 1. 宏观理解机器学习" 22 | ] 23 | }, 24 | { 25 | "cell_type": "markdown", 26 | "metadata": {}, 27 | "source": [ 28 | "## 1.1 什么是机器学习?" 29 | ] 30 | }, 31 | { 32 | "cell_type": "markdown", 33 | "metadata": {}, 34 | "source": [ 35 | "机器学习也被称为统计学习,是关于计算机基于数据构建概率统计模型、并运用模型对数据进行预测与分析的一门学科。以上描述是李航老师在《统计学习方法》给出的机器学习(统计学习)的定义。在这里,我们解构一下这个定义,让大家更好地理解什么是机器学习。\n", 36 | "\n", 37 | "第一个关键词是“基于数据”。数据作为机器学习研究的对象,可以说机器学习的多样性来源于数据的多样性——我们使用何种机器学习模型,取决于待分析数据的种类与特点。例如,我们在执行二分类任务时,如果散点图显示两个种类的样本存在明显的线性可分性,那么使用一个简单的线性机器学习分类算法(如线性判别分析LDA)就可以轻松完成任务;若样本线性不可分,我们则可以考虑使用核函数支持向量机算法;如果数据是文字、图像等高维特征的数据,那么则可以使用深度学习的算法去解决。总而言之,基于数据选择合适的机器学习算法至关重要。\n", 38 | "\n", 39 | "第二个关键词是“预测与分析”。预测与分析是机器学习的两个主要的任务,更进一步地说,是对**未知新数据**的预测与分析。预测的意义不言而喻,现实中的许多应用都是各种预测问题,例如,银行根据客户的各类指标推断是否应该给其贷款、垃圾邮件分类器识别垃圾邮件以保护我们的邮箱免受侵扰等等。而分析则是指从数据中挖掘新的信息与知识,给我们带来启发,例如,在研究各因素对商品销售量的场景中,我们会更关注各因素与商品销售量间的正负相关关系,从而指导我们调整销售策略。\n", 40 | "\n", 41 | "值得注意的是,如果我们以预测作为机器学习的主要目标,那么在建模的时候应当注重模型的预测精度,而对模型的解释可以不用太在意。事实上,当前具有强大预测性能的模型大多都是黑盒模型,如各种集成学习算法以及深度学习算法,它们的模型可解释性差,我们难以解释其中一些参数的含义与统计性质。而如果我们以分析作为主要目标,那么我们应当尽可能选择可解释性强的模型。\n", 42 | "\n", 43 | "总结一下,机器学习总的目标就是**根据数据特点考虑学习(采用)怎样的模型,使得模型能对数据进行准确的预测与分析,同时在保持准确的前提下,也要考虑模型的学习效率。**" 44 | ] 45 | }, 46 | { 47 | "cell_type": "markdown", 48 | "metadata": {}, 49 | "source": [ 50 | "## 1.2 课程定位" 51 | ] 52 | }, 53 | { 54 | "cell_type": "markdown", 55 | "metadata": {}, 56 | "source": [ 57 | "本次机器学习课程主要服务于有建模需求的同学,力求让同学们通过本轮课程的学习,明白各种机器学习模型的简要原理、应用场景、注意事项,并基于python强大的机器学习库scikit-learn完成对各种机器学习算法的实践。" 58 | ] 59 | }, 60 | { 61 | "cell_type": "markdown", 62 | "metadata": {}, 63 | "source": [ 64 | "# 2. 机器学习算法的分类" 65 | ] 66 | }, 67 | { 68 | "cell_type": "markdown", 69 | "metadata": {}, 70 | "source": [ 71 | "机器学习是一个范围广、内容多、应用宽泛的领域,现在不存在一个统一的理论体系涵盖所有内容。不同算法模型间分类的角度有很多,现在我们用一个较为常见的分类标准:样本是否存在输出变量$y$,将算法划分为监督学习算法与无监督学习算法(事实上还存在半监督学习算法,但本次课程不讨论它们)。" 72 | ] 73 | }, 74 | { 75 | "cell_type": "markdown", 76 | "metadata": {}, 77 | "source": [ 78 | "## 2.1 监督学习" 79 | ] 80 | }, 81 | { 82 | "cell_type": "markdown", 83 | "metadata": {}, 84 | "source": [ 85 | "### 2.1.1 什么是监督学习" 86 | ] 87 | }, 88 | { 89 | "cell_type": "markdown", 90 | "metadata": {}, 91 | "source": [ 92 | "监督学习(supervised learning)是指从标注数据(带有因变量的数据)中学习预测模型的机器学习问题。本质上,监督学习的本质是学习输入自变量$X$到输出因变量$y$的映射$f$的规律。" 93 | ] 94 | }, 95 | { 96 | "cell_type": "markdown", 97 | "metadata": {}, 98 | "source": [ 99 | "### 2.1.2 监督学习的两大应用——分类与回归" 100 | ] 101 | }, 102 | { 103 | "cell_type": "markdown", 104 | "metadata": {}, 105 | "source": [ 106 | "根据应变量$y$的性质,监督学习主要可以分为两大应用问题:分类与回归。若$y$取有限个离散值,则问题是分类问题;若$y$是连续变量,则问题是回归问题。\n", 107 | "\n", 108 | "在上面的举例中,商品销售额研究问题就是回归问题,因为因变量$y$销售额是一个连续变量;而垃圾短信过滤问题则是一个分类问题,因为当我们把因变量$y$定义成短信类别,将垃圾短信定义为$y=1$,正常短信定义为$y=0$,则$y$只有0和1两个离散的取值。\n", 109 | "\n", 110 | "分类与回归问题的算法类型、问题的解决范式有些许不同,接下来让我们看看它们的区别所在吧!" 111 | ] 112 | }, 113 | { 114 | "cell_type": "markdown", 115 | "metadata": {}, 116 | "source": [ 117 | "**· 分类问题的解决范式**\n", 118 | "\n", 119 | "分类问题以二分类问题为主,包含**模型学习(训练模型)** 与**对新样本数据进行预测分类**两个过程\n", 120 | "\n", 121 | "1. 在学习过程中,根据已知的训练集利用给定的模型算法训练出一个分类器;\n", 122 | "\n", 123 | "2. 在分类过程中,利用训练完毕的分类器对新的样本数据进行分类。\n", 124 | "\n", 125 | "分类问题的解决过程范式图如下\n", 126 | "\n", 127 | "\n", 128 | "\n", 129 | "如图所示,分类器的形式有两种,一种是条件概率分类器$P\\left( Y|X \\right) $,一种判决函数分类器$Y=f(X)$。\n", 130 | "\n", 131 | "概率分类器$P\\left( Y|X \\right) $输出在当前样本自变量$X$下,因变量$Y$为某个特定输出$y_i$的条件概率,然后再对$Y$在不同输出值下的概率值进行比较,概率最大的类别则为分类器对新样本预测的类别。举个例子:在垃圾短信分类器中,若$P\\left( Y=1|X \\right) =0.7$,$P\\left( Y=0|X \\right) =0.3$,即对于样本特征$X$的输入,分类器将其判别为垃圾短信的概率为0.7,判别为正常短信的概率为0.3,那么我们则采纳概率较大的可能,将短信判别为垃圾短信。\n", 132 | "\n", 133 | "判决函数分类器$Y=f(X)$则是根据函数值$Y$的值对样本的类别进行判断。通常地,$f(X)=0$是很多分类器的临界点,若$f(X)<0$,则将样本判别为某个类别;若$f(X)>0$,则将样本判别为另一个类别。\n", 134 | "\n", 135 | "以条件概率作为分类器的算法通常是基于概率的算法,如决策树、朴素贝叶斯、线性判别等等;而以判决函数作为分类器的算法则往往是非概率算法,如支持向量机、k邻近、神经网络等等。\n", 136 | "\n" 137 | ] 138 | }, 139 | { 140 | "cell_type": "markdown", 141 | "metadata": {}, 142 | "source": [ 143 | "**· 回归问题的解决范式**\n", 144 | "\n", 145 | "回归时监督学习的另一个重要的问题。它的任务是预测自变量$X$与因变量$Y$之间的关系,当自变量$X$的值发生变化时,因变量$Y$将同时发生怎样的变化。事实上,回归问题的学习过程等价于用一个函数$f$对训练集数据$(x_i,y_i)$进行拟合——选择一条函数曲线使其很好地拟合已知数据、并很好地预测未知数据。\n", 146 | "\n", 147 | "回归问题的解决范式与分类问题是相似的,也包含**模型学习(训练模型)** 与**对新样本数据进行预测**两个过程,只不过模型的输出$Y$是一个连续变量而不是有限离散变量。\n", 148 | "\n", 149 | "回归问题的解决过程范式图如下\n", 150 | "\n", 151 | "" 152 | ] 153 | }, 154 | { 155 | "cell_type": "markdown", 156 | "metadata": {}, 157 | "source": [ 158 | "## 2.2 无监督学习" 159 | ] 160 | }, 161 | { 162 | "cell_type": "markdown", 163 | "metadata": {}, 164 | "source": [ 165 | "### 2.2.1 什么是无监督学习" 166 | ] 167 | }, 168 | { 169 | "cell_type": "markdown", 170 | "metadata": {}, 171 | "source": [ 172 | "无监督学习(unsupervised learning)是指无标注数据(不带有因变量)中学习预测模型的机器学习问题。本质上,无监督学习的本质是学习数据中的统计规律或潜在结构。" 173 | ] 174 | }, 175 | { 176 | "cell_type": "markdown", 177 | "metadata": {}, 178 | "source": [ 179 | "### 2.2.2 无监督学习的意义" 180 | ] 181 | }, 182 | { 183 | "cell_type": "markdown", 184 | "metadata": {}, 185 | "source": [ 186 | "监督学习的意义很容易理解——建立自变量与因变量的映射关系,一方面精准预测新样本的因变量,另一方面可以更好地理解自变量与因变量间的关系。监督学习中的因变量$Y$就像是一盏盏明灯,指引着各种算法找到那个最优的映射关系$f$。\n", 187 | "\n", 188 | "然而,无监督学习在一定程度上就更具挑战性了。没有了因变量的存在,我们似乎很难“拟合”出一个模型用于预测。那么,无监督学习究竟是干什么的呢?答案是:理解与挖掘自变量间的关系。我们以无监督学习中常见的聚类算法为例,向大家介绍无监督学习的意义。\n", 189 | "\n", 190 | "在市场研究中,我们可以获取许多潜在消费者的特征变量,如家庭收入、消费习惯等等。我们想将消费者划分为低、中、高消费群,在不同消费群之间执行不同的营销策略。事实上,如果每个消费者的消费群归属是已知的,那么我们就可以用一个监督学习分类算法训练出一个分类器,再对新消费者样本进行分类判别。然而,消费群归属在实际情况中是不可能知道的,因为没有人会告诉你它属于哪个群体,换句话说,不会有一个“消费群归属”的变量作为因变量给我们进行监督学习。\n", 191 | "\n", 192 | "那么这该怎么办呢?我们思考一下,既然无法直接获取消费群归属的情况,那我们能不能基于已知的消费者数据$X$,寻找其中的规律然后自己构建一套规则$f$,人为地给他们划分呢?也就是说,将$X\\rightarrow f\\left( X \\right) $,然后根据每个样本$f(X)$的表现自主地给他们划分。**这就是无监督学习的基本思想——寻找一套规则$f$,使得初始自变量$X$变换为$f(X)$后,可以更好地呈现出数据中的某些特点。我们既可以直接根据无监督学习的结果进行人为的判别,也可以将其作为整个建模过程中的一种“数据处理”。**\n", 193 | "\n", 194 | "回到上述例子,我们可以用聚类分析算法解决之。聚类分析的目标是基于自变量$X$将观测样本归入不同的群,消费群相同的消费者,它们的某些自变量表现是相似且接近的,如果算法可以找出不同消费群自变量的表现模式,那将有利于我们人为地分类。我们看看以下两个图\n", 195 | "\n", 196 | "\n", 197 | "\n", 198 | "以上两个图的样本都只有两个自变量$X_1$与$X_2$,左图所示的三个群界限分明,聚类算法可以成功地识别三个群;右图相对而言界限模糊,聚类任务相对前者较难。然而,实际情况中,变量的个数肯定不止两个,此时直观地图形检查法不再是一个可行的方法,我们就需要借用自动聚类的算法了。" 199 | ] 200 | }, 201 | { 202 | "cell_type": "markdown", 203 | "metadata": {}, 204 | "source": [ 205 | "### 2.2.3 无监督学习的解决范式" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "无监督学习的解决范式和监督学习的解决范式也大致相似,也是先根据训练数据学习出一个模型,再使用模型对数据进行预测。其实与其称之为预测,我更愿把其称为“转换”,即将原始自变量$X$转换为新的变量$f(X)$。\n", 213 | "\n", 214 | "无监督学习的解决范式示意图如下\n", 215 | "\n", 216 | "\n", 217 | "\n", 218 | "无监督学习的模型有三类:函数模型$f(X)$,条件概率分布模型$P\\left( Y|X \\right) $与条件概率分布模型$P\\left( X|Y \\right) $。\n", 219 | "\n", 220 | "在预测过程中,前两个模型都是将$X$转换成另一个输出值$Y$,即有:$y_{N+1}=f\\left( x_{N+1} \\right) $或$y_{N+1}=arg\\,\\,\\max \\left( P\\left( y|x_{N+1} \\right) \\right) $,聚类算法与降维算法多为这种模型。而最后一种模型则输出的是在自变量$X$恰为当前输入值时的概率估计。\n", 221 | "\n" 222 | ] 223 | }, 224 | { 225 | "cell_type": "markdown", 226 | "metadata": {}, 227 | "source": [ 228 | "# 3. 机器学习的基础概论" 229 | ] 230 | }, 231 | { 232 | "cell_type": "markdown", 233 | "metadata": {}, 234 | "source": [ 235 | "在这一章,我们将学习机器学习中一些必须要掌握的理论知识,它们是许多机器学习模型的共同内核。掌握它们,我们将在后续的对每种算法的学习中更容易串联起彼此的联系,这将有助于我们理解、学习、整理。" 236 | ] 237 | }, 238 | { 239 | "cell_type": "markdown", 240 | "metadata": {}, 241 | "source": [ 242 | "## 3.1 符号定义" 243 | ] 244 | }, 245 | { 246 | "cell_type": "markdown", 247 | "metadata": {}, 248 | "source": [ 249 | "为方便后续各种算法的学习,我们在这里对各种数学符号进行统一的规定。\n", 250 | "\n", 251 | "**· 变量、变量取值与特征向量**\n", 252 | "\n", 253 | "自变量与因变量用大写字母表示,自变量为$X$,因变量为$Y$。\n", 254 | "\n", 255 | "变量在某个样本上的取值则用小写字母表示,自变量为$x$,因变量为$y$。\n", 256 | "\n", 257 | "变量可以是单变量的标量,也可以是多变量的向量,但由于机器学习通常都是同时处理多变量的,因此除特别声明外,教程中所有变量都是列向量。\n", 258 | "\n", 259 | "具有$n$个特征的样本实例$x$的特征向量记为\n", 260 | "$$\n", 261 | "x=\\left(x^{(1)}, x^{(2)}, \\cdots, x^{(i)}, \\cdots, x^{(n)}\\right)^{\\mathrm{T}}\n", 262 | "$$\n", 263 | "其中,$x^{(i)}$表示$x$的第$i$个特征。\n", 264 | "\n", 265 | "特别地,对于第$i$个样本,其特征向量记为\n", 266 | "$$\n", 267 | "x_i=\\left(x_i^{(1)}, x_i^{(2)}, \\cdots, x_i^{(n)}\\right)^{\\mathrm{T}}\n", 268 | "$$\n", 269 | "\n", 270 | "**· 样本数据集**\n", 271 | "\n", 272 | "样本数据集就是由各种样本组成的数据集,通常分为训练数据集与测试数据集,模型的训练是基于训练数据集的,预测则是基于测试数据集的。在这里我们定义训练数据集的符号(因为后续的模型学习都是基于训练集的)。\n", 273 | "\n", 274 | "对于监督学习,训练数据由特征向量$x_i$与对应的因变量$y_i$组成,表示为:\n", 275 | "$$\n", 276 | "T=\\left\\{\\left(x_1, y_1\\right),\\left(x_2, y_2\\right), \\cdots,\\left(x_N, y_N\\right)\\right\\}\n", 277 | "$$\n", 278 | "对于无监督学习,训练数据只由特征向量$x_i$构成,表示为:\n", 279 | "$$\n", 280 | "U=\\left\\{x_1, x_2, \\cdots, x_N\\right\\}\n", 281 | "$$\n", 282 | "以上两种训练集的样本个数均为$N$。" 283 | ] 284 | }, 285 | { 286 | "cell_type": "markdown", 287 | "metadata": {}, 288 | "source": [ 289 | "## 3.2 机器学习方法三要素" 290 | ] 291 | }, 292 | { 293 | "cell_type": "markdown", 294 | "metadata": {}, 295 | "source": [ 296 | "所谓机器学习方法三要素,就是我们可以通过这三个要素对任何一个机器学习方法进行全面地认知(如模型形式、训练方法、计算方法)等。机器学习方法由以下三要素组成:\n", 297 | "$$\n", 298 | "\\text{方法}=\\text{模型}+\\text{策略}+\\text{算法}\n", 299 | "$$" 300 | ] 301 | }, 302 | { 303 | "cell_type": "markdown", 304 | "metadata": {}, 305 | "source": [ 306 | "### 3.2.1 模型" 307 | ] 308 | }, 309 | { 310 | "cell_type": "markdown", 311 | "metadata": {}, 312 | "source": [ 313 | "所为模型,就是在机器学习中最终需要得出的条件概率分布或决策函数,然后使用这个模型对新样本进行预测、或者进行变量之间的分析。\n", 314 | "\n", 315 | "对于每一种机器学习方法而言,它们的模型是确定的。例如,在线性回归方法中,它的模型就是线性回归函数:\n", 316 | "$$\n", 317 | "y=\\beta _0+\\beta _1x^{\\left( 1 \\right)}+\\cdots +\\beta _kx^{\\left( k \\right)}\n", 318 | "$$\n", 319 | "在Logistics回归方法中,它的模型就是以下条件概率公式:\n", 320 | "$$\n", 321 | "P(y=1 \\mid x) =\\frac{1}{1+e^{-y}}=\\frac{1}{1+e^{-x^{'}\\beta}}\n", 322 | "$$\n", 323 | "在决策树方法中,它的模型就是一棵有着许多枝干的二叉树:\n", 324 | "\n", 325 | "\n", 326 | "\n", 327 | "事实上,虽然对于某一个特定的机器学习方法来说,模型的形式是大致确定的,但是模型里面有非常多需要确定的参数,参数不同,模型也就不同,我们将**所有这些可能的模型组成的集合称为模型的假设空间(hypothesis space)**。\n", 328 | "\n", 329 | "对于决策函数模型来说,假设空间如下所示:\n", 330 | "$$\n", 331 | "\\mathcal{F}=\\left\\{f \\mid Y=f_\\theta(X), \\theta \\in \\mathbf{R}^n\\right\\}\n", 332 | "$$\n", 333 | "对于条件概率模型来说,假设空间如下所示:\n", 334 | "$$\n", 335 | "\\mathcal{F}=\\left\\{P \\mid P_\\theta(Y \\mid X), \\theta \\in \\mathbf{R}^n\\right\\}\n", 336 | "$$\n", 337 | "其中,$\\theta$则是模型中所有参数组成的向量,所有这些参数的集合也称为参数空间(parameter space)。" 338 | ] 339 | }, 340 | { 341 | "cell_type": "markdown", 342 | "metadata": {}, 343 | "source": [ 344 | "### 3.2.2 策略" 345 | ] 346 | }, 347 | { 348 | "cell_type": "markdown", 349 | "metadata": {}, 350 | "source": [ 351 | "模型的形式有了,但是模型里面的各种参数信息我们是不知道的。那么接下来要做的就是通过使用给定的样本数据,在茫茫无际的模型假设空间中找到最优的那个模型,换言之,为这个模型在参数空间中找到一个参数组合$\\theta$使得模型最优。\n", 352 | "\n", 353 | "那么,我们应该如何找到这个最优的模型呢?这就是策略需要考虑的事了,而**所有机器学习方法的策略都是相似的——让风险函数最小化。**什么是风险函数呢?我们接着往下看。" 354 | ] 355 | }, 356 | { 357 | "cell_type": "markdown", 358 | "metadata": {}, 359 | "source": [ 360 | "**· 损失函数**\n", 361 | "\n", 362 | "我们先引入损失函数的概念。损失函数度量模型在一次预测中的“误差”,记为$L(Y, f(X))$,这里的误差指的是预测值$f(X)$与真实值$Y$的不一致程度。不同机器学习方法所采用的损失函数有所不同,常见的损失函数有以下几种:\n", 363 | "\n", 364 | "1. 0-1损失函数\n", 365 | "$$\n", 366 | "L(Y, f(X))= \\begin{cases}1, & Y \\neq f(X) \\\\ 0, & Y=f(X)\\end{cases}\n", 367 | "$$\n", 368 | "这种损失函数常用于解决分类问题的模型,分类错误则函数赋值为1,正确则赋值为0.\n", 369 | "\n", 370 | "2. 平方损失函数\n", 371 | "$$\n", 372 | "L(Y, f(X))=(Y-f(X))^2\n", 373 | "$$\n", 374 | "这种损失函数在回归问题中最常见,大家有没有意识到它就是线性回归方法的损失函数呢?\n", 375 | "\n", 376 | "3. 对数损失函数\n", 377 | "$$\n", 378 | "L(Y, P(Y \\mid X))=-\\log P(Y \\mid X)\n", 379 | "$$\n", 380 | "这种损失函数常用于以条件概率为模型的方法。\n", 381 | "\n", 382 | "以上三种损失函数是最基础的损失函数,实际的机器学习方法中会对这些损失函数进行一些改进与优化以增强模型的性能与稳定性。\n", 383 | "\n", 384 | "**· 风险函数——经验风险、结构风险、正则化**\n", 385 | "\n", 386 | "要衡量一个模型在一个数据集上的表现,只度量模型在单次预测上的误差肯定是不足够的,接下来我们引入风险函数的定义。风险函数则度量模型对所有训练集数据预测中的“平均好坏”,它又可以分为经验风险函数与结构风险函数。\n", 387 | "\n", 388 | "经验风险函数非常好理解,它就是模型$f(X)$(或$P(Y \\mid X)$)在训练数据集$T$上损失函数的平均值:\n", 389 | "$$\n", 390 | "R_{\\mathrm{emp}}(f)=\\frac{1}{N} \\sum_{i=1}^N L\\left(y_i, f\\left(x_i\\right)\\right)\n", 391 | "$$\n", 392 | "显然,经验风险函数衡量的就是模型在训练集上的平均误差。而找到模型假设空间中最优模型的策略就是风险函数最小化,我们便可以让经验风险函数最小化,将问题转化为一个最优化问题:\n", 393 | "$$\n", 394 | "\\min _{f \\in \\mathcal{F}} \\frac{1}{N} \\sum_{i=1}^N L\\left(y_i, f\\left(x_i\\right)\\right)\n", 395 | "$$\n", 396 | "经验风险最小化,就是模型在训练集的平均误差最小化,于是我们可以得知,以经验风险函数最小化为策略可以使模型**在训练集上的**误差最低,精度最高。\n", 397 | "\n", 398 | "看到这里,可能有同学会问:既然这个模型在训练集上误差最低,那这个策略是不是完美的呢?答案是:未必。因为绝大多数机器学习方法的最终目的是对未知新数据有好的预测效果,而不是对已知数据有好的预测效果。换句话说,我们评判模型的好坏应当着眼于其测试集上的性能而不是训练集上的性能。以经验风险函数最小化为策略确实可以使模型在训练集上的误差最低,但是这样的模型在测试集上的表现未必让人满意,因为可能会出现**过拟合现象**。\n", 399 | "\n", 400 | "我们在这里浅浅解释一下过拟合,进一步讨论会放在下面的部分。通俗地讲,过拟合就是模型对训练集上的数据特征过度地学习,把一些事实上不重要的噪声特征也纳入了模型,导致模型的复杂度过高,对未知数据的预测能力降低。简单地说,过拟合就是“钻了牛角尖,对一些细枝末节的东西过于在意”。\n", 401 | "\n", 402 | "那么,如何防止过拟合呢?我们在前面的解释中可以看到,过度学习的一大表现就是模型的复杂度过高,那如果我在原来的经验风险函数中加入一个对模型复杂度的“惩罚”,是不是就可以解决了这一问题呢?答案是肯定的,这就是**结构风险函数**的来由,它的公式为:\n", 403 | "$$\n", 404 | "R_{\\mathrm{srm}}(f)=\\frac{1}{N} \\sum_{i=1}^N L\\left(y_i, f\\left(x_i\\right)\\right)+\\lambda J(f)\n", 405 | "$$\n", 406 | "其中,$J(f)$是模型的复杂度,每个模型的复杂度函数定义都有不同。模型越复杂,$J(f)$越高;$\\lambda \\geqslant 0$是惩罚系数,$\\lambda$越高,复杂度的惩罚就越大。结构风险小的模型要求模型的训练集平均误差与模型复杂度都同时小,这使得它对于未知的测试集数据有较好的预测。让结构风险函数最小化也被称为**正则化**,如下所示:\n", 407 | "$$\n", 408 | "\\min _{f \\in \\mathcal{F}} \\frac{1}{N} \\sum_{i=1}^N L\\left(y_i, f\\left(x_i\\right)\\right)+\\lambda J(f)\n", 409 | "$$\n", 410 | "总结一下,机器学习方法的策略有两种:经验风险函数最小化与结构风险函数最小化。前者不限制模型的复杂度,对训练数据集的特征学习充分,但是可能产生过拟合;后者限制模型的复杂度,不容易使模型过拟合,但是过度的正则化会使模型对特征的学习不充分(这种情况被称为欠拟合)。正则化程度的选取,需要通过调参过程确定,这方面的内容将在后续课程提及。\n" 411 | ] 412 | }, 413 | { 414 | "cell_type": "markdown", 415 | "metadata": {}, 416 | "source": [ 417 | "### 3.2.3 算法" 418 | ] 419 | }, 420 | { 421 | "cell_type": "markdown", 422 | "metadata": {}, 423 | "source": [ 424 | "我们已经知晓了学习最优参数的策略实际上就是一个最优化问题,那么最后一个步骤就是针对这些最优化问题进行计算,这就是“算法”需要考虑的事了。\n", 425 | "\n", 426 | "算法是指学习模型的具体计算方法。这里面涉及数值计算的许多方法,是较为困难的部分,且每个机器学习方法都有各自独特的计算方法,因此在后续的机器学习方法讲解上,我们不会注重对“算法”部分的讲解。大家只需要稍作了解即可。\n", 427 | "\n", 428 | "注意:我们在这里说的算法特指计算方法,和在前面大章节说的“机器学习算法”中的算法并不一样,“机器学习算法”中的算法更多的理解为是一种“方法”,讲的人多了也便成了一种说法上的固定搭配。我们在后续的课程中也会经常使用“机器学习算法”、“xxx算法”这样的说法,这其中的算法实际上是方法,而非计算方法,望大家理解!" 429 | ] 430 | }, 431 | { 432 | "cell_type": "markdown", 433 | "metadata": {}, 434 | "source": [ 435 | "## 3.3 模型评估" 436 | ] 437 | }, 438 | { 439 | "cell_type": "markdown", 440 | "metadata": {}, 441 | "source": [ 442 | "经过了3.2的机器学习三要素步骤后,我们现在成功训练出了一个机器学习模型$f(X)$。但是,任务还没有完全结束,我们还有一项重要的任务需要进行——模型已经训练好了,可是它的“好不好”需要如何进行评估呢?那么这就是本章节需要探讨的内容!" 443 | ] 444 | }, 445 | { 446 | "cell_type": "markdown", 447 | "metadata": {}, 448 | "source": [ 449 | "### 3.3.1 评估指标——测试误差" 450 | ] 451 | }, 452 | { 453 | "cell_type": "markdown", 454 | "metadata": {}, 455 | "source": [ 456 | "我们在前面提到过,机器学习更注重对未知数据的预测能力,因此未参与到模型训练过程的测试集数据的误差(test error)便可以用来评估模型对未知数据的预测能力。\n", 457 | "\n", 458 | "当损失函数$L$给定后,我们便可以计算测试集的平均误差了。假设训练完毕的模型为$Y=\\hat{f}(X)$,则关于测试集的平均损失为:\n", 459 | "$$\n", 460 | "e_{\\mathrm{test}}=\\frac{1}{N^{\\prime}} \\sum_{i=1}^{N^{\\prime}} L\\left(y_i, \\hat{f}\\left(x_i\\right)\\right)\n", 461 | "$$\n", 462 | "其中,$N^{\\prime}$为测试集样本容量。\n", 463 | "\n", 464 | "值得注意的是,测试误差所采用的损失函数$L$与策略中的训练误差损失函数$L$未必是一致的,这种情况在分类问题上比较常见。例如,Xgboost模型所采用的训练损失函数是对数损失函数的变式,而测试损失函数则根据需求变化——既可以是0-1损失函数,也可以是诸如精确率(precision)与召回率(recall)等指标。当然,也有两者一致的情况,如回归问题的训练、测试损失函数都为平方损失函数。\n", 465 | "\n", 466 | "最后,如果一个模型的测试误差小,说明它对未知数据有较强的预测能力,我们称这种对未知数据的预测能力为**泛化能力(generalization ability)**" 467 | ] 468 | }, 469 | { 470 | "cell_type": "markdown", 471 | "metadata": {}, 472 | "source": [ 473 | "### 3.3.2 过拟合及其解析" 474 | ] 475 | }, 476 | { 477 | "cell_type": "markdown", 478 | "metadata": {}, 479 | "source": [ 480 | "在这一章节,我们对过拟合现象进行简要的剖析,并借用一个M次多项式建模的例子向大家直观地展示过拟合的后果。\n", 481 | "\n", 482 | "我们先给出过拟合的定义:过拟合是指学习时选择的模型所包含的参数过多,以至于其对训练集数据有很好的预测效果,但是对测试集数据效果很差的现象。\n", 483 | "\n", 484 | "下面,我们用一个例子向大家说明过拟合的危害。假设给定一个样本数为10的一维训练数据集:\n", 485 | "$$\n", 486 | "T=\\left\\{\\left(x_1, y_1\\right),\\left(x_2, y_2\\right), \\cdots,\\left(x_{10}, y_{10}\\right)\\right\\}\n", 487 | "$$\n", 488 | "我们需要对这10个给定样本点进行多项式拟合任务——即假定给定数据是由某个$M$次多项式函数生成的,我们要找出最有可能产生这些数据的$M$次多项式函数。\n", 489 | "\n", 490 | "设$M$次多项式为:\n", 491 | "$$\n", 492 | "f_M(x, w)=w_0+w_1 x+w_2 x^2+\\cdots+w_M x^M=\\sum_{j=0}^M w_j x^j\n", 493 | "$$\n", 494 | "根据多项式函数的知识,由于我们有10个数据点,因此可以拟合0~9次多项式函数。样本点分布与各阶多项式曲线拟合的情况如下:\n", 495 | "\n", 496 | "\n", 497 | "\n", 498 | "四张图分别为$M=0,M=1,M=3,M=9$的拟合曲线情况,注意到每张图中都有一条相同的曲线,那是产生这些样本点的实际多项式模型(之所以不是完全贴合,是因为有噪声的添加)。\n", 499 | "\n", 500 | "可以看到,$M=0$时,多项式模型就是一条常数直线,拟合效果非常差,属于“欠拟合”;$M=1$时,多项式模型仅能学习到样本点的大致趋势,拟合效果也不佳。$M=3$时,模型已经能较好的拟合样本点了,且我们知道它已经很接近真实模型了;$M=9$时,模型对样本点做到了完全的贴合,但是我们知道训练样本点是存在噪声的,这种过度的拟合实际上把噪声信息也学习进了模型当中。这样的模型一旦对未知数据进行预测,效果将惨不忍睹!想象一下,还是由那一条曲线产生新的测试样本点,九阶模型预测的误差将有多大呢!\n", 501 | "\n", 502 | "从上述例子中,我们可以洞见训练误差、测试误差与模型复杂度间的大致关系。在模型复杂度较低的时候,训练、测试误差都很高,这是因为模型过于简单导致对数据特征的学习不充分,也就是模型欠拟合;随着模型复杂度的提高,训练、测试误差同步下降,但是测试误差存在一个理论的极小值点,在极小值点之后,随着复杂度的继续提高,测试误差将逐渐增大,发生过拟合。\n", 503 | "\n", 504 | "" 505 | ] 506 | }, 507 | { 508 | "cell_type": "markdown", 509 | "metadata": {}, 510 | "source": [ 511 | "## 3.4 模型选择" 512 | ] 513 | }, 514 | { 515 | "cell_type": "markdown", 516 | "metadata": {}, 517 | "source": [ 518 | "我们在前面遵循机器学习方法三要素训练出了一个模型,并使用测试误差对这个模型进行了评估,那么最后一个环节来了——如何在众多可能的模型中选择出相对最优的那个模型呢?事实上,这个问题可以分为两部分:\n", 519 | "1. 如何在不同类别的模型中选出最好的类别;\n", 520 | "\n", 521 | "2. 如何在一类模型中选出最优的那组参数。\n", 522 | "\n", 523 | "对于第一个问题,我认为首先要做的是对各种模型都要有一定的了解,清楚每一种模型适合使用在怎样的场景下,这样在拿到数据后,我们心里自然就会知道可能有哪些模型适合处理这样的数据。如果可能存在多个模型效果相近,我们则可以比较这些模型的指标,选取最优者。\n", 524 | "\n", 525 | "关键问题是第二个。我们在前面的分析中一直有一个假设:模型是存在理论最优解的,然而在实际情况中我们不可能找到这种理想解,只能在众多参数组合中找到相对最优的那组。简单来说,就是需要我们列出可能的参数组合,再使用一定的选择方法找出最优的那组,并以这组参数作为当前最优的参数解。一个常用的选择方法就是交叉验证法,这个方法的介绍我们将留在后续章节,在这里我们先埋下一个坑,敬请期待!" 526 | ] 527 | }, 528 | { 529 | "cell_type": "markdown", 530 | "metadata": {}, 531 | "source": [] 532 | } 533 | ], 534 | "metadata": { 535 | "kernelspec": { 536 | "display_name": "Python 3.8.12 ('ml')", 537 | "language": "python", 538 | "name": "python3" 539 | }, 540 | "language_info": { 541 | "name": "python", 542 | "version": "3.8.12" 543 | }, 544 | "orig_nbformat": 4, 545 | "vscode": { 546 | "interpreter": { 547 | "hash": "d04da679f0afee458c3e357f6d2cf382c79de022618e35f1262af9ecf478f5e1" 548 | } 549 | } 550 | }, 551 | "nbformat": 4, 552 | "nbformat_minor": 2 553 | } 554 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task1_线性规划(上)模型建立/Task 1_线性规划(上)模型建立.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 1 问题引导的线性规划知识" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## 1.1 题目简介:\n", 15 | " (源自2000年国赛B题$,$有改动)\n", 16 | "\n", 17 | "![rat](fig/fig4.png)\n", 18 | "\n", 19 | "### ❓ 问题背景\n", 20 | "如上图所示$,$要铺设一条 $A_1\\rightarrow A_2\\rightarrow \\cdots\\rightarrow A_{15}$ 的输送天然气的主管道$,$经筛选后可以生产这种主管道钢管的钢厂有 $S_1,S_2,\\cdots,S_7$。图中单细线表示公路$,$双细线表示要铺设的管道 (假设沿管道或者原来有公路$,$或者建有施工公路)$,$圆圈表示火车站$,$每段公路和管道旁的阿拉伯数字表示里程 (单位km).\n", 21 | "\n", 22 | "为方便计$,1$km主管道钢管称为1单位钢管。\n", 23 | "\n", 24 | "\n", 25 | "\n", 26 | "钢厂 $S_i$ 在指定期限内能生产该钢管的最大数量为 $s_i$ 个单位$,$钢管出厂销价 $1$ 单位钢管为 $p_i$ 万元$,$如下表:\n", 27 | "\n", 28 | "$i$|$1$|$2$|$3$|$4$|$5$|$6$|$7$\n", 29 | ":--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:\n", 30 | "$s_i$|$800$|$800$|$1000$|$2000$|$2000$|$2000$|$3000$\n", 31 | "$p_i$|$160$|$155$|$155$|$160$|$155$|$150$|$160$\n", 32 | "\n", 33 | "\n", 41 | "\n", 42 | "\n", 43 | "公路运输费用为1单位钢管每公里 $0.1$ 万元 (不足整公里部分按整公里计算)。\n", 44 | "\n", 45 | "钢管可由铁路$,$公路运往铺设地点 (不只是运到点 $A_1,A_2,\\cdots,A_{15},$而是管道全线)$,$ 铺设费用为每公里 $0.1$ 万元.\n", 46 | "\n", 47 | "请制定一个主管道钢管的订购和运输计划$,$使总费用最小 (给出总费用)." 48 | ] 49 | }, 50 | { 51 | "cell_type": "markdown", 52 | "metadata": {}, 53 | "source": [ 54 | "## 1.2 模型构建: 线性规划模型的引入\n", 55 | "\n", 56 | "### 1.2.1 遇到一道建模难题时$,$ 我们究竟要怎么处理$?$\n", 57 | "\n", 58 | "看到题目第一感觉怎么样$?$\n", 59 | "\n", 60 | "题目好乱$!$\n", 61 | "\n", 62 | "国赛下来问题约我等今日决战$,$ 如何对敌$?$ Don't be afraid$!$ 越是复杂的问题越要冷静分析$!$\n", 63 | "\n", 64 | "
理解问题复杂之处$,$作出简化$,$乃是我们面对建模难题的第一要务.
\n", 65 | " \n", 66 | "- **题目在讲什么:** 求订购以及运输的费用最小方案.\n", 67 | "- **题目难在哪里:** \n", 68 | " 1. **抽象之处**: 每相邻两个节点中间的管道是必须只能由一家钢厂供应钢管铺设$,$ 还是可以连续地切分成几块由不同钢厂供应钢管铺设$?$\n", 69 | "\n", 70 | " 2. **复杂之处**: 钢厂$,$ 节点$,$ 路线选择众多.\n", 71 | "\n", 72 | "我们思考一下$,$ 解决抽象之处的关键是在于搞清楚钢管可以 (但非必须) 怎么运输$,$ 题目告诉我们$,$ 钢管可以经由铁路$,$ 公路运输到整条管道上的**任意一点**铺设$,$ 那么我们可以**合理认为$,$ 钢管运输到节点后$,$ 沿着节点左右连续延伸着边运输边铺设,** 即整条管道是由一段段不同钢厂供应的钢管组成的$,$ 只是运输需要经过节点 $A_i(i=1,2,\\cdots,15)$. 然而$,$ 这么一个简单的机制处理起来可没有想象中的那么简单$,$ 这便是第二个复杂之处的影响: 节点$,$ 钢厂$,$ 路线五花八门$,$ 选择一多起来$,$ 组合的数目便成对增长$,$ 大幅提升求解难度. \n", 73 | "\n", 74 | "那怎么办$?$ 摆烂呗$!$ \n", 75 | "\n", 76 | "欸$,$ 还真可以摆烂$,$ 题目既然复杂到一下子想不出怎么做$,$ 我们可以手动调节难度呀$,$ 题目复杂之处在于三多: 节点多$,$ 钢厂多$,$ 路线多$,$ 那我们不妨就先简化到最简单的三少情况: 节点少$,$ 钢厂少$,$ 路线少$,$ 解决了简化版的问题之后再慢慢地还原复杂度.\n", 77 | "\n", 78 | "### 1.2.2 简化问题后的优化模型建立\n", 79 | "承上$,$ 这里我们截取整块区域的一小部分$,$ 仅含两个钢厂 $S_3,S_4$ (钢厂少) 以及三个节点 $A_9,A_{10},$ (节点少) 将铁路视为公路后选取了最短的运输路线 (路线选择少) $,$ 并且做了一些~~适合讲解~~的必要性数值改动 (咳咳)$,$ 从而将问题简化为下图\n", 80 | "\n", 81 | "![rat](fig/fig3.jpg) \n", 82 | "\n", 83 | "其中$,$ 订购上限以及费用如下表\n", 84 | "\n", 85 | "$i$|3|4\n", 86 | ":--:|:--:|:--:\n", 87 | "$s_i$|800|1600\n", 88 | "$p_i$|155|160\n", 89 | "\n", 90 | "题目需要的是$,$ 总费用最小$,$ 而总费用由订购以及运输组成$,$ 我们首先明确自己求的是什么: __建立优化模型第1.1步——目标函数的确定.__\n", 91 | "\n", 92 | "令 $W_{total}$ 表示总费用$, W_{order},W_{trans}$ 分别表示订购与运输费用$,$ 那么我们的目标即是求出\n", 93 | " \n", 94 | "
$\\min W_{total}=\\min \\left (W_{order}+W_{trans}\\right),$\n", 95 | " \n", 96 | "好$,$ 停停$,$ 话是这么说$,$ 我哪知道 $W_{order},W_{trans}$ 怎么算$?$ 换句话说$, W_{order},W_{trans}$ 的函数关系可还没给$,$ 由什么来当自变量也还不知道咧!\n", 97 | " \n", 98 | "这就来到__建立优化模型第1.2步——决策变量的确定.__ 那么我们就需要注意到题目中是如何计算费用的了.\n", 99 | "\n", 100 | "事实上看完题目我们大概就会清楚$,$ 所谓的订购计划就是从哪家钢厂订购多少钢管$,$ 由于钢管按单位长度计算费用$,$ 那么 $W_{order}$ 便仅由在钢厂 $S_3,S_4$ 订购的钢管单位 $x_3,x_4$ 决定$;$ 其次是运输费用如何确定: 题目告诉我们$,$ 钢管可以经由公路运输到整条管道上的**任意一点**铺设$,$ 那么我们可以**合理认为$,$ 钢管运输到节点后$,$ 沿着节点左右连续延伸着边运输边铺设.** 从而$,$ 运输费用 (整合上铺设费用) 也仅与 $x_3,x_4$ 有关$,$ 代入数据可得到目标函数关于决策变量的解析式\n", 101 | "\n", 102 | "\n", 103 | "\\begin{align}\n", 104 | "W_{order}&=155x_3+160x_4,\\\\\n", 105 | "W_{trans}&= (73.2+0.1) x_3+ (93+0.1) x_4\n", 106 | "\\end{align}\n", 107 | "\n", 108 | "将上面的式子,带入目标函数得\n", 109 | "
$\\min W_{total}=228.3x_3+253.1x_4.$\n", 110 | "\n", 111 | "另外的$,$ 心细的同学应该在这里会发现一些端倪: 自变量\"们\"是蕴含内在关系的$!$ 这会影响我们自变量的取值范围$,$ 因此我们还需要做**建立优化模型第1.3步——约束关系的确定.** \n", 112 | "\n", 113 | "首先我们很容易发现$,$ 从两家订购的钢管单位 $x_3,x_4$ 应该要等于 $A_9$ 至 $A_{10}$ 的管道长度$,$ 则\n", 114 | "\n", 115 | "$$x_3+x_4= 2000,$$\n", 116 | "\n", 117 | "再从题目中我们知道每家钢厂都有订购上限 $s_i,$ 即\n", 118 | "\n", 119 | "$$x_3\\leqslant s_3,x_4\\leqslant s_4,$$\n", 120 | "\n", 121 | "从而我们得到了完整的优化模型\n", 122 | "\n", 123 | "$$\\min 228.3x_3+253.1x_4$$\n", 124 | "$$s.t. \\begin{cases}\n", 125 | "x_3+x_4=2000,\\\\\n", 126 | "0\\leqslant x_3\\leqslant 1000,\\\\\n", 127 | "0\\leqslant x_4\\leqslant 1600,\n", 128 | "\\end{cases}\n", 129 | "$$\n", 130 | " \n", 131 | "不看不知道$,$ 一看吓一跳$,$ 这不就是我们高中所学过的线性规划嘛$!$ 解决它不过是有手就行的事$,$ 我们画出 $x_3,x_4$ 的可行域$,$ \n", 132 | "\n", 133 | "\n", 134 | "\n", 135 | "\n", 136 | " " 137 | ] 138 | }, 139 | { 140 | "cell_type": "markdown", 141 | "metadata": {}, 142 | "source": [ 143 | "图解法告诉我们:\n", 144 | "1. 该优化问题的可行域为一线段,即图中红色部分。我们的目标就是找到**当目标函数与红色线段有交点时,取值最小的点**;\n", 145 | "2. 显然取值最小的点在$ (1000,1000) $ 处取到,即最优解在 $ (1000,1000) $ 处取得;\n", 146 | "3. 将 $ (1000,1000) $ 代入目标函数,得最小费用为 $481400$ 万元.\n", 147 | "\n", 148 | "下面我们使用Scipy的优化工具,来尝试解决这一简单的问题,并与我们图解法的结果做比较." 149 | ] 150 | }, 151 | { 152 | "cell_type": "code", 153 | "execution_count": 1, 154 | "metadata": { 155 | "ExecuteTime": { 156 | "end_time": "2022-08-14T13:33:13.393907Z", 157 | "start_time": "2022-08-14T13:33:12.980439Z" 158 | } 159 | }, 160 | "outputs": [], 161 | "source": [ 162 | "import numpy as np\n", 163 | "from scipy.optimize import minimize" 164 | ] 165 | }, 166 | { 167 | "cell_type": "code", 168 | "execution_count": 31, 169 | "metadata": { 170 | "ExecuteTime": { 171 | "end_time": "2022-08-08T12:17:54.103202Z", 172 | "start_time": "2022-08-08T12:17:53.993870Z" 173 | } 174 | }, 175 | "outputs": [ 176 | { 177 | "name": "stdout", 178 | "output_type": "stream", 179 | "text": [ 180 | "最优值: 481299.9999999999\n", 181 | "最优解: [1000. 1000.]\n" 182 | ] 183 | } 184 | ], 185 | "source": [ 186 | "fun = lambda x : (228.3 * x[0]) + (253.1 * x[1]) # 目标函数\n", 187 | "\n", 188 | "cons = ({'type': 'eq', 'fun': lambda x: x[0] + x[1] - 2000}, # 等式约束,x0+x1-2000 = 0\n", 189 | " {'type': 'ineq', 'fun': lambda x: x[0]}, # 不等式约束 x0 >=0 \n", 190 | " {'type': 'ineq', 'fun': lambda x: x[1]},\n", 191 | " {'type': 'ineq', 'fun': lambda x: 1000 - x[0]}, # 1600-x0 >= 0\n", 192 | " {'type': 'ineq', 'fun': lambda x: 1600 - x[1]}\n", 193 | " )\n", 194 | "\n", 195 | "x0 = np.array((1.0, 1.0)) # 设置初始值(随机设置即可)\n", 196 | "\n", 197 | "res = minimize(fun, x0, method='SLSQP', constraints=cons) # 调用最小值模块\n", 198 | "print(\"最优值:\", res.fun)\n", 199 | "print(\"最优解:\", res.x)" 200 | ] 201 | }, 202 | { 203 | "cell_type": "markdown", 204 | "metadata": {}, 205 | "source": [ 206 | "### 1.2.3 逐步还原问题的复杂度——线性规划模型的建立\n", 207 | "毕竟不是阿Q$,$ 解决了最简单的Boss之后我们就要开始调整难度了$,$ 从上节我们其实也发现了$,$ 这个问题的目标函数$,$ 约束条件$,$ 都是**线性**的$,$ 这样的优化模型我们称之为**线性规划模型**$,$ 其一般形式如下\n", 208 | "\n", 209 | "$$\\min z (\\boldsymbol{x}) =c_1x_1+c_2x_2+\\cdots+c_nx_n,$$\n", 210 | "\n", 211 | "$$s.t.\\begin{cases}\n", 212 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n\\leqslant b_1,\\\\\n", 213 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n\\leqslant b_2,\\\\\n", 214 | "\\vdots\\\\\n", 215 | "a_{k1}x_1+a_{k2}x_2+\\cdots+a_{kn}x_n\\leqslant b_k,\\\\\n", 216 | "a_{k+1,1}x_1+a_{k+1,2}x_2+\\cdots+a_{k+1,n}x_n= b_{k+1},\\\\\n", 217 | "a_{k+2,1}x_1+a_{k+2,2}x_2+\\cdots+a_{k+2,n}x_n=b_{k+2},\\\\\n", 218 | "\\vdots\\\\\n", 219 | "a_{k+l,1}x_1+a_{k+l,2}x_2+\\cdots+a_{k+l,n}x_n=b_{k+l},\\\\\n", 220 | "x_i\\geqslant 0,i=1,2,\\cdots,n\n", 221 | "\\end{cases}$$\n", 222 | "\n", 223 | "其中 $\\boldsymbol{x}= (x_1,x_2,\\cdots,x_n) $ 为 $n$ 个决策变量 (**取值范围是连续的**) $,$ 含有 $k$ 条线性的不等式约束以及 $l$ 条线性的等式约束$,x_i,b_j$ 皆为**非负数**.\n", 225 | "\n", 226 | "那变量的个数一旦大于两个$,$ 我们就没办法用图解法求解了$,$ 这个时候怎么办呢$?$ 别着急$,$ 一般的线性规划模型的求解方式早已成熟$,$ 我们可以直接使用各种软件以及代码进行求解$,$ 在下节讲解原理之前$,$ 我们不妨先把求解的方式当成一个黑盒子来看待——仅代入数据求解$,$ 暂不探索其中奥妙.\n", 227 | "\n", 228 | "#### 第一步: 简单增加节点数\n", 229 | "回到问题来$,$ 我们现在需要从上节中最简单的“三少” (厂少$,$ 节点少$,$ 路线少) 情形慢慢还原至题目原本的“三多” (厂多$,$ 节点多$,$ 路线多) 情形了$,$ 先来看看两钢厂三节点的情况\n", 230 | "\n", 231 | "![rat](fig/fig2.jpg)\n", 232 | "\n", 233 | "该情形与上节的情形本质的不同便是我们需要考虑 $S_3,S_4$ 对中间节点 $A_{10}$ 的运输计划$,$ $S_3,S_4$ 分别该往 $A_{10}$ 运输多少$,$ 运输后是往左边铺设还是右边铺设亦或两边一起铺设都是我们需要考虑的$,$ 因此对于三节点的情形$,$ 我们需要考虑第 $i$ 个钢厂对中间节点 $A_{10}$ 运输钢管后从该节点出发$,$ 左边铺设的钢管量 $z_{i,10-}$ 以及右边铺设的钢管量 $z_{i,10+}$. 这里的正(负)号表示从节点 $A_{10}$的左边(右边)开始铺管。\n", 234 | "\n", 235 | "\n", 236 | "而同样的$,$ 我们也可以引入 $S_3$ 运输至 $A_9$ 往右边铺设的钢管长度 $z_{3,9+}$ 以及 $S_4$ 运输至 $A_{11}$ 往左边铺设的钢管长度 $z_{4,11-}$ (**思考一下**: 为什么不考虑 $z_{3,11-},z_{4,9+}$) 从而替代掉整体的订购钢管长度 $x_3,x_4,$ 那么新的优化模型即为\n", 237 | "\n", 238 | "$$\\min W_{order}+W_{trans}$$\n", 239 | "$$s.t.\\begin{cases}\n", 240 | "x_3=z_{3,9+}+z_{3,10+}+z_{3,10-},\\\\\n", 241 | "x_4=z_{4,10+}+z_{4,10-}+z_{4,11-},\\\\\n", 242 | "x_i\\leqslant s_i,i=3,4,\\\\\n", 243 | "x_3+x_4=780,\\\\\n", 244 | "z_{3,9+}\\geqslant 0,z_{4,11-}\\geqslant 0,\\\\\n", 245 | "z_{i,10+}\\geqslant 0,z_{i,10-}\\geqslant 0,i=3,4,\\\\\n", 246 | "\\end{cases}$$\n", 247 | "\n", 248 | "其中\n", 249 | "\n", 250 | "$$W_{order}=155x_3+160x_4,$$\n", 251 | "$$W_{trans}=73.3z_{3,9+}+101.1 (z_{3,10+}+z_{3,10-}) +93.1 (z_{4,10+}+z_{4,10-}) +78.9z_{4,11-}.$$\n", 252 | "\n", 253 | "尽管变量数多又怎么样呢$?$ 这仍然是一个线性规划模型$,$ 在成熟的求解方法面前$,$ 不过是一只纸糊的老虎.\n", 254 | "\n", 255 | "为了适应Scipy的表达语法,一共是八个变量,我们将其对应转化为一个长度为8的变量数组,我们先来将变量做一个对应\n", 256 | "\n", 257 | "| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n", 258 | "| -------- | ----- | ----- | ------------- | -------------- | -------------- | -------------- | -------------- | -------------- |\n", 259 | "| 模型变量 | $x_3$ | $x_4$ | $z_{3,9^{+}}$ | $z_{3,10^{-}}$ | $z_{3,10^{-}}$ | $z_{4,10^{-}}$ | $z_{4,10^{+}}$ | $z_{4,11^{-}}$ |\n", 260 | "| 数组索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 13, 266 | "metadata": { 267 | "ExecuteTime": { 268 | "end_time": "2022-08-07T08:07:59.810195Z", 269 | "start_time": "2022-08-07T08:07:59.631623Z" 270 | } 271 | }, 272 | "outputs": [ 273 | { 274 | "data": { 275 | "text/plain": [ 276 | " fun: 178074.00000014115\n", 277 | " jac: array([155. , 160. , 73.30078125, 101.09960938,\n", 278 | " 101.09960938, 93.09960938, 93.09960938, 78.90039062])\n", 279 | " message: 'Optimization terminated successfully'\n", 280 | " nfev: 99\n", 281 | " nit: 11\n", 282 | " njev: 11\n", 283 | " status: 0\n", 284 | " success: True\n", 285 | " x: array([ 7.80000000e+02, 9.27798283e-10, 7.80000000e+02, 1.58856217e-09,\n", 286 | " 1.58850488e-09, 1.51388813e-09, 1.51349067e-09, -2.09962536e-09])" 287 | ] 288 | }, 289 | "execution_count": 13, 290 | "metadata": {}, 291 | "output_type": "execute_result" 292 | } 293 | ], 294 | "source": [ 295 | "fun = lambda x : (155 * x[0] +160 * x[1]) + (73.3 * x[2] + 101.1 * (x[3] + x[4]) + 93.1*(x[5] + x[6]) + 78.9*x[7])# 目标函数\n", 296 | "\n", 297 | "cons = ({'type': 'eq', 'fun': lambda x: x[0] - x[2] - x[3] - x[4]}, # 等式约束\n", 298 | " {'type': 'eq', 'fun': lambda x: x[1] - x[5] - x[6] - x[7]},\n", 299 | " {'type': 'eq', 'fun': lambda x: x[0] + x[1] - 780},\n", 300 | " {'type': 'ineq', 'fun': lambda x: 1000 - x[0]}, # 不等式约束\n", 301 | " {'type': 'ineq', 'fun': lambda x: 2000 - x[1]},\n", 302 | " {'type': 'ineq', 'fun': lambda x: x[2]},\n", 303 | " {'type': 'ineq', 'fun': lambda x: x[3]},\n", 304 | " {'type': 'ineq', 'fun': lambda x: x[4]},\n", 305 | " {'type': 'ineq', 'fun': lambda x: x[5]},\n", 306 | " {'type': 'ineq', 'fun': lambda x: x[6]},\n", 307 | " {'type': 'ineq', 'fun': lambda x: x[7]},\n", 308 | " )\n", 309 | "\n", 310 | "x0 = np.array((1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0)) # 设置初始值(随机设置即可)\n", 311 | "\n", 312 | "res = minimize(fun, x0, method='SLSQP', constraints=cons) # 调用最小值模块\n", 313 | "res" 314 | ] 315 | }, 316 | { 317 | "cell_type": "markdown", 318 | "metadata": {}, 319 | "source": [ 320 | "解得最终的结果为\n", 321 | "$x_4 = 780, z_{3,9^+} = 780$,其他全为0." 322 | ] 323 | }, 324 | { 325 | "cell_type": "markdown", 326 | "metadata": {}, 327 | "source": [ 328 | "#### 第二步: 完全还原“三多”\n", 329 | "\n", 330 | "我们发现$,$ 节点数增加后的情形不过是将决策变量细化为了每个节点的左右钢管铺设量 $z_{ij+},z_{ij-},$ 其目标函数以及约束条件还是线性的$,$ 同样的道理在钢厂数的调节上也适用$,$ 只不过是将上面具体的模型变成了抽象的废话而已$,$ 在考虑 $15$ 个节点以及 $7$ 个钢厂的情况下$,$ 我们的决策变量是第 $i$ 个钢厂 $S_i$ 运输至第 $j$ 个节点 $A_j$ 后从该节点出发分别沿着左右方向铺设的钢管量 $z_{ij-},z_{ij+},i=1,2,\\cdots,7,j=1,2,\\cdots,15$ 其中起点终点有一边不需要铺设即 $z_{i1-}=z_{i,15+}=0,$ 约束条件仍然参照上文. 如图所示\n", 331 | "\n", 332 | "![rat](fig/fig4.png) \n", 333 | "\n", 334 | " 我们需要深入考虑的是$,$ 第 $i$ 个钢厂 $S_i$ 运输至第 $j$ 个节点 $A_j$ 的路线选择有限$,$ 因此也必定存在最短路径 $c'_{ij}$ 以及其最小运输费用 $0.1c_{ij}'=c_{ij},$ 指定最短路线进行运输即可$,$ 此处通过计算机有限次计算即可事先得到 $c_{ij}$ 的数据进行储存如下\n", 335 | " \n", 336 | "目标函数的解析式增广为\n", 337 | "$$W_{order}=\\sum\\limits_{i=1}^{7}\\left (p_i\\sum\\limits_{j=1}^{15} (z_{ij+}+z_{ij-}) \\right) ,W_{trans}=\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij} (z_{ij+}+z_{ij-}) ,$$\n", 338 | "完善所有节点数以及钢厂数之后的线性规划模型如下\n", 339 | "$$\\min \\sum\\limits_{i=1}^{7}\\left (p_i\\sum\\limits_{j=1}^{15} (z_{ij+}+z_{ij-}) \\right) +\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij} (z_{ij+}+z_{ij-}) $$\n", 340 | "$$s.t. \\begin{cases}\n", 341 | "\\sum\\limits_{j=1}^{15} (z_{ij+}+z_{ij-}) \\leqslant s_i,i=1,2,\\cdots,15,\\\\\n", 342 | "\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15} (z_{ij+}+z_{ij-}) =L,\\\\\n", 343 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 344 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\n", 345 | "\\end{cases}\n", 346 | "$$\n", 347 | "其中$,p_{i}$ 是 $S_i$ 的钢管单位订购价$,s_i$ 是 $S_i$ 的订购上限$,c_{ij}$ 是 $S_i$ 到 $A_j$ 的公路最短路线费用$,L$ 是管道总长$,$ **皆为常数**. 从结构上来看$,$ 尽管它的决策变量与约束条件都非常多 (光是决策变量就有 $15\\times 7=105$ 个) $,$ 本质上还是一个线性规划问题$,$ 在计算出 $c_{ij}$ 后即可实现其求解.\n", 348 | "\n", 349 | "

🎯作业一:请你仿照上面模型二的代码,尝试求解上述模型?

\n", 350 | "\n" 351 | ] 352 | }, 353 | { 354 | "cell_type": "code", 355 | "execution_count": null, 356 | "metadata": {}, 357 | "outputs": [], 358 | "source": [ 359 | "# 请写下你的代码\n", 360 | "\n" 361 | ] 362 | }, 363 | { 364 | "cell_type": "markdown", 365 | "metadata": {}, 366 | "source": [ 367 | "### 1.2.4 使用Google ORTools求解线性规划模型\n", 368 | "事实上,我们在求解线性规划时,Scipy已经足够用了。但为了后续的学习平滑性,我们在此先介绍Google ORTools优化求解器的安装与简单实用,让大家提前熟悉.\n", 369 | "[请点击此处,阅读如何安装Google ORTools.](https://kgakmh4ktc.feishu.cn/docx/doxcnF2t6HNgECgZPuL1lVVZNAb)\n", 370 | "\n", 371 | "对于第一个优化模型\n", 372 | "\n", 373 | "$$\\min 228.3x_3+253.1x_4$$\n", 374 | "$$s.t. \\begin{cases}\n", 375 | "x_3+x_4=2000,\\\\\n", 376 | "0\\leqslant x_3\\leqslant 1000,\\\\\n", 377 | "0\\leqslant x_4\\leqslant 1600,\n", 378 | "\\end{cases}\n", 379 | "$$\n", 380 | "\n", 381 | "我们已经介绍过Scipy优化模块的求解方法,接下来我们来尝试使用Google ORTools进行求解.要解决线性规划问题,你的求解程序应该包括:\n", 382 | "\n", 383 | "1. 导入线性求解器包装器 \n", 384 | "2. 声明 LP 求解器, \n", 385 | "3. 定义变量,\n", 386 | "4. 定义约束,\n", 387 | "5. 定义目标,\n", 388 | "6. 调用 LP 求解器\n", 389 | "7. 输出解决方案\n" 390 | ] 391 | }, 392 | { 393 | "cell_type": "code", 394 | "execution_count": 5, 395 | "metadata": { 396 | "ExecuteTime": { 397 | "end_time": "2022-08-08T10:54:49.317383Z", 398 | "start_time": "2022-08-08T10:54:49.300426Z" 399 | } 400 | }, 401 | "outputs": [], 402 | "source": [ 403 | "# 导入线性求解器,线性和整数求解的API都在其中\n", 404 | "from ortools.linear_solver import pywraplp" 405 | ] 406 | }, 407 | { 408 | "cell_type": "code", 409 | "execution_count": 16, 410 | "metadata": { 411 | "ExecuteTime": { 412 | "end_time": "2022-08-08T10:59:32.710992Z", 413 | "start_time": "2022-08-08T10:59:32.694036Z" 414 | } 415 | }, 416 | "outputs": [], 417 | "source": [ 418 | "# 声明求解器\n", 419 | "solver = pywraplp.Solver.CreateSolver('GLOP')" 420 | ] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "execution_count": 17, 425 | "metadata": { 426 | "ExecuteTime": { 427 | "end_time": "2022-08-08T10:59:32.993291Z", 428 | "start_time": "2022-08-08T10:59:32.982277Z" 429 | } 430 | }, 431 | "outputs": [ 432 | { 433 | "name": "stdout", 434 | "output_type": "stream", 435 | "text": [ 436 | "变量个数 = 2\n" 437 | ] 438 | } 439 | ], 440 | "source": [ 441 | "# 创建变量 \n", 442 | "x3 = solver.NumVar(0, 1000, 'x3') \n", 443 | "x4 = solver.NumVar(0, 1600, 'x4')\n", 444 | "\n", 445 | "print('变量个数 =', solver.NumVariables())" 446 | ] 447 | }, 448 | { 449 | "cell_type": "markdown", 450 | "metadata": {}, 451 | "source": [ 452 | "`NumVar`说明该变量是连续型变量,前面两个参数分别是该变量取值的上下界.如果没有上界的话设置为`solver.infinity()`. " 453 | ] 454 | }, 455 | { 456 | "cell_type": "code", 457 | "execution_count": 22, 458 | "metadata": { 459 | "ExecuteTime": { 460 | "end_time": "2022-08-08T10:59:41.931437Z", 461 | "start_time": "2022-08-08T10:59:41.911522Z" 462 | } 463 | }, 464 | "outputs": [ 465 | { 466 | "name": "stdout", 467 | "output_type": "stream", 468 | "text": [ 469 | "约束个数 = 1\n" 470 | ] 471 | } 472 | ], 473 | "source": [ 474 | "# 添加约束\n", 475 | "# Constraint 0: x3 + x4 == 2000.\n", 476 | "solver.Add(x3 + x4 == 2000)\n", 477 | "print('约束个数 =', solver.NumConstraints())" 478 | ] 479 | }, 480 | { 481 | "cell_type": "code", 482 | "execution_count": 23, 483 | "metadata": { 484 | "ExecuteTime": { 485 | "end_time": "2022-08-08T10:59:42.621673Z", 486 | "start_time": "2022-08-08T10:59:42.612665Z" 487 | } 488 | }, 489 | "outputs": [], 490 | "source": [ 491 | "# 定义目标函数\n", 492 | "solver.Minimize(228.3 * x3 + 253.1 * x4)" 493 | ] 494 | }, 495 | { 496 | "cell_type": "code", 497 | "execution_count": 24, 498 | "metadata": { 499 | "ExecuteTime": { 500 | "end_time": "2022-08-08T10:59:42.934134Z", 501 | "start_time": "2022-08-08T10:59:42.923070Z" 502 | } 503 | }, 504 | "outputs": [], 505 | "source": [ 506 | "# 调用求解器\n", 507 | "status = solver.Solve()" 508 | ] 509 | }, 510 | { 511 | "cell_type": "code", 512 | "execution_count": 28, 513 | "metadata": { 514 | "ExecuteTime": { 515 | "end_time": "2022-08-08T12:02:36.596237Z", 516 | "start_time": "2022-08-08T12:02:36.577286Z" 517 | } 518 | }, 519 | "outputs": [ 520 | { 521 | "name": "stdout", 522 | "output_type": "stream", 523 | "text": [ 524 | "Solution:\n", 525 | "最优值 = 481300.0\n", 526 | "x3 1000.0\n", 527 | "x4 1000.0\n" 528 | ] 529 | } 530 | ], 531 | "source": [ 532 | "if status == pywraplp.Solver.OPTIMAL:\n", 533 | " print('最优值 =', solver.Objective().Value())\n", 534 | " print('x3', x3.solution_value())\n", 535 | " print('x4', x4.solution_value())\n", 536 | "else:\n", 537 | " print('The problem does not have an optimal solution.')" 538 | ] 539 | }, 540 | { 541 | "cell_type": "markdown", 542 | "metadata": {}, 543 | "source": [ 544 | "ORTools的语法风格很贴合模型的建立:\n", 545 | "1. 首先是确立决策变量,你可以根据自己模型的设置给变量设置别名,避免了多变量的情况下还需要列表格对应模型变量;\n", 546 | "2. 约束条件的书写与数学表达式完全一致,只要你可以建模,那么你就可以求解;\n", 547 | "3. 后续还提供了很多场景的应用,满足多场景的优化需求;\n", 548 | "总而言之,ORTools对初学者非常友好,这也是为什么我们选择它来进行优化求解的原因!" 549 | ] 550 | }, 551 | { 552 | "cell_type": "markdown", 553 | "metadata": {}, 554 | "source": [ 555 | "

🎯作业二:请你仿照上面代码,尝试求解以下模型?

\n", 556 | "\n", 557 | "$$\\min W_{order}+W_{trans}$$\n", 558 | "$$s.t.\\begin{cases}\n", 559 | "x_3=z_{3,9+}+z_{3,10+}+z_{3,10-},\\\\\n", 560 | "x_4=z_{4,10+}+z_{4,10-}+z_{4,11-},\\\\\n", 561 | "x_i\\leqslant s_i,i=3,4,\\\\\n", 562 | "x_3+x_4=780,\\\\\n", 563 | "z_{3,9+}\\geqslant 0,z_{4,11-}\\geqslant 0,\\\\\n", 564 | "z_{i,10+}\\geqslant 0,z_{i,10-}\\geqslant 0,i=3,4,\\\\\n", 565 | "\\end{cases}$$\n", 566 | "其中\n", 567 | "$$W_{order}=155x_3+160x_4,$$\n", 568 | "$$W_{trans}=73.3z_{3,9+}+101.1 (z_{3,10+}+z_{3,10-}) +93.1 (z_{4,10+}+z_{4,10-}) +78.9z_{4,11-}.$$" 569 | ] 570 | }, 571 | { 572 | "cell_type": "code", 573 | "execution_count": null, 574 | "metadata": {}, 575 | "outputs": [], 576 | "source": [ 577 | "# 请写下你的代码\n", 578 | "\n" 579 | ] 580 | }, 581 | { 582 | "cell_type": "markdown", 583 | "metadata": {}, 584 | "source": [ 585 | "
\n" 586 | ] 587 | } 588 | ], 589 | "metadata": { 590 | "kernelspec": { 591 | "display_name": "Python 3", 592 | "language": "python", 593 | "name": "python3" 594 | }, 595 | "language_info": { 596 | "codemirror_mode": { 597 | "name": "ipython", 598 | "version": 3 599 | }, 600 | "file_extension": ".py", 601 | "mimetype": "text/x-python", 602 | "name": "python", 603 | "nbconvert_exporter": "python", 604 | "pygments_lexer": "ipython3", 605 | "version": "3.8.8" 606 | }, 607 | "latex_envs": { 608 | "LaTeX_envs_menu_present": true, 609 | "autoclose": false, 610 | "autocomplete": true, 611 | "bibliofile": "biblio.bib", 612 | "cite_by": "apalike", 613 | "current_citInitial": 1, 614 | "eqLabelWithNumbers": true, 615 | "eqNumInitial": 1, 616 | "hotkeys": { 617 | "equation": "Ctrl-E", 618 | "itemize": "Ctrl-I" 619 | }, 620 | "labels_anchors": false, 621 | "latex_user_defs": false, 622 | "report_style_numbering": false, 623 | "user_envs_cfg": false 624 | } 625 | }, 626 | "nbformat": 4, 627 | "nbformat_minor": 2 628 | } 629 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task2_线性规划(下)模型求解/Task2_线性规划(下)模型求解.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "f2a68b5e", 6 | "metadata": {}, 7 | "source": [ 8 | "# Task2 线性规划(下) 模型求解\n", 9 | "## 2.3 线性规划模型的求解方式: 单纯形法\n", 10 | "\n", 11 | "在讲解线性规划求解方法之前$,$ 我们引入必要的知识准备.\n", 12 | "\n", 13 | "### 2.3.1 必要的知识准备一: 标准形式及化为标准形式的方法\n", 14 | "\n", 15 | "对于一个线性规划$,$ 由于其约束是由线性等式以及线性不等式构成的$,$ 而在线性等式中寻找可行点 (比如求线性方程组) 比在线性不等式中寻找可行点的难度要小得多$,$ 对于任意一条线性不等式约束(不妨设为第$i$个约束)\n", 16 | "\n", 17 | "$$a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n\\leqslant b_i,$$\n", 18 | "\n", 19 | "我们引入新的变量 $s_i\\geqslant 0$ 使得原约束变为等式约束\n", 20 | "$$\\tag{1.1}\\label{eq 1}a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n+s_i=b_i,$$\n", 21 | "这样的变量 $s_i$ 我们称为松弛变量$,$ 同样的对于 $\\geqslant$ 型的不等式约束的也可引入松弛变量解决问题\n", 22 | "$$a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n\\geqslant b_i\\rightarrow a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n-s_i=b_i.$$\n", 23 | "\n", 24 | "将一个线性规划问题中所有不等式约束等式化后我们得到**线性规划的标准形式**\n", 25 | "\n", 26 | "\\begin{align}\\tag{1.2}\\label{eq 2}&\\min f(\\boldsymbol{x}) =c_1x_1+c_2x_2+\\cdots+c_nx_n,\\\\\n", 27 | "s.t.&\\begin{cases}\n", 28 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n= b_1,\\\\\n", 29 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n= b_2,\\\\\n", 30 | "\\vdots\\\\\n", 31 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m,\\\\\n", 32 | "x_i\\geqslant 0,i=1,2,\\cdots,n\n", 33 | "\\end{cases}\n", 34 | "\\end{align}\n", 35 | "其中$,$ $a_{ij}\\in R,b_i\\geqslant 0,\\boldsymbol{x}=(x_1,x_2,\\cdots,x_n)\\in R^n$ 是 $n$ 个**连续**的决策变量 (含松弛变量) $,$ 具有 $m$ 条等式约束$,$ 由于松弛变量的存在一般假设 $n\\geqslant m$ 且无法相互线性组合$,$ 我们利用矩阵也可以将其写成如下紧凑形式\n", 36 | "\n", 37 | "$$\\tag{1.3}\\label{eq 3}\\min f(\\boldsymbol{x})=\\boldsymbol{c}^T\\boldsymbol{x},$$\n", 38 | "$$s.t.\\begin{cases}A \\boldsymbol{x}=\\boldsymbol{b}\\\\\n", 39 | "\\boldsymbol{x}\\geqslant 0,\n", 40 | "\\end{cases}$$\n", 41 | "其中 $A$ 为系数矩阵$,$ 从约束无法相互线性组合可知 $A$ 的秩必为 $m$.\n", 42 | "\n", 43 | "除开引入松弛变量$,$ 对于一些常见的现实情况$,$ 我们需要一些小操作将其化为标准形式:\n", 44 | "\n", 45 | "1. 当问题需要求解的最优解是最大值时$,$ 事实上等价于求解如下问题\n", 46 | "$$\\max c_1x_1+c_2x_2+\\cdots+c_nx_n\\Leftrightarrow \\min - (c_1x_1+c_2x_2+\\cdots+c_nx_n) .$$\n", 47 | "2. 当问题的决策变量 $x_i$ 是非正的$,$ 或任意值时$,$ 我们做如下操作非负化决策变量\n", 48 | "$$x_i\\leqslant 0\\rightarrow \\text{引入}x_i'=-x_i,$$\n", 49 | "$$x_i\\in R^n\\rightarrow \\text{引入}x_i',x_i''\\geqslant 0,x_i=x_i'-x_i''.$$\n", 50 | "3. 当约束的常数 $b_i$ 非正时$,$ 该约束等价于\n", 51 | "$$a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n= b_i\\Leftrightarrow - (a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n) =-b_i.$$\n", 52 | "\n", 53 | "集合 $D=\\{a_{i1}x_1+a_{i2}x_2+\\cdots+a_{in}x_n= b_i\\mid x_i\\geqslant 0,i=1,2,\\cdots,m\\}$ 称为问题的**可行域**$,$ $D$ 中每个点都是问题的一个解$,$ 称为**可行解**$,$ 而使得问题达到最小值的可行解称为**最优解**$,$ 对于一个线性规划问题$,$ 其不一定有最优解$,$ 因为可行域可以无界$,$ 当然$,$ 若存在最优解$,$ 也不一定唯一$,$ 下述二图解释了线性规划无最优解或最优解不唯一的情况 (若我们构建方式不当$,$ 也有可能出现 $D=\\varnothing$ 即不存在可行解的情况$,$ 为下文命题阐述严谨起见提出这一点). \n", 54 | "\n", 55 | "\n", 56 | " \n", 59 | " \n", 62 | " \n", 65 | "
\n", 57 | "\n", 58 | " \n", 60 | "\n", 61 | " \n", 63 | "\n", 64 | "
\n", 66 | "\n", 67 | "\n" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "id": "b7342b54", 73 | "metadata": {}, 74 | "source": [ 75 | "### 2.3.2 从二维图解法出发引入单纯形法的思路\n", 76 | "\n", 77 | "从优化理论出发$,$ 线性规划本质上是一个约束优化问题$,$ 无法简单地用无约束优化的一二阶条件求导数零点进行判断$,$ 幸运的是由于目标函数以及约束都是线性的$,$ 我们有更加简洁且实用的方法——单纯形法.\n", 78 | "\n", 79 | "从高中学的线性规划知识我们知道对于变量数为 $2$ 的线性规划问题可以用图解法迅速解决$,$ 我们从图解法出发构建高维线性规划的解决方式. 事实上$,$ 由图解法我们可以观察得到两个基本事实:\n", 80 | "\n", 81 | "1. 线性规划可行域是多边形.\n", 82 | "2. 大多数存在唯一解的线性规划问题, 其解会在多边形可行域顶点取得.\n", 83 | "\n", 84 | "那么对于高维的线性规划问题, 这两个特征会不会被保留下来呢$?$ 答案是会的, 我们需要借用凸集来推广高维的多边形.\n", 85 | "\n", 86 | "定义 1.1.1 [凸集] 设 $C$ 是 $R^n (n\\geqslant 2) $ 上的非空子集, 若对于任意 $x_1,x_2\\in C$ 有 $\\alpha x_1+(1-\\alpha) x_2,\\alpha\\in [0,1]$ 则 $C$ 称为**凸集**. 若凸集 $C$ 上一点 $x$ 满足不存在 $x_1,x_2\\in C$ 使得 $x=\\alpha x_1+(1-\\alpha) x_2(\\alpha \\in (0,1)) $ 则 $x$ 称为凸集的**顶点**.\n", 87 | "\n", 88 | "\n", 89 | " \n", 92 | " \n", 95 | " \n", 98 | "
\n", 90 | "\n", 91 | " \n", 93 | "\n", 94 | " \n", 96 | "\n", 97 | "
\n", 99 | "凸集与非凸集(引用自网络)\n", 100 | "\n", 101 | "从几何意义上来说$,$ 凸集势必会包含任意集合中两点的连线$,$ 而顶点只能是凸集中线段的端点 (等价于$,$ 只能是边界\"线段\"的交点) . 那么$,$ 可以仅由线段分解的多边形便是高维空间中最简单的非平凡凸集. 对于线性规划与凸集$,$ 显然从几何想象可以得到以下基本事实:\n", 102 | "\n", 103 | "命题 1.1.2 线性规划若存在可行解$,$ 则问题可行域必定为凸多边形.\n", 104 | "\n", 105 | "而目标函数是线性的其实保证了$,$ 可行域上的函数图像是一个倾斜的 $n$ 维凸多边形面$,$ 那么其最小值必定会在多边形某个顶点取到$!$ \n", 106 | "\n", 107 | "命题 1.1.3 线性规划若存在最优解$,$ 则最优解在凸多边形可行域的顶点集中取得.\n", 108 | "\n", 109 | "那么$,$ 对于线性规划的最优解搜索范围$,$ 我们缩小到了有限的顶点集中$,$ 自然求解会方便的多$,$ 接下来的问题有二:\n", 110 | "\n", 111 | "1. 如何计算线性约束可行域的顶点$?$\n", 112 | "\n", 113 | "2. 枚举计算顶点的函数值可以找到最优值$,$ 但随着维数升高计算量太大了$,$ 有没有什么更好的最优顶点筛选方式$?$\n", 114 | "\n" 115 | ] 116 | }, 117 | { 118 | "cell_type": "markdown", 119 | "id": "81991c40", 120 | "metadata": {}, 121 | "source": [ 122 | "### 2.3.3 求解顶点--基可行解\n", 123 | "\n", 124 | "从本小节开始$,$ 我们正式开始展开单纯形法的讨论$,$ 由于数学要素较多$,$ 推荐在学习之前积累以下的前置知识:\n", 125 | "\n", 126 | "1. 向量的线性相关性.\n", 127 | "2. 向量组与矩阵的秩$,$ 极大线性无关组.\n", 128 | "3. 线性方程组解的情况以及对应条件.\n", 129 | "\n", 130 | "经过代数学的学习$,$ 我们可以敏感地感知到: 标准形式的线性规划可行域其实就是某个线性方程组的非负解集$,$ 那么自然会诞生这样一个问题: 可行域对应的线性方程组\n", 131 | "$$\\begin{cases}\n", 132 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n= b_1\\\\\n", 133 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n= b_2\\\\\n", 134 | "\\vdots\\\\\n", 135 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 136 | "x_i\\geqslant 0,i=1,2,\\cdots,n\\\\\n", 137 | "\\end{cases}\\Leftrightarrow A\\boldsymbol{x}=\\boldsymbol{b}$$ 中什么样的解才是可行域对应的凸多边形顶点呢$?$ 利用我们高中以及大学的解析几何知识联想一下$,$ 二维空间中$,$ 二元一次方程组的唯一解对应着两条直线的交点$;$ 三维空间中$,$ 三元一次方程组的唯一解对应着三个平面的交点$,$ 那么若 $m$ 元一次方程有唯一解$,$ 则该解必定对应着 $n$ 维空间中 $m$ 个\"超平面\"的交点. \n", 138 | "\n", 139 | "\n", 140 | "而代数知识告诉我们$,$ 什么样的线性方程组有唯一解$?$ 系数矩阵 $A$ 可逆的呗.可惜 $A$ 是一个长方阵 (列数 $n$ 比行数 $m$ 大) $,$ 仅仅是行满秩的$,$ 并无法保证其具有唯一解$,$ 那么我们将其表达成向量的线性组合形式$,$\n", 141 | "$$A=\\begin{bmatrix}\\boldsymbol{\\alpha}_1&\\boldsymbol{\\alpha}_2&\\cdots&\\boldsymbol{\\alpha}_n\\end{bmatrix},\\boldsymbol{\\alpha}_i=\\begin{bmatrix}\n", 142 | "a_{1i}\\\\\n", 143 | "a_{2i}\\\\\n", 144 | "\\vdots\\\\\n", 145 | "a_{ni}\\\\\n", 146 | "\\end{bmatrix},$$\n", 147 | "$$\\tag{1.4}\\label{eq 4}A\\boldsymbol{x}=\\boldsymbol{b}\\Leftrightarrow x_1\\boldsymbol{\\alpha}_1+x_2\\boldsymbol{\\alpha}_2+\\cdots+x_n\\boldsymbol{\\alpha}_n=\\boldsymbol{b},$$\n", 148 | " $A$ 的秩为 $m$ 代表着: 向量组 $\\begin{bmatrix}\\boldsymbol{\\alpha}_1&\\boldsymbol{\\alpha}_2&\\cdots&\\boldsymbol{\\alpha}_n\\end{bmatrix}$ 的秩为 $m,$ 即其中有 $m$ 个线性无关的向量$,$ 我们不妨将其挑出来: $B=\\begin{bmatrix}\\boldsymbol{a}_{i_1}&\\boldsymbol{a}_{i_2}&\\cdots&\\boldsymbol{a}_{i_m}\\end{bmatrix},$ 这也代表着 $A$ 中对应的 $m\\times m$ 子矩阵 $B$ 的秩是 $m$ (满秩) 从而是可逆的$,$ 事实上$,$ 我们只需要取 $x_k=0,k\\ne i_j,j=1,2,\\cdots,m$ 即方程 $\\eqref{eq 4}$ 变为\n", 149 | "$$\\begin{matrix}\n", 150 | "\\begin{cases}\n", 151 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n= b_1\\\\\n", 152 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n= b_2\\\\\n", 153 | "\\vdots\\\\\n", 154 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 155 | "\\end{cases}&\\longrightarrow&\n", 156 | "\\begin{cases}\n", 157 | "a_{11}0+\\cdots+a_{1i_1}x_{i_1}+\\cdots+a_{1i_1}x_{i_2}+\\cdots+a_{1i_m}x_{i_m}+\\cdots+a_{1n}0= b_1\\\\\n", 158 | "a_{21}0+\\cdots+a_{2i_1}x_{i_1}+\\cdots+a_{2i_2}x_{i_2}+\\cdots+a_{2i_m}x_{i_m}+\\cdots+a_{2n}0= b_2\\\\\n", 159 | "\\vdots\\\\\n", 160 | "a_{m1}0+\\cdots+a_{mi_1}x_{i_1}+\\cdots+a_{mi_2}x_{i_2}+\\cdots+a_{mi_m}x_{i_m}+\\cdots+a_{mn}0= b_m\\\\\n", 161 | "\\end{cases}&\\\\\n", 162 | "\\Updownarrow&&\\Updownarrow&\\\\\n", 163 | "x_1\\boldsymbol{\\alpha}_1+x_2\\boldsymbol{\\alpha}_2+\\cdots+x_n\\boldsymbol{\\alpha}_n=\\boldsymbol{b}&\\longrightarrow&0\\boldsymbol{\\alpha}_1+\\cdots+x_{i_1}\\boldsymbol{\\alpha}_{i_1}+\\cdots+x_{i_2}\\boldsymbol{\\alpha}_{i_2}+\\cdots+\\cdots+x_{i_m}\\boldsymbol{\\alpha}_{i_m}+\\cdots+0\\boldsymbol{\\alpha}_n=\\boldsymbol{b}\\\\\n", 164 | "\\Updownarrow&&\\Updownarrow&\\\\\n", 165 | "A \\boldsymbol{x}=\\boldsymbol{b}&\\longrightarrow& B\\boldsymbol{x}'=\\boldsymbol{b}\\Rightarrow \\boldsymbol{x}'=B^{-1}\\boldsymbol{b}\\ (B\\ \\text{行列满秩故可逆}) \\\\\n", 166 | "\\end{matrix}$$\n", 167 | "其中\n", 168 | "$$B=\\begin{bmatrix}\\boldsymbol{a}_{i_1}&\\boldsymbol{a}_{i_2}&\\cdots&\\boldsymbol{a}_{i_m}\\end{bmatrix}=\\begin{bmatrix}\n", 169 | "a_{1i_1}&a_{1i_2}&\\cdots&a_{1i_m}\\\\\n", 170 | "a_{2i_1}&a_{2i_2}&\\cdots&a_{2i_m}\\\\\n", 171 | "\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 172 | "a_{mi_1}&a_{mi_2}&\\cdots&a_{mi_m}\\\\\n", 173 | "\\end{bmatrix},\\boldsymbol{x}'=\\begin{bmatrix}\n", 174 | "x_{i1}\\\\\n", 175 | "x_{i2}\\\\\n", 176 | "\\vdots\\\\\n", 177 | "x_{im}\n", 178 | "\\end{bmatrix}.$$\n", 179 | "\n", 180 | "那么$(0,\\cdots,0,x_{i_1},\\cdots,x_{i_m},0,\\cdots,0)$ 便是 $A\\boldsymbol{x}=\\boldsymbol{b}$ 的一组解$,$ 并且也是子方程组 $B\\boldsymbol{x}'=\\boldsymbol{b}$ 的唯一解$,$ 从而是约束 $A\\boldsymbol{x}=\\boldsymbol{b}$ 对应凸多边形的一个顶点$,$ 只要再保证 $x_{i_j}\\geqslant 0,j=1,2,\\cdots,m,$ 那么这样的解便是线性规划可行域凸多边形的一个顶点$!$\n", 181 | "\n", 182 | "$A$ 中每组 $m$ 列线性无关的向量 $B=\\begin{bmatrix}\\boldsymbol{a}_{i_1}&\\boldsymbol{a}_{i_2}&\\cdots&\\boldsymbol{a}_{i_m}\\end{bmatrix}$ (亦即$,$ 满秩的 $m\\times m$ 子矩阵 $B$) 对应的子方程 $B\\boldsymbol{x}'=\\boldsymbol{b}$ 唯一解$,$ 只要非负$,$ 便是可行域多边形的顶点之一$,$ 这是因为 $m$ 条等式线性约束在 $n$ 维代表了一个 $m$ 维的超\"平面\"$,$ 再加上变量非负 $x_j\\geqslant 0$ 的限制$,$ 这样的超平面又被无形的\"坐标墙\"框成了多边形$,$ 自然就必须有一些分量为 $0!$ 以三维空间为例子$,$ 顶点都是二维平面约束在坐标轴上的交点. \n", 183 | "\n", 184 | "\n", 185 | "我们将 $A$ 中列满秩的$m\\times m$ 子矩阵 $B$ 称为**基**$,$ 其对应的线性方程组解 $ (0,\\cdots,0,x_{i_1},\\cdots,x_{i_m},0,\\cdots,0) $ 若有 $x_{i_j}\\geqslant 0,j=1,2,\\cdots,m$ 则称为**基可行解**. 基可行解最为重要的意义便是等价于可行域的顶点.\n", 186 | "\n", 187 | "可以严谨地证明:\n", 188 | "\n", 189 | "命题 1.1.3 线性规划问题 $\\eqref{eq 2},\\eqref{eq 3}$ 中可行域中的点 $\\boldsymbol{x}$ 是基可行解的必要条件是至少有 $n-m$ 个分量为 $0$.\n", 190 | "\n", 191 | "命题 1.1.4 线性规划问题 $\\eqref{eq 2},\\eqref{eq 3}$ 中凸多边形可行域的顶点集与线性规划的基可行解一一对应.\n", 192 | "\n", 193 | "这边解决了我们在 1.3.3 提出的第一个问题:
**凸多边形的顶点可直接计算基可行解求得.**
\n", 194 | "\n", 195 | "\n", 197 | "\n" 198 | ] 199 | }, 200 | { 201 | "cell_type": "markdown", 202 | "id": "2a5a0d9f", 203 | "metadata": {}, 204 | "source": [ 205 | "### 1.3.5 向最佳顶点出发$!$ --单纯形迭代搜索\n", 206 | "\n", 207 | "把基可行解都枚举出来是比较笨的——那样子不够\"数学\".\n", 208 | "\n", 209 | "我们更希望的是$,$ 能向登山一样$,$ 设计出一条爬山路线$,$ 不断逼近\"山顶\"——而具有这种性质的数学算法应该是迭代的: 一步步搜索顶点$,$ 每搜索到的一个顶点 $\\boldsymbol{x}_n$ 都要比上一次搜索到的顶点 $\\boldsymbol{x}_{n-1}$ 要\"好\"$,$ 由于我们求解的是最小值$,$ 这样的算法统称为**下降算法**\n", 210 | "\n", 211 | "\n", 212 | "
梯度下降——“下山”(引用自网络)
\n", 213 | "\n", 214 | "下降算法由以下几步构成:\n", 215 | "\n", 216 | "1. 确定初始的迭代点 $\\boldsymbol{x}_0$.\n", 217 | "\n", 218 | "2. 确定**迭代步骤**$,$ 即 $\\boldsymbol{x}_{n-1}$ 与 $\\boldsymbol{x}_{n}$ 之间的递推关系 $\\boldsymbol{x}_n=F(\\boldsymbol{x}_{n-1})$ 且保证\"下降\" $f(\\boldsymbol{x}_n)-f(\\boldsymbol{x}_{n-1})\\leqslant 0$.\n", 219 | "\n", 220 | "3. 确定如何迭代到什么时候能找到最优解$,$ 即**终止准则**.\n", 221 | "\n", 222 | "1.3.4 节中我们已经知道了线性规划问题 $\\eqref{eq 1},\\eqref{eq 2}$ 的最优解必定在顶点 (基可行解) 处取得$,$ 故我们的搜索迭代范围仅限于顶点 (基可行解) 之间$,$ 依照下降算法的步骤$,$ 我们需要先找到一个顶点 (基可行解) 作为初始解 $\\boldsymbol{x}_0$ 再从 $\\boldsymbol{x}_0$ 出发寻找函数值 $f$ 不大于 $f(\\boldsymbol{x}_0)$ 的顶点 (基可行解) $\\boldsymbol{x}_1,$ 接着重复此步骤直到找到无法再下降的顶点 (基可行解) $\\boldsymbol{x}_{N}$.\n", 223 | "\n", 224 | "#### 第一部分:初始可行解(人工变量)\n", 225 | "\n", 226 | "在最开始的时候$,$ 我们需要找到一个顶点 (基可行解) 作为算法的\"启动资金\"——初始解. 由 1.3.4 我们知道需要计算约束方程 $A\\boldsymbol{x}=\\boldsymbol{b}$ 中的一个基可行解$,$ 这要求我们找到 $A$ 中一个基 $B,$ 枚举基是有一定难度的$,$ 特别是当决策变量个数 $n$ 以及约束矩阵 $A$ 的秩 $m$ 都比较大的时候 (大规模计算的情形)$,$ 我们更希望有一种简单的方式去找到一个基 $B,$ 因为线性规划问题 $\\eqref{eq 2}$ 是经过引入松弛变量松弛化不等式约束的$,$ 如 $\\eqref{eq 1},$ 这相当于在矩阵 $A$ 中增广了如 $(1,0,\\cdots,0)$ 的列向量$,$ 假设 $A$ 的前 $k$ 行都是不等式约束$,$ 那么加入松弛变量后 $A$ 增广为\n", 227 | "\n", 228 | "$$\\begin{matrix}\n", 229 | "\\begin{cases}\n", 230 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n\\leqslant b_1\\\\\n", 231 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n\\leqslant b_2\\\\\n", 232 | "\\vdots\\\\\n", 233 | "a_{k1}x_1+a_{k2}x_2+\\cdots+a_{kn}x_n\\leqslant b_k\\\\\n", 234 | "a_{k+1,1}x_1+a_{k+1,2}x_2+\\cdots+a_{k+1,n}x_n= b_{k+1}\\\\\n", 235 | "\\vdots\\\\\n", 236 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 237 | "\\end{cases}\n", 238 | "&\\longrightarrow&\n", 239 | "\\begin{cases}\n", 240 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n+s_1=b_1\\\\\n", 241 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n+s_2=b_2\\\\\n", 242 | "\\vdots\\\\\n", 243 | "a_{k1}x_1+a_{k2}x_2+\\cdots+a_{kn}x_n+s_k=b_k\\\\\n", 244 | "a_{k+1,1}x_1+a_{k+1,2}x_2+\\cdots+a_{k+1,n}x_n= b_{k+1}\\\\\n", 245 | "\\vdots\\\\\n", 246 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 247 | "\\end{cases}\\\\\n", 248 | "\\Updownarrow&&\\Updownarrow\\\\\n", 249 | "\\begin{bmatrix}\n", 250 | "a_{11}&a_{12}&\\cdots&a_{1n}\\\\\n", 251 | "a_{21}&a_{22}&\\cdots&a_{2n}\\\\\n", 252 | "\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 253 | "a_{m1}&a_{m2}&\\cdots&a_{mn}\\\\\n", 254 | "\\end{bmatrix}&\\longrightarrow&\\begin{bmatrix}\n", 255 | "a_{11}&a_{12}&\\cdots&a_{1n}&1&0&\\cdots&0&\\cdots&0\\\\\n", 256 | "a_{21}&a_{22}&\\cdots&a_{2n}&0&1&\\cdots&0&\\cdots&0\\\\\n", 257 | "\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\vdots&\\ddots&\\vdots&\\ddots&\\vdots\\\\\n", 258 | "a_{k1}&a_{k2}&\\cdots&a_{kn}&0&0&\\cdots&1&\\cdots&0\\\\\n", 259 | "a_{k+1,1}&a_{k+1,2}&\\cdots&a_{k+1,n}&0&0&\\cdots&0&\\cdots&0\\\\\n", 260 | "\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\vdots&\\ddots&\\vdots&\\ddots&\\vdots\\\\\n", 261 | "a_{m1}&a_{m2}&\\cdots&a_{mn}&0&0&\\cdots&0&\\cdots&0\\\\\n", 262 | "\\end{bmatrix}\n", 263 | "\\end{matrix}$$\n", 264 | "\n", 265 | "当 $m$ 行约束全是不等式约束即加入了 $m$ 个松弛变量时$,A$ 的后 $m$ 列自然构成了一个 $m$ 阶的单位阵 $I_m,$ 必定可逆$,$ 这不就是我们所想要的最简单的基吗$?$ \n", 266 | "\n" 267 | ] 268 | }, 269 | { 270 | "cell_type": "markdown", 271 | "id": "ba9d732a", 272 | "metadata": {}, 273 | "source": [ 274 | "\n", 275 | "
单纯形表结构
\n", 276 | "\n", 277 | "命题 1.1.5 当线性规划问题 $\\eqref{eq 2}$ 中只含有不等式约束时$,$ 标准化后的约束矩阵 $A$ 后 $m$ 列 $I_m$ 是 $A$ 的基.\n", 278 | "\n", 279 | "当松弛变量个数小于 $m$ 时$,$ 我们可以耍一耍小学生解题的\"有借有还\"伎俩$,$ 先借几个松弛变量凑到 $m$ 个$,$ 最后求解的时候再还回去$,$ \n", 280 | "$$\\begin{matrix}\n", 281 | "\\min c_1x_1+c_2x_2+\\cdots+c_nx_n&&\\min c_1x_1+c_2x_2+\\cdots+c_nx_n+M(s_{k+1}+s_{k+2}+\\cdots+s_{m})\\\\\n", 282 | "\\begin{cases}\n", 283 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n\\leqslant b_1\\\\\n", 284 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n\\leqslant b_2\\\\\n", 285 | "\\vdots\\\\\n", 286 | "a_{k1}x_1+a_{k2}x_2+\\cdots+a_{kn}x_n\\leqslant b_k\\\\\n", 287 | "a_{k+1,1}x_1+a_{k+1,2}x_2+\\cdots+a_{k+1,n}x_n= b_{k+1}\\\\\n", 288 | "\\vdots\\\\\n", 289 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 290 | "\\end{cases}\n", 291 | "&\\longrightarrow&\n", 292 | "\\begin{cases}\n", 293 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n+s_1=b_1\\\\\n", 294 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n+s_2=b_2\\\\\n", 295 | "\\vdots\\\\\n", 296 | "a_{k1}x_1+a_{k2}x_2+\\cdots+a_{kn}x_n+s_k=b_k\\\\\n", 297 | "a_{k+1,1}x_1+a_{k+1,2}x_2+\\cdots+a_{k+1,n}x_n+s_{k+1}= b_{k+1}\\\\\n", 298 | "\\vdots\\\\\n", 299 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n+s_{m}= b_m\\\\\n", 300 | "\\end{cases}\n", 301 | "\\\\\n", 302 | "\\Updownarrow&&\\Updownarrow\\\\\n", 303 | "\\begin{bmatrix}\n", 304 | "a_{11}&a_{12}&\\cdots&a_{1n}\\\\\n", 305 | "a_{21}&a_{22}&\\cdots&a_{2n}\\\\\n", 306 | "\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 307 | "a_{m1}&a_{m2}&\\cdots&a_{mn}\\\\\n", 308 | "\\end{bmatrix}&\\longrightarrow&\\begin{bmatrix}\n", 309 | "a_{11}&a_{12}&\\cdots&a_{1n}&1&0&\\cdots&0&0&\\cdots&0\\\\\n", 310 | "a_{21}&a_{22}&\\cdots&a_{2n}&0&1&\\cdots&0&0&\\cdots&0\\\\\n", 311 | "\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 312 | "a_{k1}&a_{k2}&\\cdots&a_{kn}&0&0&\\cdots&1&0&\\cdots&0\\\\\n", 313 | "a_{k+1,1}&a_{k+1,2}&\\cdots&a_{k+1,n}&0&0&\\cdots&0&1&\\cdots&0\\\\\n", 314 | "\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\vdots&\\ddots&\\vdots&\\vdots&\\ddots&\\vdots\\\\\n", 315 | "a_{m1}&a_{m2}&\\cdots&a_{mn}&0&0&\\cdots&0&0&\\cdots&1\\\\\n", 316 | "\\end{bmatrix}\n", 317 | "\\end{matrix}$$\n", 318 | "增加的松弛变量 $s_i,i=k+1,\\cdots,m$ 我们称为**人工变量**$,$ 其中 $M$ 是充分大的数 ($M>>c_i,i=1,2,\\cdots,n$)$,$ 用于保证增加人工变量后与原问题的等效性 (这是因为借的人工变量 $s_i,i=k+1,\\cdots,m$ 必须为 $0$ 即\"还\"回去$,$ 不会改变原问题的最优解).\n", 319 | "\n", 320 | "综上$,$ 单纯形法寻找初始解步骤是
(增加人工变量后)求解松弛变量对应构成的基方程 $I_m\\boldsymbol{x}'=\\boldsymbol{b}$ 即取 $(0,0,\\cdots,\\mathop{0}\\limits^{n},b_1,b_2,\\cdots,b_m)$作为初始解 $\\boldsymbol{x}_0$ 迭代.
\n", 321 | "\n" 322 | ] 323 | }, 324 | { 325 | "cell_type": "markdown", 326 | "id": "cee889b0", 327 | "metadata": {}, 328 | "source": [ 329 | "#### 第二部分:迭代步骤\n", 330 | "\n", 331 | "由 1.3.4 节的命题 1.1.3 我们可知线性规划问题 $\\eqref{eq 1},\\eqref{eq 2}$ 中可行域中的解作为顶点 (基可行解) 的必要条件是至少有 $n-m$ 个分量为 $0,$ 换言之$,$ 基可行解都是由 $m$ 个坐标分量就能决定的$,$ 那么从原来的基可行解 $\\boldsymbol{x}_n$ 出发$,$ 我们就可以通过**替换坐标**的方式$,$ 不改变非 $0$ 分量数 $m,$ 找到新的基可行解 $\\boldsymbol{x}_{n+1}^j$ ! 先斩后奏$,$ 我们给出基可行解的迭代方式如下: 不妨设 $\\boldsymbol{x}_n= (x_{1},x_{2},\\cdots,x_{m},0,\\cdots,0) $ 是第 $n$ 步迭代得到的基可行解$,$ 若用第 $j$ 个坐标分量 ($j>m$) 替换 $1\\sim m$ 中某一个坐标分量$,$ 则第 $n+1$ 步的基可行解为\n", 332 | "$$\\boldsymbol{x}_{n+1}^j= (x_{1}-\\theta a_{1j},x_{2}-\\theta a_{2j},\\cdots,x_{m}-\\theta a_{mj},0,\\cdots,\\mathop{\\theta}\\limits^{j},\\cdots,0) ,$$\n", 333 | "其中$,$\n", 334 | "$$\\theta=\\min\\left\\{\\left.\\dfrac{x_{i}}{a_{ij}}\\right|a_{ij}>0\\right\\},$$\n", 335 | "而设最小的 $\\frac{x_{i}}{a_{ij}}$ 对应的坐标分量是 $l,$ 那么 $\\boldsymbol{x}_{n+1}^j$ 的第 $l$ 个分量 $x_{l}-\\theta a_{lj}=0,$ 这便实现了第 $j$ 个分量到第 $l$ 个分量的替换. 而 $\\theta$ 取最小值的构造保证了 $x_{i}-\\theta a_{ij}\\geqslant 0,$ 此外$,a_{ij}\\leqslant 0$ 的分量会使得 $x_i-\\theta a_{ij}\\geqslant x_i\\geqslant 0,$ 即替换后所有分量非负$,$ 保证了 $\\boldsymbol{x}_{n+1}^j$ 是基可行解. \n", 336 | "\n", 337 | "而用来替换的坐标分量 $j$ 需要满足\n", 338 | "\n", 339 | "$$c_j-\\sum\\limits_{i=1}^mc_ia_{ij}<0,$$\n", 340 | "\n", 341 | "因为 $\\boldsymbol{x}_n$ 与 $\\boldsymbol{x}_{n+1}^j$ 的目标函数值需满足单调递减性\n", 342 | "\n", 343 | "\\begin{align*}\n", 344 | "&f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) &<0\\\\\n", 345 | "\\text{上式等于}\\ &\\sum\\limits_{i=1}^mc_i (x_i-\\theta a_{ij}) +c_j\\theta-\\sum\\limits_{i=1}^mc_ix_i&<0\\\\\n", 346 | "\\text{上式等于}\\ &c_j-\\sum\\limits_{i=1}^mc_ia_{ij}&<0,\n", 347 | "\\end{align*}\n", 348 | "\n", 349 | "而基于贪心的想法$,$ 我们希望函数值能下降的越快越好即 $f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) $ 越小越好$,$ 从而我们每一步都选取如下的分量 $j,$ \n", 350 | "$$j_0=\\mathrm{argmin}\\left\\{\\left.f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}\\right| j=m+1,\\cdots,n\\right\\}.$$\n", 351 | "\n", 352 | "所以$,$ 单纯形法的迭代步骤是\n", 353 | "$$\\boldsymbol{x}_n=(x_1,x_2,\\cdots,x_m,0,\\cdots,0)\\to \\boldsymbol{x}_{n+1}=\\boldsymbol{x}_{n+1}^{j_0}=(x_{1}-\\theta a_{1j_0},x_{2}-\\theta a_{2j_0},\\cdots,\\cdots,\\mathop{0}\\limits^{l},\\cdots,x_{m}-\\theta a_{mj_0},0,\\cdots,\\mathop{\\theta}\\limits^{j_0},\\cdots,0),$$\n", 354 | "$$\\theta=\\min\\left\\{\\left.\\dfrac{x_{i}}{a_{ij_0}}\\right|a_{ij_0}>0\\right\\}=\\dfrac{x_l}{a_{lj_0}},j_0=\\mathrm{argmin}\\left\\{\\left.f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}\\right| j=m+1,\\cdots,n\\right\\}.$$\n", 355 | "\n" 356 | ] 357 | }, 358 | { 359 | "cell_type": "markdown", 360 | "id": "6e6d9d66", 361 | "metadata": {}, 362 | "source": [ 363 | "#### 第三部分:终止准则\n", 364 | "\n", 365 | "顶点序列 $\\{\\boldsymbol{x}_n\\}$ 的单调递减是容易满足的$,$ 但是$,$ 怎么判断经有限步找到的最终顶点 $\\boldsymbol{x}_{N}$ 是局部最小值呢$?$ \n", 366 | "\n", 367 | "我们以下分情况把所有的 case 都讨论一遍:\n", 368 | "\n", 369 | "1. 有唯一解: 直观的想法是$,$ 从 $\\boldsymbol{x}_{N}$ 出发$,$ 无论替换那个分量 $j$ 都已经找不到比它函数值更小的顶点了$,$ 那么也就是\n", 370 | "$$f (\\boldsymbol{x}_{n+1}^j)-f (\\boldsymbol{x}_N) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}> 0,j=1,2,\\cdots,n.$$\n", 371 | "2. 有无穷多解: 从线性规划 1.3.1 的图解例子来看$,$ 至少最小值会在一条线段 (一个平面等...) 取到$,$ 那么势必会存在至少两个顶点都取到函数最小值$,$ 从而\n", 372 | "$$f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}\\geqslant 0 \\ \\text{且} \\ \\exists\\ j,f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =0.$$\n", 373 | "3. 有无界的解: 从线性规划 1.3.1 的图解例子来看$,$ 可行域更像是一个无界的\"多边形\"$,$ 我们可以当作存在无穷远处的顶点$,$ 并且在无穷远处的一个顶点是能满足单调递减条件的$,$ 从而首先会存在一个坐标分量 $j$ 使得 $f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}<0$ 且沿该坐标分量 $j$ 去更新顶点$,$ 无法找到基可行解$,$ 结合命题 1.1.3$,$ 即任意 $\\theta>0$ 都无法使得 $\\boldsymbol{x}_{n+1}^j= (x_{1}-\\theta a_{1j},x_{2}-\\theta a_{2j},\\cdots,x_{m}-\\theta a_{mj},0,\\cdots,\\mathop{\\theta}\\limits^{j},\\cdots,0) $ 中前 $m$ 个分量有下降为 $0$ 的$,$ 亦即 $x_{i}-\\theta a_{ij}>0,i=1,2,\\cdots,m$ 对 $\\theta>0$ 恒成立$,$ 容易推出 $a_{ij}<0,i=1,2,\\cdots,m$ 从而总结为\n", 374 | "$$\\exists \\ j,f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}<0,a_{ij}<0,i=1,2,\\cdots,m.$$\n", 375 | "4. 无可行解: 这事实上代表着可行域 $D$ 是空集$,$ 然而在高维的大规模问题面前我们很难在求解前发现$,$ 然而我们有另外的一种判别方式: 利用加入的人工变量 $s_i,$ 若已经出现有唯一解的判别准则 $f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}> 0,j=1,2,\\cdots,n$ 但此时有人工变量 $s_i>0,$ 这即借了人工变量还不回去$,$ 亦即原问题的找不到可行解$,$ 那么无可行解的判别准则即为\n", 376 | "$$f (\\boldsymbol{x}_{n+1}^j) -f (\\boldsymbol{x}_n) =c_j-\\sum\\limits_{i=1}^mc_ia_{ij}> 0,j=1,2,\\cdots,n,\\exists \\ s_i>0,s_i \\ \\text{是人工变量}.$$\n", 377 | "\n", 378 | "**注**: 值得一提的是$,$ 线性规划问题无可行解是一个特殊但不少见的情况$,$ 因为现实生活中我们也经常会遇到各种要求冲突从而找不到两全其美的解$,$ 对于如何解决这样的现实问题我们会在 Task 3 讨论.\n", 379 | "\n", 380 | "综上$,$ 我们分析清楚了线性规划问题中解的情况并得到了相应的判别准则$,$ 然而还剩下最后一个问题没有解决:\n", 381 | "
单纯形法生成的迭代点列 $\\{\\boldsymbol{x}_n\\}$ 的终止项 $\\boldsymbol{x}_N$ 只是对于 $\\{\\boldsymbol{x}_n\\}$ 的局部最小值$,$ 能否保证全局最小值呢$?$
\n", 382 | "\n", 383 | "事实上$,$ 优化理论中$,$ 对于大多数的优化问题而言$,$ 局部最小值并非全局最小值$,$ 然而针对一类性质较好的问题: **凸问题**——目标函数是凸的$,$ 约束可行域也是凸的$,$ 是满足局部最小值即是全局最小值的$,$ 而线性规划就是最典型的凸问题之一$!$ \n", 384 | "\n", 385 | "命题 1.1.6 线性规划问题 $\\eqref{eq 2},\\eqref{eq 3}$ 中$,$ 单纯形法搜索到的局部最小值即是全局最小值.\n", 386 | "\n", 387 | "从上述的讨论中$,$ 我们也发现单纯形法这种下降算法中判断其下降以及终止的标准便是 $f(\\boldsymbol{x}_{n+1}^j)-f(\\boldsymbol{x}_n),$ 我们称其为判别数$,$ 记为 $\\sigma_j$.\n", 388 | "\n", 389 | "综上$,$ 我们总结出单纯形法的终止准则:\n", 390 | "" 391 | ] 392 | }, 393 | { 394 | "cell_type": "markdown", 395 | "id": "d4031a27", 396 | "metadata": {}, 397 | "source": [ 398 | "## Reference\n", 399 | "" 400 | ] 401 | }, 402 | { 403 | "cell_type": "markdown", 404 | "id": "ebe9ab58", 405 | "metadata": {}, 406 | "source": [ 407 | "
" 408 | ] 409 | } 410 | ], 411 | "metadata": { 412 | "kernelspec": { 413 | "display_name": "Python 3", 414 | "language": "python", 415 | "name": "python3" 416 | }, 417 | "language_info": { 418 | "codemirror_mode": { 419 | "name": "ipython", 420 | "version": 3 421 | }, 422 | "file_extension": ".py", 423 | "mimetype": "text/x-python", 424 | "name": "python", 425 | "nbconvert_exporter": "python", 426 | "pygments_lexer": "ipython3", 427 | "version": "3.8.8" 428 | }, 429 | "latex_envs": { 430 | "LaTeX_envs_menu_present": true, 431 | "autoclose": false, 432 | "autocomplete": true, 433 | "bibliofile": "biblio.bib", 434 | "cite_by": "apalike", 435 | "current_citInitial": 1, 436 | "eqLabelWithNumbers": true, 437 | "eqNumInitial": 1, 438 | "hotkeys": { 439 | "equation": "Ctrl-E", 440 | "itemize": "Ctrl-I" 441 | }, 442 | "labels_anchors": false, 443 | "latex_user_defs": false, 444 | "report_style_numbering": false, 445 | "user_envs_cfg": false 446 | } 447 | }, 448 | "nbformat": 4, 449 | "nbformat_minor": 5 450 | } 451 | -------------------------------------------------------------------------------- /Wakanda-Optimization/Task4_多目标规划/Task4_Multi Program.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 4 问题引导的线性规划模型优化:多目标规划" 8 | ] 9 | }, 10 | { 11 | "cell_type": "markdown", 12 | "metadata": {}, 13 | "source": [ 14 | "## 4.1 题目简介:2000年国赛B题home coming\n", 15 | "\n", 16 | "\n", 17 | "如上图所示$,$要铺设一条 $A_1\\rightarrow A_2\\rightarrow \\cdots\\rightarrow A_{15}$ 的输送天然气的主管道$,$经筛选后可以生产这种主管道钢管的钢厂有 $S_1,S_2,\\cdots,S_7$。图中粗线表示铁路$,$单细线表示公路$,$双细线表示要铺设的管道(假设沿管道或者原来有公路$,$或者建有施工公路)$,$圆圈表示火车站$,$每段铁路、公路和管道旁的阿拉伯数字表示里程(单位km).\n", 18 | "\n", 19 | "为方便计$,1$ km 主管道钢管称为 $1$ 单位钢管.\n", 20 | "\n", 21 | "一个钢厂如果承担制造这种钢管$,$ 至少需要生产 $500$ 个单位.钢厂 $S_i$ 在指定期限内能生产该钢管的最大数量为 $s_i$ 个单位$,$钢管出厂销价 $1$ 单位钢管为 $p_i$ 万元$,$ 如下表:\n", 22 | "\n", 23 | "$i$|$1$|$2$|$3$|$4$|$5$|$6$|$7$\n", 24 | ":--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:\n", 25 | "$s_i$|$800$|$800$|$1000$|$2000$|$2000$|$2000$|$3000$\n", 26 | "$p_i$|$160$|$155$|$155$|$160$|$155$|$150$|$160$\n", 27 | "$1$ 单位钢管的铁路运价如下表:\n", 28 | "\n", 29 | "里程(km)\t|$\\leqslant 300$\t|$301$~$350$\t|$351$~$400$\t|$401$~$450$\t|$451$~$500$\n", 30 | ":--:|:--:|:--:|:--:|:--:|:--:\n", 31 | "运价(万元)\t|$20$\t|$23$\t|$26$\t|$29$\t|$32$\n", 32 | "\n", 33 | "里程(km)\t|$501$~$600$\t|$601$~$700$\t|$701$~$800$\t|$801$~$900$\t|$901$~$1000$\n", 34 | ":--:|:--:|:--:|:--:|:--:|:--:\n", 35 | "运价(万元)\t|$37$\t|$44$\t|$50$\t|$55$\t|$60$\n", 36 | "\n", 37 | "$1000$ km以上每增加 $1$ 至 $100$ km 运价增加 $5$ 万元.\n", 38 | "\n", 39 | "公路运输费用为1单位钢管每公里 $0.1$ 万元 (不足整公里部分按整公里计算)$,$ 铺设费用为每公里 $0.1$ 万元.\n", 40 | "\n", 41 | "钢管可由铁路$,$公路运往铺设地点 (不只是运到点 $A_1,A_2,\\cdots,A_{15},$而是管道全线).\n", 42 | "\n", 43 | "**问题一(已解决):** 请制定一个主管道钢管的订购和运输计划$,$使总费用最小(给出总费用).\n", 44 | "\n", 45 | "**问题二:** 此外$,$ 每个钢管厂由于生产工艺不同所生产的钢管质量也有所不同$,$ 最具体现力的是直接影响天然气主管道稳定性的钢管的平均寿命$,$ 每个钢厂生产的钢管平均寿命为 $Y_i$ 年$,$ 如下表:\n", 46 | "\n", 47 | "$i$|$1$|$2$|$3$|$4$|$5$|$6$|$7$\n", 48 | ":--:|:--:|:--:|:--:|:--:|:--:|:--:|:--:\n", 49 | "$Y_i$|$160$|$155$|$155$|$160$|$155$|$150$|$160$\n", 50 | "\n", 51 | "在这种情况下$,$ 请制定一个主管道钢管的订购和运输计划$,$ 使得其能同时兼顾成本以及主管道的稳定性.\n", 52 | "\n", 53 | "**问题三:** 我们还需考虑以下现实因素:\n", 54 | "\n", 55 | "1. 由于钢厂 $S_3$ 是国营企业$,$ 所以在订购时需保证其钢管供给的主要地位$,$ 钢管订购总量必须比其他钢厂要多.\n", 56 | "\n", 57 | "2. 因路况较差$,$ 钢厂 $S_2$ 到节点 $A_8$ 的钢管运输量不超过 $150$ 单位.\n", 58 | "\n", 59 | "3. 订购运输计划的预算是\n", 60 | "\n", 61 | "

请用模型解答: 是否能满足所有的因素$,$ 若能则给出答案$,$ 若不能$,$ 有没有办法尽量让三个条件都满足呢$?$ 三个条件的满足优先级是按从大到小的顺序排列的.

\n", 62 | "\n", 63 | "" 64 | ] 65 | }, 66 | { 67 | "cell_type": "markdown", 68 | "metadata": {}, 69 | "source": [ 70 | "## 4.2 问题二:多目标规划模型的引入\n", 71 | "\n", 72 | "跟 Task 1 与 Task 2 不同$,$ 在现实生活中我们需要考虑多层次多目标的统筹规划$,$ 本 Task 的改编就在于此$,$ 而多目标的问题与单目标的问题区别在于: 无法两全其美——目标 $A$ 最优时$,$ 目标 $B$ 不一定最优.\n", 73 | "\n", 74 | "### 4.2.1 另一个目标函数的构造\n", 75 | "\n", 76 | "订购运输计划中$,$ 我们还需要考虑的是主管道的稳定性$,$ 这由每个钢厂的钢管平均寿命 $Y_i$ 决定$,$ 而由不同质量的钢管组成的主管道$,$ 我们可以(但非只能)从两个角度去刻画其稳定性:\n", 77 | "\n", 78 | "1. 主管道的平均寿命: 其可以表达为每个钢厂钢管寿命 $Y_i$ 与钢管订购量 $x_i$ 的加权和\n", 79 | "\n", 80 | "$$Y_1x_1+Y_2x_2+\\cdots+Y_7x_7=\\sum\\limits_{i=1}^7Y_ix_i,$$\n", 81 | "\n", 82 | "2. \"木桶原理\"——主管道的短板寿命部位: 其考虑主管道中最薄弱的部分$,$ 即构成主管道中所有钢管的最小寿命 $\\min\\limits_{\\text{计划从}\\ S_i\\ \\text{订购钢管}}Y_i,$ 而从 Task 2 中我们引入了 $0$-$1$ 变量 $y_i=0,1,i=1,2,\\cdots,7$ 来决定是否从 $S_i$ 中生产钢管$,$ 那么可以将最小寿命表达为如下的形式$,$ 使之尽可能地\"线性\"(我们希望这样的形式越多越好$,$ 以保证求解方法不用做太多适应性的修改)\n", 83 | "\n", 84 | "$$\\min\\limits_{i=1,2,\\cdots,7} \\{Y_i+M(1-y_i)\\},$$\n", 85 | "\n", 86 | "其中$,$ $M$ 是足够大的数 $(M>>Y_i,i=1,2,\\cdots,7)$\n", 87 | "\n", 88 | "这两种形式都可以有效体现主管道的稳定性$,$ 我们选取易于求解的平均寿命目标进行讲解与构建模型.\n", 89 | "\n", 90 | "**注:** 在 Task 2 的学习中我们展示了 $0$-$1$ 变量的多种功能$,$ 此处也可以引入 $0$-$1$ 变量来将最小寿命目标\"线性化\"$,$ 留作练习.\n", 91 | "\n", 92 | "### 4.2.2 如何权衡成本目标以及稳定性目标?\n", 93 | "\n", 94 | "正如本节开头所说$,$ 当成本最低时$,$ 稳定性不一定最好$,$ 这是因为有可能存在离主管道较远但钢管质量好的钢厂$,$ 类似的问题不管是在现实还是在赛题中都会经常出现.令总成本$,$ 平均寿命分别为 $W_{total},Y_{avg},$ 我们需要解决的是这个复合问题 \n", 95 | "\n", 96 | "\\begin{align}\n", 97 | "&\\min W_{total}=\\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-}),\\\\\n", 98 | "&\\max Y_{avg}=\\sum\\limits_{i=1}^{7}Y_ix_i,\\\\\n", 99 | "s.t. \\ & \\begin{cases}\n", 100 | "500 y_i\\leqslant \\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,15,\\\\\n", 101 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant s_iy_i,i=1,2,\\cdots,15,\\\\\n", 102 | "x_i=\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,7,\\\\\n", 103 | "\\sum\\limits_{i=1}^7x_i\\leqslant L,\\\\\n", 104 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 105 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\\\\\n", 106 | "y_i=0,1,i=1,2,\\cdots,7\\\\\n", 107 | "\\end{cases}\n", 108 | "\\end{align}\n", 109 | "\n", 110 | "其中$,z_{ij+},z_{ij-},p_{i},s_i,L,c_{ij}$ 的定义见 Task 2.\n", 111 | "\n", 112 | "那么$,$ 如何权衡两个不同的目标呢? 从最朴实的想法出发$,$ 我们希望能雨露均沾: 成本较低的同时$,$ 稳定性也要有一定的保障$,$ 而能够两个目标一起考虑的最简单构造形式便是**目标加权**$,$ \n", 113 | "\n", 114 | "$$\\min \\alpha_1W_{total}+\\alpha_2(-Y_{avg}),$$\n", 115 | "\n", 116 | "其中 $\\alpha_1,\\alpha_2$ 是权重$,\\alpha_1+\\alpha_2=1,Y_{avg}$ 利用取负值将其转换为最小值$,$ 而这样处理还较为粗糙——成本与寿命的量纲不同$,$ 因此还需要再进行标准化:\n", 117 | "\n", 118 | "$$\\min \\alpha_1\\dfrac{W_{total}-\\min W_{total}}{\\max W_{total}-\\min W_{total}}+\\alpha_2\\dfrac{\\max Y_{avg}-Y_{avg}}{\\max Y_{avg}-\\min Y_{avg}},$$\n", 119 | "\n", 120 | "省略上述函数的常数项后即得到 $$\\min \\dfrac{\\alpha_1}{\\max W_{total}-\\min W_{total}}W_{total}-\\dfrac{\\alpha_2}{\\max Y_{avg}-\\min Y_{avg}}Y_{avg},$$\n", 121 | "\n", 122 | "至此$,$ 我们得到该问题的一种处理方式: 多目标化为单目标问题\n", 123 | "\n", 124 | "\\begin{align}\n", 125 | "&\\min \\dfrac{\\alpha_1}{\\max W_{total}-\\min W_{total}}W_{total}-\\dfrac{\\alpha_2}{\\max Y_{avg}-\\min Y_{avg}}Y_{avg},\\\\\n", 126 | "\\tag{3.1}\\label{eq 3.1}s.t. \\ & \\begin{cases}\n", 127 | "500 y_i\\leqslant \\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,15\\\\\n", 128 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant s_iy_i,i=1,2,\\cdots,15\\\\\n", 129 | "x_i=\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,7\\\\\n", 130 | "\\sum\\limits_{i=1}^7x_i\\leqslant L\\\\\n", 131 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 132 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\\\\\n", 133 | "y_i=0,1,i=1,2,\\cdots,7\\\\\n", 134 | "\\end{cases}\n", 135 | "\\end{align}\n", 136 | "\n", 137 | "其中$,z_{ij+},z_{ij-},p_{i},s_i,L,c_{ij}$ 的定义见 Task 2$,\\alpha_1,\\alpha_2\\in [0,1]$ 是权重$,\\alpha_1+\\alpha_2=1$. 在该模型中$,$ 权重是人工赋值的$,$ 当 $\\alpha_1>\\alpha_2$ 时说明计划更重视成本最小$,\\alpha_2>\\alpha_1$ 反之$,\\alpha_1=\\alpha_2$ 代表计划同时兼顾了成本以及稳定性. 而要解决该问题$,$ 无非是反复运用单纯形法$,$ 分支定界法的而已(注意$,$ 标准化后的目标函数仍然是线性的).\n", 138 | "\n" 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "metadata": {}, 144 | "source": [ 145 | "**注:** 当 $\\max W_{total}$ 或 $\\min Y_{avg}$ 无界时$,$ 我们也可以用以下形式来代表标准化的加权目标函数\n", 146 | "$$\\min \\alpha_1\\dfrac{W_{total}}{\\min W_{total}}+\\alpha_2\\dfrac{\\max Y_{avg}}{Y_{avg}},$$\n", 147 | "\n", 148 | "然而这样的目标函数并非线性的$,$ 需要采取线性化或非线性优化问题的求解方式去进行求解.\n", 149 | "\n", 150 | "### 4.2.3 多目标(线性)规划的初步理论——线性加权法\n", 151 | "\n", 152 | "我们接着引入多目标(线性)规划的一些浅层知识$,$ 为我们的求解方式提供理论支撑.\n", 153 | "\n", 154 | "对于单目标的线性规划$,$ 我们可以将其视为 $R^n\\to R$ 的函数 $f(\\boldsymbol{x})$ 最值问题$,$ 其中 $n$ 是决策变量个数.而对于需要求解的 $p$ 个(线性)目标 $f_k(x),k=1,2,\\cdots,p,$ 从单目标线性规划的基础出发$,$ 我们将其目标函数视为向量值函数(或线性映射) $F:R^n\\to R^p,$ 即我们考虑的是 $p$ 维向量 $F(\\boldsymbol{x})=(f_1(\\boldsymbol{x}),f_2(\\boldsymbol{x}),\\cdots,f_p(\\boldsymbol{x}))$.\n", 155 | "\n", 156 | "多目标(线性)规划模型的标准形式如下:\n", 157 | "\n", 158 | "\\begin{align}\n", 159 | "&\\min F(\\boldsymbol{x})=(f_1(\\boldsymbol{x}),f_2(\\boldsymbol{x}),\\cdots,f_p(\\boldsymbol{x})),\\\\\n", 160 | "s.t. & \\begin{cases}\n", 161 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n= b_1\\\\\n", 162 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n= b_2\\\\\n", 163 | "\\vdots\\\\\n", 164 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 165 | "x_i\\geqslant 0,i=1,2,\\cdots,n\n", 166 | "\\end{cases}\n", 167 | "\\end{align}\n", 168 | "\n", 169 | "其中$,\\boldsymbol{x}=(x_1,x_2,\\cdots,x_n),x_i$ 可以为整数变量$,$ $f_k(\\boldsymbol{x}),k=1,2,\\cdots,p$ 是 $\\boldsymbol{x}$ 的线性函数$,$ 我们将上述线性约束确定的可行域称为 $D$. \n", 170 | "\n", 171 | "在向量函数值空间 $R^p$ 中$,$ 我们定义这样的偏序来比较函数值之间的\"大小\"$,$\n", 172 | "\n", 173 | "$$\\begin{cases}\n", 174 | "\\boldsymbol{x}\\leqslant \\boldsymbol{y}\\Leftrightarrow x_i\\leqslant y_i,i=1,2,\\cdots,p\\\\\n", 175 | "\\boldsymbol{x}\\ \\text{支配} \\ \\boldsymbol{y}\\Leftrightarrow \\boldsymbol{x}\\leqslant \\boldsymbol{y},\\exists \\ i,x_i< y_i\\\\\n", 176 | "\\end{cases}$$\n", 177 | "\n", 178 | "亦即$,$ 当 $\\boldsymbol{x}$ 支配 $\\boldsymbol{y}$ 时$,$ $\\boldsymbol{x}$ 在保持每个分量都比 $\\boldsymbol{y}$ 小的情况下$,$ 还不会与 $\\boldsymbol{y}$ 相等$,$ 以保证必定存在一个分量相对于 $\\boldsymbol{y}$ \"下降\"了. 如 $R^2$ 中 $(1,2)$ 便支配了 $(1,3)$.\n", 179 | "\n", 180 | "若上述问题存在一个解 $\\boldsymbol{x}^*$ 使得 $F(\\boldsymbol{x}^*)\\leqslant F(\\boldsymbol{x}),\\forall \\ \\boldsymbol{x}\\in D$ 则称其为**绝对最优解**. 然而$,$ 并非所有问题都能存在绝对最优解$,$ 高维空间中无法定义全序(即所有元素相互可比较)的问题使得必定存在向量是不可比较的$,$ 如 $R^2$ 中的 $(1,0)$ 与 $(0,1)$ 即不可比较. 我们更多的希望考虑那些\"局部\"的最小值$,$ 即这样的解 $\\boldsymbol{x}^*$:\n", 181 | "$$\\text{不存在} \\ \\boldsymbol{x}\\in D,F(\\boldsymbol{x}) \\ \\text{支配} \\ F(\\boldsymbol{x}^*),$$\n", 182 | "这代表着$,$ 没有 $\\boldsymbol{x}$ 能全方位相对于 $\\boldsymbol{x}^*$ \"改进\". 这样的解在问题中称为 **Pareto 最优解**$,$ 往往 Pareto 最优解不唯一$,$ 是以一个解集形式呈现的$,$ 我们用一副图来展现 Pareto 解的性质.\n", 183 | "\n", 184 | "![rat](fig/fig3.2.png)\n", 185 | "\n", 186 | "当 $x\\in [10,20]$ 时$,$ 多目标函数值 $(y_1,y_2)$ 皆不存在两个分量目标都比其小的点.\n", 187 | "\n", 188 | "对于求解多目标问题$,$ 最简单的方法便是**线性加权法**$,$ 即求解问题\n", 189 | "\n", 190 | "\\begin{align}\n", 191 | "&\\min F(\\boldsymbol{x})\\boldsymbol{\\alpha}^T=\\alpha_1f_1(\\boldsymbol{x})+\\alpha_2f_2(\\boldsymbol{x})+\\cdots+\\alpha_pf_p(\\boldsymbol{x}),\\\\\n", 192 | "s.t. & \\begin{cases}\n", 193 | "a_{11}x_1+a_{12}x_2+\\cdots+a_{1n}x_n= b_1\\\\\n", 194 | "a_{21}x_1+a_{22}x_2+\\cdots+a_{2n}x_n= b_2\\\\\n", 195 | "\\vdots\\\\\n", 196 | "a_{m1}x_1+a_{m2}x_2+\\cdots+a_{mn}x_n= b_m\\\\\n", 197 | "x_i\\geqslant 0,i=1,2,\\cdots,n\n", 198 | "\\end{cases}\n", 199 | "\\end{align}\n", 200 | "\n", 201 | "来得到多目标问题的一个解$,$ 其中 $\\boldsymbol{\\alpha}=(\\alpha_1,\\alpha_2,\\cdots,\\alpha_n)$ 是权重向量且 $\\alpha_1+\\alpha_2+\\cdots+\\alpha_p=1,$ 并且我们有如下命题\n", 202 | "\n", 203 | "命题 3.1 \n", 204 | "对于任意的权重向量 $\\boldsymbol{\\alpha}$ 的线性加权法得到的最优解是多目标问题的一个 Pareto 解.\n", 205 | "\n" 206 | ] 207 | }, 208 | { 209 | "cell_type": "markdown", 210 | "metadata": {}, 211 | "source": [ 212 | "假设我们给每个目标的权重都相同,即每个目标一样重要,现在任务来了.
\n", 213 | "

🎯任务:我们已经为你写好了Task3的代码(点击此处查看),想一下如何通过修改代码,从而求解上述模型.

" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": 1, 219 | "metadata": {}, 220 | "outputs": [], 221 | "source": [ 222 | "## 请写下你的代码\n", 223 | "\n", 224 | "\n" 225 | ] 226 | }, 227 | { 228 | "cell_type": "markdown", 229 | "metadata": {}, 230 | "source": [ 231 | "线性加权法的优点在于将多目标的问题转化为单目标的线性规划问题$,$ 易于求解$,$ 然而其也带来了一些弊病: 权重 $\\boldsymbol{\\alpha}$ 是人工确定的$,$ 本身带有主观性$,$ 尤其在于一些主次分明的目标情况下$,$ 重要的目标权重应该比次要的目标权重高多少才能得到符合要求的 Pareto 解? 主观确定的权重是否具有普适性? 得到的解尽管是 Pareto 解但是否能较好地吻合现实? 这些都是简单线性加权法需要进一步的问题$,$ 也会进一步引出优化问题中重要的一环——**灵敏性分析**. 在 Task 4 我们会进行详细讨论." 232 | ] 233 | }, 234 | { 235 | "cell_type": "markdown", 236 | "metadata": {}, 237 | "source": [ 238 | "## 4.3 问题三: 目标约束规划模型的引入\n", 239 | "\n", 240 | "### 4.3.1 新增条件的约束构造\n", 241 | "\n", 242 | "经过了 Task 1 与 Task 2 的学习$,$ 要构建三个条件的约束非常简单.\n", 243 | "\n", 244 | "由于钢厂 $S_3$ 是国营企业$,$ 所以在订购时需保证其钢管供给的主要地位$,$ 钢管订购总量必须比其他钢厂要多: $x_3$ 不小于 $x_i,i=1,2,\\cdots,7,i\\ne 3$ 即可\n", 245 | "\n", 246 | "\\begin{align}\n", 247 | "&x_i\\leqslant x_3,i=1,2,\\cdots,7,i\\ne 3\\\\\n", 248 | "\\tag{3.2}\\label{eq 3.2}\\Leftrightarrow &\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant \\sum\\limits_{j=1}^{15}(z_{3j+}+z_{3j-}),i=1,2,\\cdot,7,i\\ne 3,\n", 249 | "\\end{align}\n", 250 | "\n", 251 | "因路况较差$,$ 钢厂 $S_2$ 到节点 $A_8$ 的钢管运输量不超过 $150$ 单位:\n", 252 | "\n", 253 | "$$\\tag{3.3}\\label{eq 3.3} z_{28+}+z_{28-}\\leqslant 150,$$\n", 254 | "\n", 255 | "订购运输计划的预算是 :\n", 256 | "\n", 257 | "$$\\tag{3.4}\\label{eq 3.4}\\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-})\\leqslant ,$$\n", 258 | "\n", 259 | "分别将 $\\eqref{eq 3.2},\\eqref{eq 3.3},\\eqref{eq 3.4}$ 加入到模型 $\\eqref{eq 3.1}$ 中得到如下的混合整数规划模型\n", 260 | "\n", 261 | "\\begin{align}\n", 262 | "&\\min \\dfrac{\\alpha_1}{\\max W_{total}-\\min W_{total}}W_{total}-\\dfrac{\\alpha_2}{\\max Y_{avg}-\\min Y_{avg}}Y_{avg},\\\\\n", 263 | "\\tag{3.5}\\label{eq 3.5}s.t. \\ & \\begin{cases}\n", 264 | "500 y_i\\leqslant \\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,15\\\\\n", 265 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant s_iy_i,i=1,2,\\cdots,15\\\\\n", 266 | "x_i=\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,7\\\\\n", 267 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant \\sum\\limits_{j=1}^{15}(z_{3j+}+z_{3j-}),i=1,2,\\cdot,7,i\\ne 3\\\\\n", 268 | "z_{28+}+z_{28-}\\leqslant 150\\\\\n", 269 | "\\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-})\\leqslant\\\\\n", 270 | "\\sum\\limits_{i=1}^7x_i\\leqslant L\\\\\n", 271 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 272 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\\\\\n", 273 | "y_i=0,1,i=1,2,\\cdots,7\\\\\n", 274 | "\\end{cases}\n", 275 | "\\end{align}\n", 276 | "\n", 277 | "其中$,z_{ij+},z_{ij-},p_{i},s_i,L,c_{ij}\\alpha_1,\\alpha_2$ 定义如 $\\eqref{eq 3.1},$ 我们继续用代码进行求解:\n", 278 | "\n", 279 | "然而$,$ 代码却告诉我们$,$ 该问题是没有可行解的$,$ 也就是说$,$ 新加入的约束太\"紧\"$,$ 使得可行域变成了空集$!$ 也就是说$,$ 我们无法满足所有的约束目标$,$ 势必要舍弃掉一些不重要的约束$,$ 给出一个具有\"弹性\"的订购运输计划.\n", 280 | "\n", 281 | "### 4.3.2 软约束——目标约束的引入与目标约束规划模型的构建\n", 282 | "\n", 283 | "当无法做到两全其美的约束下$,$ 我们只能相应的\"放宽\"一些没那么重要的约束$,$ 优先满足比较重要的约束.\n", 284 | "\n", 285 | "题干中说到: 三个条件的重要程度是按标号顺序排列的$,$ 也就是说 $\\eqref{eq 3.2}$ 是最重要的约束$,\\eqref{eq 3.3}$ 次之$,\\eqref{eq 3.4}$ 最次$,$ 这也是符合现实的$,$ 而如果无法满足约束$,$ 那就必须得突破约束或不满足$,$ 我们将这种具有正负的\"偏差\"量记为 $d^{+}_{i},d^{-}_{i}\\geqslant 0,i=1,2,\\cdots,3,$ 则弹性的约束 $\\eqref{eq 3.2},\\eqref{eq 3.3},\\eqref{eq 3.4}$ 可以被表达为\n", 286 | "\n", 287 | "$$\\tag{3.6}\\label{eq 3.6}\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})+d_{1i}^--d_{1i}^{+}=\\sum\\limits_{j=1}^{15}(z_{3j+}+z_{3j-}),i=1,2,\\cdot,7,i\\ne 3,$$\n", 288 | "\n", 289 | "$$\\tag{3.7}\\label{eq 3.7}z_{28+}+z_{28-}+d_{2}^--d_{2}^{+}=150,$$\n", 290 | "\n", 291 | "$$\\tag{3.8}\\label{eq 3.8}\\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-})+d_{3}^--d_{3}^{+}=,$$\n", 292 | "\n", 293 | "量化突破或不满足约束的部分后$,$ 我们继续往下思考: 既然都已经量化出来了$,$ 我们不就可以考量计划中对要求的偏离量了吗$?$ 而我们只要保证 $d^{+}_{i},d^{-}_{i}$ 尽可能地小$,$ 不就能在给出尽可能不脱离要求的有效计划了吗$?$ 类似于这样可违背的\"弹性\"约束我们称之为**目标约束**$,$ $d^{+}_{i},d^{-}_{i}$ 称为**偏差变量**. 相应的$,$ 无法用偏差变量进行弹性调整的约束称为**绝对约束**$,$ $\\eqref{eq 3.5}$ 中除了三条目标约束都是绝对约束$,$ 如钢管总长要等于主管道的长\n", 294 | "\n", 295 | "$$\\sum\\limits_{i=1}^7x_i\\leqslant L,$$\n", 296 | "\n", 297 | "这是必须满足的.\n", 298 | "\n", 299 | "引入了目标约束以及偏差变量后$,$ 我们量化了一些可容的弹性条件$,$ 接着我们继续思考如何利用目标约束以及偏差变量构建有**优先级条件**的规划模型. 回到题干$,$ 有两件事是需要着手去做的:\n", 300 | "\n", 301 | "1. 三个条件都尽可能满足: 这代表着说三个条件中突破(不满足)的偏差变量要尽可能地小$,$ 解读三个条件我们可以发现——都是对正偏差变量 $d_{i}^{+}$ 的要求$,$ 那么我们要考虑的便是如下三个目标\n", 302 | "\n", 303 | "$$\\min d_{1i}^{+}(i=1,2,\\cdots,7,i\\ne 3),\\min d_2^{+},\\min d_3^{+},$$\n", 304 | "\n", 305 | "利用 3.2 节的多目标规划的知识$,$ 我们可以将其用线性加权法整合到一起成单目标规划模型\n", 306 | "\n", 307 | "$$\\min \\alpha_1\\left(\\sum\\limits_{\\substack{i=1,2,\\cdots,7\\\\i\\ne 3}}d_{1i}^{+}\\right)+\\alpha_2d_2^{+}+\\alpha_3d_3^{+},$$\n", 308 | "\n", 309 | "其中 $\\alpha_1+\\alpha_2+\\alpha_3=1,\\alpha_i\\in [0,1],i=1,2,3,$\n", 310 | "\n", 311 | "2. 三个条件是存在满足**优先级**的: 结合上述的线性加权单目标$,$ 我们可以马上回答——把权重调整到合适的大小就可以了$!$ 那么$,$ 我们调整为如下的目标\n", 312 | "\n", 313 | "$$\\min P_1\\left(\\sum\\limits_{\\substack{i=1,2,\\cdots,7\\\\i\\ne 3}}d_{1i}^{+}\\right)+P_2d_2^{+}+P_3d_3^{+},$$\n", 314 | "\n", 315 | "其中 $P_1>>P_2>>P_3,$ 同时我们舍弃掉 $P_1+P_2+P_3=1$ 的约束使得权重可以充分进行调整$,$ 这是因为在数量级具有明显差距的时候$,d_{i}$ 的量纲差异是小到可以忽略不计的$,$ 同时这种权重是有分层作用的$,$ 我们称其为**优先因子**.\n", 316 | "\n", 317 | "那么针对问题三\"尽可能满足目标\"这个条件$,$ 我们设计出如下的规划模型\n", 318 | "\n", 319 | "\\begin{align}\n", 320 | "&\\min P_1\\left(\\sum\\limits_{\\substack{i=1,2,\\cdots,7\\\\i\\ne 3}}d_{1i}^{+}\\right)+P_2d_2^{+}+P_3d_3^{+},\\\\\n", 321 | "\\tag{3.9}\\label{eq 3.9}s.t. \\ & \\begin{cases}\n", 322 | "500 y_i\\leqslant \\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,15\\\\\n", 323 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\leqslant s_iy_i,i=1,2,\\cdots,15\\\\\n", 324 | "x_i=\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-}),i=1,2,\\cdots,7\\\\\n", 325 | "\\sum\\limits_{i=1}^7x_i\\leqslant L\\\\\n", 326 | "\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})+d_{1i}^--d_{1i}^{+}=\\sum\\limits_{j=1}^{15}(z_{3j+}+z_{3j-}),i=1,2,\\cdot,7,i\\ne 3\\\\\n", 327 | "z_{28+}+z_{28-}+d_{2}^{-}-d_{2}^{+}=150\\\\\n", 328 | "\\sum\\limits_{i=1}^{7}\\left(p_i\\sum\\limits_{j=1}^{15}(z_{ij+}+z_{ij-})\\right)+\\sum\\limits_{i=1}^7\\sum\\limits_{j=1}^{15}c_{ij}(z_{ij+}+z_{ij-})+d_{3}^{-}-d_{3}^{+}=\\\\\n", 329 | "z_{ij+}\\geqslant 0,z_{ij-}\\geqslant 0,i=1,2,\\cdots,7,j=1,2,\\cdots,15\\\\\n", 330 | "z_{i1-}=z_{i,15+}=0,i=1,2,\\cdots,15\\\\\n", 331 | "y_i=0,1,i=1,2,\\cdots,7\\\\\n", 332 | "d_{1i}^{+},d_{1i}^{-},d_{2}^{+},d_2^{-},d_3^{+},d_3^{-}\\geqslant 0,i=1,2,\\cdots,3\n", 333 | "\\end{cases}\n", 334 | "\\end{align}\n", 335 | "\n", 336 | "其中 $P_1>>P_2>>P_3>0,z_{ij+},z_{ij-},p_{i},s_i,L,c_{ij}$ 定义如 $\\eqref{eq 3.1},$ 所得到的解称为目标的**满意解**.\n", 337 | "\n", 338 | "**注:** 满意解不一定是原计划的成本最优解$,$ 当然$,$ 由于引入了多目标规划的框架$,$ 我们也仍然可以将成本以及稳定度的目标 (且具有优先级) 纳入模型其中.\n", 339 | "\n", 340 | "而模型建立之后$,$ 我们便可以马上进行求解了. \n", 341 | "\n", 342 | "### 4.3.3 目标约束规划模型的定义以及求解方式\n", 343 | "\n", 344 | "在介绍目标约束规划模型的求解方式前我们从 $\\eqref{3.9}$ 抽象出目标约束规划模型的一般形式: 设问题有 $n$ 个决策变量$,K$ 条目标约束$,m$ 条绝对约束$,L$ 个优先级$,$ 优先级 $P_l$ 的目标为 $\\sum\\limits_{k=1}^K(\\omega_{lk}^{-}d_{k}^{-}+\\omega_{lk}^{+}d_k^{+}),l=1,2,\\cdots,L$ (此处应该注意到我们可以构造数个要求耦合的目标如 $2d_{3}^{+}+d_2^{-},$ 由要求的形式灵活决定)$, \\omega_{lk}^{+},\\omega_{lk}^{-}$ 为同个优先级中 $d_{k}^{+},d_{k}^{-}$ 的权重$,$ 目标约束规划模型一般形式如下\n", 345 | "\n", 346 | "\\begin{align}\n", 347 | "&\\min \\sum\\limits_{l=1}^LP_l\\left(\\sum\\limits_{k=1}^K(\\omega_{lk}^{-}d_{k}^{-}+\\omega_{lk}^{+}d_k^{+})\\right)\\\\\n", 348 | "=&\\min P_1\\left(\\sum\\limits_{k=1}^K(\\omega_{1k}^{-}d_{k}^{-}+\\omega_{1k}^{+}d_k^{+})\\right)+P_2\\left(\\sum\\limits_{k=1}^K(\\omega_{2k}^{-}d_{k}^{-}+\\omega_{2k}^{+}d_k^{+})\\right)+\\cdots+P_L\\left(\\sum\\limits_{k=1}^K(\\omega_{Lk}^{-}d_{k}^{-}+\\omega_{Lk}^{+}d_k^{+})\\right),\\\\\n", 349 | "\\tag{3.10}\\label{eq 3.10}s.t. &\\begin{cases}\n", 350 | "\\sum\\limits_{j=1}^nc_{kj}x_j+d_k^{-}-d_{k}^{+}=g_k,k=1,2,\\cdots,K\\\\\n", 351 | "\\sum\\limits_{j=1}^{n}a_{ij}x_j\\leqslant(=) b_i,i=1,2,\\cdots,m\\\\\n", 352 | "x_j\\geqslant 0,j=1,2,\\cdots,n\\\\\n", 353 | "d_k^{-},d_{k}^{+}\\geqslant 0,k=1,2,\\cdots,K\\\\\n", 354 | "\\end{cases}\\\\\n", 355 | "\\end{align}\n", 356 | "\n", 357 | "其中$,$ 同一个偏差变量 $d_{k}^{-}$ 或 $d_{k}^{+}$ 不会出现在不同的优先级中$,$ 即 $\\omega_{lk}^{-}(\\omega_{lk}^{+}),l=1,2,\\cdots,L$ 仅有一个不为 $0$. 出于表述简单$,$ 我们不考虑包含整数变量的目标规划模型$,$ 两者求解方式大差不差. \n", 358 | "\n", 359 | "对于目标约束规划模型$,$ 由于其因为优先因子 $P$ 的引入具有主观性$,$ 我们可以从不同的角度去对其进行求解$,$ 注意$,$ 不同的求解方式会导出不同的结果$,$ 这些结果都是符合现实解释$,$ 具有意义的$,$ 言之有理即可. 而目标约束规划模型 $\\eqref{eq 3.10}$ 脱离不了 (混合整数) 线性规划模型的本质$,$ 不同求解方式围绕着的是单纯形法 (分支定界法).\n", 360 | "\n", 361 | "1. **直接给定优先因子权重求解**: 我们应该意识到 $\\eqref{eq 3.9}$ 本质上是一个线性规划模型$,$ 那么确定好优先因子 $P$ 以及权重 $\\omega_{lk}^{+},\\omega_{lk}^{-}$ 的数值后即可用单纯形法求解$;$ 若加入了整数变量$,$ 则无非是改为分支定界法求解.
对于优先因子的定值相对自由$,$ 视情况而定$,$ 如 $P_l=10^{L-l}$ 即 $P_1=10^{L-1},P_2=10^{L-2},\\cdots,P_{L-1}=10,P_{L}=1$ 等. 当然$,$ 人为确定数值的方式存在一定的主观性$,$ 需要慎重取值.
此处以 $P_1=100,P_2=10,P_3=1$ 为优先因子数值对 $\\eqref{eq 3.9}$ 进行满意解的求解\n", 362 | "\n", 363 | "

🎯任务:如何基于Task3的代码 求带优先因子的满意解.

\n", 364 | "\n" 365 | ] 366 | }, 367 | { 368 | "cell_type": "code", 369 | "execution_count": 1, 370 | "metadata": { 371 | "ExecuteTime": { 372 | "end_time": "2022-08-14T12:26:54.532574Z", 373 | "start_time": "2022-08-14T12:26:54.511593Z" 374 | } 375 | }, 376 | "outputs": [], 377 | "source": [ 378 | "# 请写下你的改进代码\n", 379 | "\n" 380 | ] 381 | }, 382 | { 383 | "cell_type": "markdown", 384 | "metadata": { 385 | "ExecuteTime": { 386 | "end_time": "2022-08-12T06:08:52.031384Z", 387 | "start_time": "2022-08-12T06:08:51.992486Z" 388 | } 389 | }, 390 | "source": [ 391 | "求解方法2:逐层优化(选读) \n", 392 | "由于优先级的存在$,$ 我们也可以对目标函数以逐层优化的方式求解$,$ 根据优先级分成 $L$ 个子问题$,$ 将高优先级的目标事先求解后作为下一优先级子问题约束进行求解$,$ 即求解 \n", 393 | "\\begin{align}\n", 394 | "P_1:&\\min \\sum\\limits_{k=1}^K(\\omega_{1k}^{-}d_{k}^{-}+\\omega_{1k}^{+}d_k^{+}),\\\\\n", 395 | "s.t. &\\begin{cases}\n", 396 | "\\sum\\limits_{j=1}^nc_{kj}x_j+d_k^{-}-d_{k}^{+}=g_k,k=1,2,\\cdots,K\\\\\n", 397 | "\\sum\\limits_{j=1}^{n}a_{ij}x_j\\leqslant(=) b_i,i=1,2,\\cdots,m\\\\\n", 398 | "x_j\\geqslant 0,j=1,2,\\cdots,n\\\\\n", 399 | "d_k^{-},d_{k}^{+}\\geqslant 0,k=1,2,\\cdots,K\\\\\n", 400 | "\\end{cases}\\\\\n", 401 | "\\end{align}\n", 402 | "得到该优先级的最优解 $d_{1k}^{-},d_{1k}^{+},k=1,2,\\cdots,K(\\omega_{lk}^{-},\\omega_{lk}^{+}\\ne 0)$ 后将相应的偏差变量 $d_{k}^{-}=d_{1k}^{-},d_{k}^{+}=d_{1k}^{+}$ 作为约束后求解第二个优先级的问题\n", 403 | "\\begin{align}\n", 404 | "P_2:&\\min \\sum\\limits_{k=1}^K(\\omega_{2k}^{-}d_{k}^{-}+\\omega_{2k}^{+}d_k^{+}),\\\\\n", 405 | "s.t. &\\begin{cases}\n", 406 | "\\sum\\limits_{j=1}^nc_{kj}x_j+d_k^{-}-d_{k}^{+}=g_k,k=1,2,\\cdots,K\\\\\n", 407 | "\\sum\\limits_{j=1}^{n}a_{ij}x_j\\leqslant(=) b_i,i=1,2,\\cdots,m\\\\\n", 408 | "d_{k}^{-}=d_{1k}^{-},d_{k}^{+}=d_{1k}^{+},\\omega_{lk}^{-},\\omega_{lk}^{+}\\ne 0\\\\\n", 409 | "x_j\\geqslant 0,j=1,2,\\cdots,n\\\\\n", 410 | "d_k^{-},d_{k}^{+}\\geqslant 0,k=1,2,\\cdots,K\\\\\n", 411 | "\\end{cases}\\\\\n", 412 | "\\end{align}\n", 413 | "迭代至第 $l+1$ 步的子问题为\n", 414 | "\\begin{align}\n", 415 | "P_{l+1}:&\\min \\sum\\limits_{k=1}^K(\\omega_{lk}^{-}d_{k}^{-}+\\omega_{lk}^{+}d_k^{+}),\\\\\n", 416 | "s.t. &\\begin{cases}\n", 417 | "\\sum\\limits_{j=1}^nc_{kj}x_j+d_k^{-}-d_{k}^{+}=g_k,k=1,2,\\cdots,K\\\\\n", 418 | "\\sum\\limits_{j=1}^{n}a_{ij}x_j\\leqslant(=) b_i,i=1,2,\\cdots,m\\\\\n", 419 | "d_{k}^{-}=d_{1k}^{-},d_{k}^{+}=d_{1k}^{+},\\omega_{1k}^{-},\\omega_{lk}^{+}\\ne 0\\\\\n", 420 | "d_{k}^{-}=d_{2k}^{-},d_{k}^{+}=d_{2k}^{+},\\omega_{2k}^{-},\\omega_{2k}^{+}\\ne 0\\\\\n", 421 | "\\vdots\\\\\n", 422 | "d_{k}^{-}=d_{lk}^{-},d_{k}^{+}=d_{lk}^{+},\\omega_{lk}^{-},\\omega_{lk}^{+}\\ne 0\\\\\n", 423 | "x_j\\geqslant 0,j=1,2,\\cdots,n\\\\\n", 424 | "d_k^{-},d_{k}^{+}\\geqslant 0,k=1,2,\\cdots,K\\\\\n", 425 | "\\end{cases}\\\\\n", 426 | "\\end{align}\n", 427 | "求解完 $L$ 个优先级子问题后即得到满意解. 此处也采用分层优化的方式对 $\\eqref{eq 3.9}$ 进行满意解的求解\n" 428 | ] 429 | }, 430 | { 431 | "cell_type": "markdown", 432 | "metadata": {}, 433 | "source": [ 434 | "## 4.4 后记与作业\n", 435 | "\n", 436 | "### 4.4.1 后记\n", 437 | "\n", 438 | "复数目标函数问题与复数目标约束问题的差异无非是有无优先级$,$ 此处统称为多目标优化问题$,$ 由于时间原因与笔者所学知识有限$,$ 没有对多目标优化问题的性质与解法进行深层次的讨论$,$ 事实上多目标优化问题在赛题中也是屡见不鲜的$,$ 最简单的线性加权法的答案就算是 Pareto 解也无法百分百保证是我们最想得到的 Pareto 解$,$ 但胜在求解简单与有效$,$ 若想要深入学习多目标优化问题的各种知识$,$ 可参照以下文献:\n", 439 | "\n", 440 | "### 4.4.2 思考作业\n", 441 | "\n", 442 | "1. 在 4.3 节讲解目标约束规划模型时$,$ 我们强调了满意解并非原问题的最优解$,$ 仅仅是贴合题干要求的一个解$,$ 而我们可以灵活地将真正的目标纳入目标约束中同时进行偏差变量与决策变量的同时求解$,$ 思考一下$,$ 应该怎么构建相应的模型$?$ 此处留给读者进行求解." 443 | ] 444 | }, 445 | { 446 | "cell_type": "code", 447 | "execution_count": null, 448 | "metadata": {}, 449 | "outputs": [], 450 | "source": [] 451 | }, 452 | { 453 | "cell_type": "markdown", 454 | "metadata": {}, 455 | "source": [ 456 | "
" 457 | ] 458 | } 459 | ], 460 | "metadata": { 461 | "kernelspec": { 462 | "display_name": "Python 3", 463 | "language": "python", 464 | "name": "python3" 465 | }, 466 | "language_info": { 467 | "codemirror_mode": { 468 | "name": "ipython", 469 | "version": 3 470 | }, 471 | "file_extension": ".py", 472 | "mimetype": "text/x-python", 473 | "name": "python", 474 | "nbconvert_exporter": "python", 475 | "pygments_lexer": "ipython3", 476 | "version": "3.8.8" 477 | }, 478 | "latex_envs": { 479 | "LaTeX_envs_menu_present": true, 480 | "autoclose": false, 481 | "autocomplete": true, 482 | "bibliofile": "biblio.bib", 483 | "cite_by": "apalike", 484 | "current_citInitial": 1, 485 | "eqLabelWithNumbers": true, 486 | "eqNumInitial": 1, 487 | "hotkeys": { 488 | "equation": "Ctrl-E", 489 | "itemize": "Ctrl-I" 490 | }, 491 | "labels_anchors": false, 492 | "latex_user_defs": false, 493 | "report_style_numbering": false, 494 | "user_envs_cfg": false 495 | } 496 | }, 497 | "nbformat": 4, 498 | "nbformat_minor": 2 499 | } 500 | --------------------------------------------------------------------------------