第1 章 介绍和安装 1
1.1 什么是Julia 及为什么要使用Julia 2
1.2 安装Julia 4
1.2.1 在Windows 系统上安装Julia 4
1.2.2 在macOS 系统上安装Julia 9
1.2.3 运行Julia 脚本 13
1.2.4 安装Gurobi 13
1.2.5 安装CPLEX 15
1.3 安装IJulia 17
1.4 包管理 20
1.5 帮助 22
第2 章 简单线性规划 24
2.1 线性规划问题 25
2.2 写线性规划问题的其他方式 29
2.3 写线性规划问题的另一种方式 31
2.4 混合整数线性规划问题 32
第3 章 Julia 语言基础 35
3.1 向量、矩阵和数组 35
3.2 元组 40
3.3 索引和范围 42
3.4 打印信息 45
3.5 集合、字典和循环 47
3.6 函数 50
3.7 变量的作用域 52
3.8 随机数生成 55
3.9 文件读/写 59
3.10 绘图 63
3.10.1 PyPlot 包 64
3.10.2 在PyPlot 中避免使用第三方字体 68
第4 章 数值方法选讲 70
4.1 曲线拟合 70
4.2 数值微分 75
4.3 数值积分 78
4.4 自动微分 80
第5 章 单纯形法 84
5.1 单纯形法简介 84
5.2 查询所有基本可行解 87
5.3 使用JuMP 包 93
5.4 表格式的枢轴旋转 93
5.5 单纯形法的实现 95
5.5.1 initialize(c,A,b) 97
5.5.2 is_optimal(tableau) 99
5.5.3 pivoting!(tableau) 100
5.5.4 创建模型 104
5.6 后面的步骤 110
第6 章 网络优化问题 111
6.1 最小费用网络流问题 111
6.2 运输问题 121
6.3 最短路径问题 127
6.4 实现Dijkstra 算法 132
第7 章 内点法 138
7.1 仿射尺度算法 138
7.2 原路径跟踪算法 144
7.3 评述 149
第8 章 非线性优化问题 151
8.1 无约束优化 151
8.1.1 线性搜索 151
8.1.2 无约束优化 153
8.1.3 盒约束优化 154
8.2 非线性优化 155
8.3 其他求解器 156
8.4 混合整数非线性规划 161
第9 章 蒙特卡洛方法 163
9.1 概率分布 163
9.2 随机线性规划 165
9.3 估算简单路径的数目 172
第10 章 拉格朗日松弛 181
10.1 拉格朗日松弛介绍 181
10.1.1 下界与上界 182
10.1.2 次梯度优化 183
10.1.3 总结 184
10.2 p-中位问题 184
10.2.1 读取数据文件 186
10.2.2 最优化求解p-中位问题 188
10.2.3 拉格朗日松弛应用 189
10.2.4 求解下界 189
10.2.5 求解上界 193
10.2.6 更新拉格朗日乘子 195
第11 章 互补问题 208
11.1 线性互补问题(LCP) 208
11.2 非线性互补问题(NCP) 216
11.3 混合互补问题(MCP) 220
第12 章 最优化求解器中的参数 221
12.1 设置CPU 时间限制 221
12.2 设置最优化间隙公差 222
12.3 热启动 223
12.4 Big-M 与整性公差 224
12.5 关掉求解器的输出 225
12.6 其他求解器参数 226