非线性优化 | 非线性问题matlab+yalmip求解案例

简介: 非线性优化 | 非线性问题matlab+yalmip求解案例


在数学规划问题中,常常会遇到多种非线性目标和约束的问题,如电力系统中机组的成本函数,很多文献采用分段线性化进行处理,但是对于稍微复杂些的非线性问题采用分段线性化难度很大,而且结果偏差比较严重,经过博主测试,matlab+yalmip(cplex为求解器)能够解决一些看起来比较棘手的非线性问题,功能远比你想象中要强大。

1 非线性数学规划案例

考虑下面的最小化问题。

其中,.

可以看到,目标函数是一个带的函数,是非线性的;第一个约束是2次方,第二个约束带绝对值。

这个问题包含了多种非线性的场景,非常适合用来检验matlab+yalmip求解非线性的数学规划。

2 完全直接调用matlab+yalmip求解

如果完全直接调用yalmip求解,则需要引入辅助变量

因此,上述数学规划其实是可以等价为下面的形式

我们用matlab调用cplex来求解该数学规划。

使用到的函数

  • abs: 添加绝对值约束
  • max:添加约束

完整代码如下:

%定义变量
x=sdpvar(1);
y=sdpvar(1);
z=sdpvar(1);
u=sdpvar(1);
w=sdpvar(1);
%设置约束
con=[];
con=[con,(x-1)^2+(y-1)^2-1<=0];%二次非线性约束
con=[con,z+y-2<=0];
con=[con,z==abs(x)];%非线性约束
con=[con,u==y+4];
con=[con,w==max(z,u)];%非线性约束
con=[con,w>=0,z>=0];
%求解
ops = sdpsettings('verbose',1,'solver','cplex');%求解器设置
optimize(con,w,ops)
%结果
x=value(x)
y=value(y)
z=value(z)
u=value(u)
w=value(w)

求解结果为:

CPXPARAM_MIP_Display                             1
Tried aggregator 2 times.
MIQCP Presolve eliminated 5 rows and 1 columns.
MIQCP Presolve modified 16 coefficients.
Aggregator did 5 substitutions.
Reduced MIQCP has 15 rows, 8 columns, and 40 nonzeros.
Reduced MIQCP has 2 binaries, 0 generals, 0 SOSs, and 0 indicators.
Reduced MIQCP has 1 quadratic constraints.
Presolve time = 0.00 sec. (0.05 ticks)
Probing time = 0.00 sec. (0.00 ticks)
MIP emphasis: balance optimality and feasibility.
MIP search method: dynamic search.
Parallel mode: deterministic, using up to 8 threads.
Node log . . .
Best integer =   4.999999e+00  Node =       0  Best node =   3.998578e+00
Best integer =   4.999997e+00  Node =       0  Best node =   3.999001e+00
Best integer =   4.000000e+00  Node =       0  Best node =   4.000000e+00
Flow cuts applied:  1
Gomory fractional cuts applied:  1
Cone linearizations applied:  13
ans = 
  包含以下字段的 struct:
    yalmipversion: '20181012'
       yalmiptime: 0.1245
       solvertime: 0.3555
             info: 'Successfully solved (CPLEX-IBM)'
          problem: 0
x =    1.0000
y =  -6.9885e-09
z =    1.0000
u =    4.0000
w =    4.0000

由于是有一点点数值问题,我们可以忽略数值问题,实际上最优解为

从上述解可以得知,这个解确实是最优的。

通过报告我们大致看一下对非线性部分如何处理的:

Reduced MIQCP has 1 quadratic constraints

该二次型整数规划模型中成功处理了二次项约束,具体处理方法也直接给出来了:

Cone linearizations applied:  13

应用了二阶锥方法解决2次规划问题,当然,二阶锥约束也可以用cone进行表达。

这里是matlab/yalmip深度应用聚集地,欢迎关注。

相关文章
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
3天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
5天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。
|
1月前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
148 68
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
9月前
|
数据安全/隐私保护
地震波功率谱密度函数、功率谱密度曲线,反应谱转功率谱,matlab代码
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章