fmincon函数的决策变量可以是二维矩阵,但不建议是高维矩阵

1)二维矩阵代码

c 复制代码
clear all
clc

% 定义目标函数
fun = @(x) sum(sum(x.^2));

% 初始矩阵
x0 = 2 + rand(2, 2);

% 定义空的线性不等式约束
A = [];
b = [];

% 定义空的线性等式约束
Aeq = [];
beq = [];

% 定义变量的上下界
lb = ones(2,2);
ub = [];

% 使用 fmincon 求解
options = optimoptions('fmincon', 'Display', 'iter');
[x_opt, fval_opt] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, [], options);

% 显示最优解和最优值
disp('最优解:');
disp(x_opt);
disp('最优值:');
disp(fval_opt);

2)运行结果

由此可见,确实可计算得到最优解!.

3)高维矩阵代码(五维)

c 复制代码
clear all
clc

% 定义目标函数
fun = @(x) sum(sum(sum(sum(sum(x.^2)))));

% 初始矩阵(五维)
x0 = 2 + rand(2, 2, 2, 2, 2);

% 定义空的线性不等式约束
A = [];
b = [];

% 定义空的线性等式约束
Aeq = [];
beq = [];

% 定义变量的上下界
lb = ones(2, 2, 2, 2, 2);
ub = [];

% 使用 fmincon 求解
options = optimoptions('fmincon', 'Display', 'iter');
[x_opt, fval_opt] = fmincon(fun, x0, A, b, Aeq, beq, lb, ub, [], options);

% 显示最优解和最优值
disp('最优解:');
disp(x_opt);
disp('最优值:');
disp(fval_opt);

4)运行结果

此外,即使是凸优化问题,fmin仍可能会显示求得"Local minimum found that satisfies the constraints."

5)需要注意:非常不建议fmin中使用高维矩阵(三维及三维以上)

前述案例中的目标函数太简单,不具有泛化意义。因此,我更换了一组复杂一些的目标函数和约束条件,并应用在三维矩阵上,然后发现各种报错:

分析报错原因:第一轮迭代时,"决策变量"是初始的高维矩阵( 4 ∗ 3 ∗ 4 4*3*4 4∗3∗4维矩阵);但在第二轮迭代时,目标函数中的"决策变量"、以及非线性约束中的"决策变量",就全部变为二维矩阵了!(因为第一轮迭代的结果,会以二维矩阵的形式来存储!所以,在第二轮迭代时,决策变量又变成了 4 ∗ 12 4*12 4∗12维的二维矩阵!)

因此,建议fmin中的决策变量,最高维度只设为二维矩阵!!不建议设成高维矩阵!!

相关推荐
ghie90909 小时前
x-IMU matlab zupt惯性室内定位算法
人工智能·算法·matlab
瑞雪兆丰年兮12 小时前
数学实验(Matlab符号运算)
开发语言·算法·matlab·数学实验
潇氡14 小时前
使用matlab进行数据拟合
matlab·数据拟合
买了一束花15 小时前
数据预处理之数据平滑处理详解
开发语言·人工智能·算法·matlab
英英_17 小时前
MATLAB中矩阵和数组的区别
机器学习·matlab·矩阵
passionSnail19 小时前
《用MATLAB玩转游戏开发》推箱子游戏的MATLAB趣味实现
开发语言·游戏·matlab
IT猿手1 天前
基于强化学习 Q-learning 算法求解城市场景下无人机三维路径规划研究,提供完整MATLAB代码
神经网络·算法·matlab·人机交互·无人机·强化学习·无人机三维路径规划
码到成龚1 天前
问题及解决01-面板无法随着窗口的放大而放大
matlab·appdesigner
XuX031 天前
手搓传染病模型(SEIARW)
数学建模·matlab·微分方程·传染病
沅_Yuan1 天前
基于小波神经网络(WNN)的回归预测模型【MATLAB】
深度学习·神经网络·matlab·回归·小波神经网络·wnn