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中的决策变量,最高维度只设为二维矩阵!!不建议设成高维矩阵!!

相关推荐
Dev7z2 小时前
基于MATLAB的风向和天气条件下污染物扩散模拟与可视化系统
人工智能·算法·matlab
tyatyatya11 小时前
MATLAB基础数据类型教程:数值型/字符型/逻辑型/结构体/元胞数组全解析
开发语言·matlab
kaikaile199512 小时前
基于遗传算法的车辆路径问题(VRP)解决方案MATLAB实现
开发语言·人工智能·matlab
listhi52014 小时前
基于改进SET的时频分析MATLAB实现
开发语言·算法·matlab
chao18984418 小时前
MATLAB 实现声纹识别特征提取
人工智能·算法·matlab
free-elcmacom19 小时前
MATLAB信号分析:眼图生成与高速系统评估
开发语言·matlab·信号处理
机器学习之心1 天前
MATLAB基于响应面方法与NSGA-II的液体静压转台工况参数匹配
matlab·工况参数匹配
wearegogog1231 天前
使用MATLAB实现平方倍频法对DSSS/BPSK信号进行载频估计
开发语言·matlab
科技与数码1 天前
国产MATLAB替代软件的关键能力与生态发展现状
大数据·人工智能·matlab
裤裤兔1 天前
利用matlab进行FDR校正的实现方式
数据结构·算法·matlab·多重比较矫正·校正·fdr