【数学建模】【优化算法】:【MATLAB】从【一维搜索】到】非线性方程】求解的综合解析_数学建模 黄金分割
目录
第一章:一维搜索问题
黄金分割法
股票交易策略优化
总结:
第二章:线性规划
线性规划(Simplex 算法)
生产计划优化
总结:
第三章:无约束非线性优化问题
梯度下降法
神经网络训练
总结:
牛顿法
非线性系统求解
总结:
第四章:有约束非线性优化问题
拉格朗日乘数法
机械设计优化
总结:
第五章:二次规划
二次规划
投资组合优化
总结:
第六章:混合整数线性规划
混合整数线性规划(MILP)
工厂选址问题
总结:
第七章:多目标规划
多目标规划(权重法)
生产计划优化
总结:
第八章:极大最小化
极大最小化
供货中心选址问题
总结:
第九章:半无限问题
半无限优化
天线设计优化
总结:
第十章:最小二乘问题
线性最小二乘法
数据拟合
总结:
第十一章:非线性方程(组)的求解
牛顿法
非线性系统求解
总结:
割线法
非线性方程求解
总结:
总结
专栏:数学建模学习笔记
第一章:一维搜索问题
黄金分割法
应用类型: 函数优化问题
算法简介: 黄金分割法是一种用于一维搜索问题的优化算法,特别适用于无导数信息的目标函数。通过利用黄金分割比(φ ≈ 0.618),该算法逐步缩小搜索区间,以快速逼近极值点。黄金分割法在优化问题中具有高效性和稳健性,特别适用于目标函数光滑但无导数信息的情况。
优势:
- 效率高: 通过逐步缩小搜索区间,迅速逼近极值点。
- 简单易用: 算法步骤简单,容易实现和理解。
- 无需导数信息: 适用于目标函数不易求导或不可导的情况。
应用领域: 黄金分割法广泛应用于各种一维搜索优化问题,如经济学中的定价策略、金融学中的投资决策、工程中的设计参数优化等。
股票交易策略优化
已知数据: 假设某只股票在一个交易日中的价格变化函数如下:
其中,t是交易时间,以小时为单位。我们希望找到在交易日内(0到10小时)最佳的买入和卖出时机,以最大化利润。
% 定义股票价格变化函数price = @(t) -0.1*t.^3 + 2*t.^2 - 15*t + 50;% 黄金分割法function [xmin, fmin] = golden_section_search(f, a, b, tol) phi = (sqrt(5) - 1) / 2; % 黄金分割比 c = b - phi * (b - a); d = a + phi * (b - a); while (b - a) > tol if f(c) < f(d) b = d; else a = c; end c = b - phi * (b - a); d = a + phi * (b - a); end xmin = (a + b) / 2; fmin = f(xmin);end% 定义搜索区间和容差a = 0;b = 10;tol = 1e-5;% 使用黄金分割法找到最佳买入和卖出时机[xmin, fmin] = golden_section_search(price, a, b, tol);fprintf(\'Optimal time to buy/sell: %.5f\\n\', xmin);fprintf(\'Optimal price: %.5f\\n\', fmin);
代码解释:
- 定义目标函数:函数
price
表示股票价格随时间的变化。- 黄金分割法实现:函数
golden_section_search
使用黄金分割比 φ 逐步缩小搜索区间,寻找极值点。- 搜索区间和容差:初始化搜索区间为 0 到 10 小时,设置容差为 1e-5。
- 求解最优时机:调用
golden_section_search
函数,找到最佳的买入和卖出时机,并打印结果。
总结:
黄金分割法在无导数信息的情况下,通过逐步缩小搜索区间,能够高效地找到目标函数的极值点。在股票交易策略优化竞赛中,利用黄金分割法可以有效地确定最佳的买入和卖出时机,以最大化交易利润。
第二章:线性规划
线性规划(Simplex 算法)
应用类型: 资源分配、生产计划、投资组合优化
算法简介: 线性规划(Linear Programming,LP)是一类求解线性目标函数在一组线性约束条件下的优化问题的算法。Simplex 算法是最经典的线性规划求解算法之一。它通过逐步移动顶点来搜索可行区域,最终找到最优解。Simplex 算法以其高效性和鲁棒性,广泛应用于各种线性优化问题中。
优势:
- 效率高: Simplex 算法在大多数情况下能够高效求解线性规划问题。
- 鲁棒性强: 适用于各种线性约束和目标函数。
- 全局最优: 线性规划问题的全局最优解能够通过 Simplex 算法求得。
应用领域: 线性规划广泛应用于资源分配、生产计划、物流调度、金融投资组合优化等地方。
生产计划优化
已知数据: 某工厂生产两种产品 P1 和 P2,每种产品的利润分别为 40 美元和 30 美元。生产每种产品需要的资源如下表:
工厂每天最多有 100 小时的资源1和 80 小时的资源2。目标是通过合理分配资源以最大化利润。
% 定义目标函数和约束f = [-40; -30]; % 注意:由于 linprog 求解的是最小值,这里取负A = [2, 1; 1, 2];b = [100; 80];lb = [0; 0];ub = [];% 求解线性规划问题[x, fval] = linprog(f, A, b, [], [], lb, ub);fprintf(\'Optimal production of P1: %.2f units\\n\', x(1));fprintf(\'Optimal production of P2: %.2f units\\n\', x(2));fprintf(\'Maximum profit: $%.2f\\n\', -fval);
代码解释:
- 定义目标函数:向量
f
表示每种产品的单位利润,由于linprog
求解的是最小化问题,所以取负。- 定义约束条件:矩阵
A
和向量b
分别表示线性约束条件的系数矩阵和右端项,lb
和ub
表示变量的下界和上界。- 求解线性规划问题:调用
linprog
函数,求解最优生产计划,并打印结果。
总结:
线性规划(Simplex 算法)通过高效求解线性目标函数在一组线性约束条件下的最优解,广泛应用于各种资源分配和生产计划优化问题。在生产计划优化竞赛中,利用 Simplex 算法可以有效地确定最优的生产组合,以最大化工厂利润。
第三章:无约束非线性优化问题
梯度下降法
应用类型: 参数优化、机器学习模型训练
算法简介: 梯度下降法(Gradient Descent)是一种用于无约束非线性优化问题的迭代算法。它通过沿着目标函数梯度的反方向逐步更新变量,从而逼近函数的极小值。梯度下降法因其简单易用和适用广泛,成为机器学习模型训练和参数优化中的常用算法。
优势:
- 简单易用: 算法简单,易于实现。
- 适用广泛: 适用于多种无约束非线性优化问题。
- 收敛速度可控: 通过调整步长,可以控制收敛速度和精度。
应用领域: 梯度下降法广泛应用于机器学习模型训练、参数优化、图像处理、信号处理等地方。
神经网络训练
已知数据: 假设一个简单的二次函数作为训练误差函数:
我们希望通过优化权重参数 w使得训练误差最小。
% 定义训练误差函数及其梯度E = @(w) (w(1) - 3)^2 + (w(2) - 2)^2;grad_E = @(w) [2*(w(1) - 3); 2*(w(2) - 2)];% 梯度下降法function [w, fval] = gradient_descent(E, grad_E, w0, alpha, tol) w = w0; while norm(grad_E(w)) > tol w = w - alpha * grad_E(w); end fval = E(w);end% 定义初始权重、步长和容差w0 = [0; 0];alpha = 0.1;tol = 1e-5;% 使用梯度下降法优化权重参数[w, fval] = gradient_descent(E, grad_E, w0, alpha, tol);fprintf(\'Optimal weights: w1 = %.5f, w2 = %.5f\\n\', w(1), w(2));fprintf(\'Minimum error: %.5f\\n\', fval);
代码解释:
- 定义目标函数及其梯度:函数
E
表示训练误差函数,grad_E
表示其梯度。- 梯度下降法实现:函数
gradient_descent
使用梯度下降法,通过沿着梯度反方向更新权重参数,逐步逼近极小值。- 初始权重、步长和容差:初始化权重参数为
[0; 0]
,设置步长为 0.1,容差为 1e-5。- 优化权重参数:调用
gradient_descent
函数,优化权重参数,并打印结果。
总结:
梯度下降法通过沿着目标函数梯度的反方向更新变量,能够有效地逼近函数的极小值。在神经网络训练竞赛中,利用梯度下降法可以有效地优化权重参数,以最小化训练误差。
牛顿法
应用类型: 参数优化、高精度问题求解
算法简介: 牛顿法(Newton\'s Method)是一种用于求解无约束非线性优化问题的迭代算法。它利用