create matrix of integers with specified sum in column and row

2 次查看(过去 30 天)
I want to create a 4x4 matrix of integers such that:-
Say, M=[ A B C D ; E F G H ; I J K L ; M N O P ]
A+B+C+D>=value from user
A+B+C+D<=value from user
A+E+I+M>=value from user
A+E+I+M<=value from user
and likewise for all columns and rows.
  1 个评论
Rik
Rik 2021-2-23
What have you tried?
Also, don't forget that this might not be possible for some values provided by the user.

请先登录,再进行评论。

回答(1 个)

Matt J
Matt J 2021-2-23
You can try to formulate it as an integer program.
M=optimvar('M',[4,4],'type','integer');
Constraints.columns=sum(M,1)<=colvalues;
Constraints.rows=sum(M,2)<=rowvalues;
prob=optimproblem('Objective', 0,'Constraints',Constraints );
sol=solve(prob)
  16 个评论
Zaid Ali Basharat
Zaid Ali Basharat 2021-2-24
Ok now I got what I wanted but is there anyway we can do it without exapnding the upper column values?
Matt J
Matt J 2021-2-24
编辑:Matt J 2021-2-24
The solver will tell you if it is possible for the given set of input ranges. If it returns. sol.M=[], then it is not possible.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2018a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by