我认为对于mathematica专家来说这是一个简单的问题。 在给定必须遵守某些约束的索引的情况下,如何从列表中最大化提取的值?
例如:
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表示满意。
我的模型必须选择所有月份的正确班次,以便通过尊重某些约束来最大限度地提高员工满意度。
我最大的问题是关联满意度矩阵和所选择的班次 我无法在方法NMaximize中使用一个功能,该功能采取所选择的班次和员工,并返回满意度,从而对所有月份进行求和。 我需要最大化这样的事情:
Summation(from j=1 to j=31) getSatisfaction[1,chosenShift for that day)
你知道我怎样才能在mathematica中写这个? 我好几天都在努力解决这个问题,但我无法解决这个问题。 我需要输入来将选择的班次与满意度矩阵联系起来。
非常感谢!!
答案 0 :(得分:3)
如果您不需要找到x
的值,那么我建议您只提取列表的可接受范围,然后找到Max
:
s = {4,2,3,5};
s[[1 ;; 3]] // Max
4
如果你有特别毛茸茸的约束,那么你可能需要像Pick:
这样的东西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}
答案 1 :(得分:2)
回答您更新的问题:
如果你有:
shifts = {{4, 3, 5, 2}, {3, 4, 5, 1}, {4, 3, 5, 2}}
然后
(Tally /@ Transpose@shifts)[[All, 1, 1]]
给你:
{4, 3, 5, 2}
我列出了每个员工的首选班次。