首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mathematica,最大限度地从列表中提取元素

Mathematica,最大限度地从列表中提取元素
EN

Stack Overflow用户
提问于 2012-01-22 14:07:14
回答 2查看 583关注 0票数 0

我认为这是数学专家的一个简单问题。如何使从列表中提取的值最大化,给出必须遵守某些约束的索引?

例如:

代码语言:javascript
复制
S = {4,2,3,5}

Maximize[{Extract[S,x], x<= 3, x>=1},{x}]

我希望返回4,而不是这个错误:

代码语言:javascript
复制
Extract::psl: "Position specification x in Extract[{4,2,3,5},x] is not an integer or a list of integers."

有人知道怎么解决这个问题吗?

非常感谢。

非常感谢!!最后一种方法是我正在寻找的,但应用于我的实际问题不起作用。

我有以下问题:

在一个月的某一天,我必须最大限度地使员工对某一天的轮班感到满意。我有矩阵满意度(员工,轮班),是这样的:

代码语言:javascript
复制
S= {{4,3,5,2},{3,4,5,1}}

每个元素代表员工对某一轮班的满意度,因此员工1对轮班1有满意度4。

我的模型必须选择正确的整个月的轮班,以便通过尊重某些约束来最大化员工的满意度。

我最大的问题是将满意矩阵与选择的移位联系起来。

我无法在方法NMaximize中使用一个函数,该函数接受所选的轮班和员工,并返回满意度,因此可以在整个月中进行一次求和。我需要最大化这样的东西:

代码语言:javascript
复制
Summation(from j=1 to j=31) getSatisfaction[1,chosenShift for that day)

你知道我怎么用mathematica写这个吗?

我为这个问题奋斗了好几天,但我解决不了这个问题。我需要输入将选择的移位与满意度矩阵联系起来。

非常感谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-22 14:44:16

如果您不需要找到x的值,那么我建议您只提取列表中可接受的范围,然后找到该列表的Max

代码语言:javascript
复制
s = {4,2,3,5};

s[[1 ;; 3]] // Max

4

如果您有特别多毛的限制,那么您可能需要一些类似的选择:

代码语言:javascript
复制
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的值或流程中的其他细节,下面是一种方法:

代码语言:javascript
复制
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}

票数 3
EN

Stack Overflow用户

发布于 2012-01-23 12:10:35

回答你最新的问题:

如果你有:

代码语言:javascript
复制
shifts = {{4, 3, 5, 2}, {3, 4, 5, 1}, {4, 3, 5, 2}}

然后

代码语言:javascript
复制
(Tally /@ Transpose@shifts)[[All, 1, 1]]

给你:

代码语言:javascript
复制
{4, 3, 5, 2}

其中我列出了每个员工的优先班次.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8961624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档