3 d和2 d矩阵乘法的目标函数

6视图(30天)
木树T
木树T 2020年10月25日
评论道: 木树T2020年10月26日
我有一个3 d矩阵NxNxM和2 d B矩阵(NxN),将一个整数优化变量矩阵解算器。我想把A和B获得(NxNXM)矩阵。然后我需要和所有的元素产生的3 d矩阵。
我的目标函数如下:
ndesign = optimproblem (“目标”sum (a * B,“所有”));
我可以做这个乘法解决如果我不使用。然而,我收到以下错误当我把它放在目标函数:
错误使用optim.internal.problemdef.ElementwiseOperator / checkIsValid
论点尺寸1454 - 1454 - 50和1454 -,- 1454必须同意。
错误在optim.internal.problemdef.Times / checkIsValid
错误在optim.internal.problemdef.Times.getTimesOperator
错误在。
错误在networkdes(第290行)
ndesign = optimproblem (“目标”sum (a * B,“所有”));%建立优化问题
我还需要转换3 d矩阵稀疏的三维矩阵。我使用ndSparse库创建它,但是我又不能在目标函数中使用它。提前谢谢。
编辑 更多的解释。这是我的优化脚本:
一个=% (1454 x1454x50) 3 d矩阵
A_sparse = ndSparse(一个);
B = optimvar (“b”,长度(一),(A)],“类型”,“整数”,下界的0,“UpperBound”1);
ndesign = optimproblem (“目标”sum (a * B,“所有”));%建立优化问题
% ndesign = optimproblem(“目标”,总和(A_sparse。* B '所有'));%创建稀疏优化问题
ndesign.Constraints。const1 = (B(诊断接头(B)) = = 0);% B_ii = = 0
ndesign.Constraints。const2 =(和(B,“所有”)= = 20);
选择= optimoptions (“intlinprog”,“显示”,“关闭”,“PlotFcn”,@optimplotmilp);
[溶胶,fval exitflag、输出]=解决(ndesign,“选项”、选择);
10评论
木树T
木树T 2020年10月26日
谢谢你的帮助!
我重塑一个矩阵(n * m, n)和B仍(n, n)
A_re =重塑(一个,大小(A, 1) * (A, 3)大小,大小(A, 1)));
,改变了我的目标函数
ndesign = optimproblem (“目标”总和(A_re * B,“所有”));
并且它成功了!但是,我不能够使用ndSparse类稀疏矩阵来做同样的事情
A_sparse = ndSparse (A_re);
ndesign = optimproblem (“目标”总和(A_sparse * B,“所有”));
当我运行上面的脚本,我得到以下错误:
错误使用双
转换从optim.problemdef翻倍。OptimizationVariable是不可能的。
错误在ndSparse > mkCompat(第2803行)
X =双(X);
错误*(第1083行)
obj = finalObject (mkCompat (L) * mkCompat (R));
错误在networkdes_rev(20)行
ndesign = optimproblem (“目标”总和(A_sparse * B,“所有”));
我怎么能做到这一点,在目标函数中使用它吗?

登录置评。

答案(0)

类别

找到更多的在和迭代解算器输出显示帮助中心文件交换

下载188bet金宝搏


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!