Tif*_*ny 1 python arrays matlab matrix
我正在研究一个问题,一个解决方案需要每个14x10矩阵的输入,这可能由1和0组成......我如何生成这些以便我可以将每个可能的14x10矩阵输入到另一个函数中?谢谢!
3月21日补充说:看起来我没有恰当地说出我的帖子.抱歉.我想要做的是针对几种情况优化10种不同生产单元的输出(给定不同的速度和停机时间).我的目标是放置一系列停机时间,以最大限度地减少日常生产中的差异.给出了每个单元允许的停机时间和频率.我目前正在尝试评估一个为期三周的周期,这意味着每三周就会将每个生产单元拆除一段时间.我要求计算机根据线条每三周只下降一次的约束来确定单位的下订单,并且每日生产的差异是最小的.我的第一种方法是使用Excel(我试图在上面描述)并且它不起作用(在那里并不令人惊讶)......其中1-运行,0-关闭以及何时将它们相加以计算生产.从设定的最大日产量中减去计算的产量.然后,将这些差异从Mon-Tues,Tues-Wed等进行比较,持续三周的时间范围,并使用求解器最小化.我的下一个方法是编写一个Matlab代码,其输入是容差(每天允许设置变化).有没有一个程序已经做到这一点或一个方法来做到这一点最简单?这似乎很简单,但我仍然在考虑不同的方法来解决这个问题.任何见解都会非常感激.
生成每个可能的1和0 矩阵14*10将生成2**140矩阵.我不相信你会有足够的寿命.我不知道,如果太阳在你完成之前仍然会发光.这就是为什么不可能生成所有这些矩阵的原因.你必须寻找其他解决方案,这看起来像一个蛮力.
这绝对不可能!可能的矩阵数为2 140,约为1.4e42.但是,请考虑以下内容......
因此,您的方法应该是:
像这样随机开始计算矩阵:
while true
newMatrix = randi([0 1],14,10);
%# Process the matrix and output your results to disk
end
Run Code Online (Sandbox Code Playgroud)由于组合太多,您不必newMatrix与之前的任何矩阵进行比较,因为重复之前可能发生的时间长度是天文数字大.由于其他原因,您的处理更有可能停止,例如(按可能发生的顺序):
注意:虽然我在上面的答案中注入了一些幽默,但我想我已经说明了一个有用的选择.如果您只是想对可能组合的一小部分进行采样(由于组合的数量很多,甚至可以将10亿个视为"小"),那么您不必经历额外的时间和内存消耗步骤保存已经处理过的所有矩阵并将新的矩阵与它进行比较,以确保不重复矩阵.由于重复组合的几率非常低,您可以安全地执行此操作:
for iLoop = 1:whateverBigNumberYouWant
newMatrix = randi([0 1],14,10); %# Generate a new matrix
%# Process the matrix and save your results
end
Run Code Online (Sandbox Code Playgroud)
实际实现在很大程度上取决于您希望如何表示矩阵...但假设矩阵可以由14*10 = 140元素列表表示:
from itertools import product
for matrix in product([0, 1], repeat=140):
# ... do stuff with the matrix ...
Run Code Online (Sandbox Code Playgroud)
当然,正如其他海报所指出的那样,这可能不是你想做的......但如果它真的是你想要做的,那就是最好的代码(根据你的要求)去做.