我认为这是数学专家的一个简单问题。如何使从列表中提取的值最大化,给出必须遵守某些约束的索引?
例如:
S = {4,2,3,5}
Maximize[{Extract[S,x], x<= 3, x>=1},{x}]我希望返回4,而不是这个错误:
Extract::psl: "Position specification x in Extract[{4,2,3,5},x] is not an integer or a list of integers."有人知道怎么解决这个问题吗?
非常感谢。
非常感谢!!最后一种方法是我正在寻找的,但应用于我的实际问题不起作用。
我有以下问题:
在一个月的某一天,我必须最大限度地使员工对某一天的轮班感到满意。我有矩阵满意度(员工,轮班),是这样的:
S= {{4,3,5,2},{3,4,5,1}}每个元素代表员工对某一轮班的满意度,因此员工1对轮班1有满意度4。
我的模型必须选择正确的整个月的轮班,以便通过尊重某些约束来最大化员工的满意度。
我最大的问题是将满意矩阵与选择的移位联系起来。
我无法在方法NMaximize中使用一个函数,该函数接受所选的轮班和员工,并返回满意度,因此可以在整个月中进行一次求和。我需要最大化这样的东西:
Summation(from j=1 to j=31) getSatisfaction[1,chosenShift for that day)你知道我怎么用mathematica写这个吗?
我为这个问题奋斗了好几天,但我解决不了这个问题。我需要输入将选择的移位与满意度矩阵联系起来。
非常感谢!!
发布于 2012-01-22 14:44:16
如果您不需要找到x的值,那么我建议您只提取列表中可接受的范围,然后找到该列表的Max:
s = {4,2,3,5};
s[[1 ;; 3]] // Max4
如果您有特别多毛的限制,那么您可能需要一些类似的选择:
list = {5, 7, 1, 9, 3, 6, 2, 8, 4};
Pick[list, Range@Length@list, x_ /; x <= 7 && x >= 3 && Mod[7, x] == 1]{1,6}
然后,可以在返回的列表上使用Max。
为了完整起见,如果您需要x的值或流程中的其他细节,下面是一种方法:
list = {6, 5, 7, 3, 4, 2, 1, 8, 9};
pos = Cases[Range@Length@list, x_ /; x <= 7 && x >= 3 && Mod[7, x] == 1]
values = Part[list, pos]
maxpos = Part[pos, Ordering[values, -1]]{3,6} {7,2} {3}
发布于 2012-01-23 12:10:35
回答你最新的问题:
如果你有:
shifts = {{4, 3, 5, 2}, {3, 4, 5, 1}, {4, 3, 5, 2}}然后
(Tally /@ Transpose@shifts)[[All, 1, 1]]给你:
{4, 3, 5, 2}其中我列出了每个员工的优先班次.
https://stackoverflow.com/questions/8961624
复制相似问题