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

1)二维矩阵代码

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)高维矩阵代码(五维)

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 434维矩阵);但在第二轮迭代时,目标函数中的“决策变量”、以及非线性约束中的“决策变量”,就全部变为二维矩阵了!(因为第一轮迭代的结果,会以二维矩阵的形式来存储!所以,在第二轮迭代时,决策变量又变成了 4 ∗ 12 4*12 412维的二维矩阵!)

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

相关推荐

  1. 旋转平移矩阵

    2024-01-02 18:14:02       17 阅读
  2. 矩阵】240.搜索矩阵II

    2024-01-02 18:14:02       40 阅读
  3. 搜索矩阵 II【矩阵】【二分】

    2024-01-02 18:14:02       38 阅读
  4. 74.搜索矩阵

    2024-01-02 18:14:02       52 阅读
  5. 搜索矩阵【二分】

    2024-01-02 18:14:02       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-02 18:14:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-02 18:14:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-02 18:14:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-02 18:14:02       18 阅读

热门阅读

  1. git环境配置

    2024-01-02 18:14:02       39 阅读
  2. Docker镜像制作之ZLMediakit镜像制作

    2024-01-02 18:14:02       42 阅读
  3. border设置小于1px,在ios上面不显示的问题

    2024-01-02 18:14:02       37 阅读
  4. 常见的排序算法解析实现

    2024-01-02 18:14:02       29 阅读
  5. 利用进制转换(轻松过期末考试)

    2024-01-02 18:14:02       39 阅读
  6. 三维重建 3D Gaussian Splatting:实时的神经场渲染

    2024-01-02 18:14:02       43 阅读
  7. C++递归/递归函数(详细讲解)

    2024-01-02 18:14:02       39 阅读
  8. C++拷贝构造函数介绍

    2024-01-02 18:14:02       34 阅读
  9. hive多分隔符外表支持

    2024-01-02 18:14:02       33 阅读
  10. vue解决执行打包之后打开页面空白问题

    2024-01-02 18:14:02       38 阅读
  11. 如何用GPT制作技术路线图?

    2024-01-02 18:14:02       35 阅读