问题标签 [optimal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
21 浏览

python-3.x - 使用 Python 寻找最佳选择组合

我最近开始学习 Python,如果您能帮助我找出解决以下问题的最佳方法,我将不胜感激:

基本上,我需要找到最佳的劳动力组合。假设我们有 3 家不同的公司可以为我们完成这项工作。我们为每家公司提供以下数据:每小时价格(成本)、每小时产量(性能)和从 1 到 5 的质量分数(质量)。该数据每月变化。我希望算法根据这些数据返回最佳的公司选择,在所有 3 家公司之间分配时间,并让我知道成本是多少,我们可以期待什么输出以及质量评级是什么。比方说,我们需要 300 小时的劳动力,然后根据算法认为的最佳整体选择将这些劳动力分配给 3 家公司。

我正在研究现代投资组合理论,但我不确定它是否适用于此。对不起,如果我听起来有点愚蠢。这对我来说都是全新的,我还在学习。

任何建议、阅读材料或示例将不胜感激。

谢谢!

0 投票
0 回答
10 浏览

system - 解决矛盾:EDF 调度是否最优(无抢占)

我正在尝试解决有关最早截止日期优先调度的矛盾。我的教科书( Buttazzo的 Hard Real-Time Computing Systems)字面意思是两者都说(不是开玩笑):

pg.63:“如果任务在执行期间不能被抢占,EDF 就不再是最优的。

第 65 页:“通过限制非空闲调度算法的情况,Jeffay、Stanat 和 Martel 证明了 EDF 在非抢占式任务模型中仍然是最优的。

“当有活动作业时不允许处理器空闲的调度算法称为非空闲算法。”

什么?

正文的第 64 页显示了一个与此直接矛盾的示例。最佳调度是处理器可以空闲 1 个单位时间(直到第二个作业到达)以便它可以首先执行第二个作业的调度。相比之下,EDF 生成的时间表(第一个作业立即开始,没有任何空闲时间)不是最佳的,因为时间表未能满足其最后期限。

我猜教科书的意思是说 EDF 在非抢占式任务模型中不是最优的,除非处理器被允许闲置并且算法知道未来任务何时到达。否则在那种情况下它永远不可能是最优的吗?

0 投票
0 回答
62 浏览

algorithm - 如何在算法上为包含最少交易数量的扑克游戏创建结算地图?

扑克是一种零和游戏。这意味着离开牌桌的金额等于进入牌桌的金额。我在这里提到扑克是因为我需要解决这个问题,但这个问题适用于任何零和游戏。

假设我玩扑克是为了钱。形式是现金游戏。这意味着任何人都可以在输掉所有钱后再次买入。任何人都可以用任何金额购买任意数量的商品。我根据每个玩家的买入金额分配扑克筹码。在任何时候都可以计算筹码以了解一个人欠/欠多少钱。

有两个任意假设。

1.我们不使用现金买入。我们只是将其写在纸上,并计划在比赛结束后结算(当知道输赢金额时)。

2. 没有人会充当银行 - 保留所有资金并在比赛结束后将其重新分配给获胜者

让我们看看两个示例的手动解决方案。

示例游戏

假设有 4 个玩家:用户 A、用户 B、用户 C、用户 D 和用户 E。

在游戏结束时,余额如下所示。

解决方案 .1

我想到的第一个解决方案是:用户 A 向用户 D 发送 30 美元。

用户 B 向用户 D 发送 2 美元,用户 B 向用户 E 发送 3 美元。

用户 C 向用户 D 发送 10 美元,用户 C 向用户 E 发送 10 美元。

这解决了使用 5 笔交易的结算。

解决方案 .2

用户 B 向用户 A 发送 5 美元。

用户 A 向用户 E 发送 13 美元。

用户 A 向用户 D 发送 22 美元。

用户 C 向用户 D 发送 20 美元。

这解决了使用 4 笔交易的结算(优于解决方案 .1)。

我的问题是:如何在算法上为包含最少交易数量(最佳)的扑克游戏创建结算地图?

请注意,玩家数量的增加以及获胜者与失败者的比例发生了变化,这使得解决方案有很大差异。手动(主观地)找到一个最佳的可能非常困难。

什么是总能引导我获得最佳交易数量的通用方法?

我确信这个问题是普遍的,并且以某种方式命名,但我从未设法找到它。

0 投票
0 回答
14 浏览

optimal - 将函数参数传递给 Optimal Control Application 中的列表

我的意图是将初始猜测作为函数的参数传递,而不是直接在代码主体中定义它。

1)有没有办法做到这一点而不得到:TypeError:无法解压不可迭代的int对象

另外,我的另一个目标是使用这个函数来迭代不同的初始猜测,这也会在定义例如时产生一个浮点工作: initial_guess = [8, 0.1], [9, 0.1], [10, 0.1], [11, 0.1]和做:

2)有没有办法实现initial_guess列表值的各种浮动参数的迭代?

请注意,最优控制函数 ocp 将 initial_guess 作为一个列表,形式为 initial_guess = [f, g],其中 f, g 是浮点数或整数。

0 投票
1 回答
107 浏览

algorithm - rng 效率最高的统一随机整数算法是什么?

这不是#11766794“在一个范围内生成无偏随机整数的最佳算法是什么?”</a>。它的最高投票答案和接受的答案都与浮点外推法有关,这甚至不会产生完全一致的整数。这个问题是在询问如何在给定可用的统一浮点值的情况下快速获得统一随机整数的良好近似值rand();我在给定真正的随机位生成器(确定性或其他方式;问题同样适用于任何一种方式)的情况下,在完全统一的随机整数算法的上下文中提出这个问题。

具体来说,我问的是仅就使用的随机比特的效率而言的理论最优性:给定一个随机比特流,在生成完美统一的过程中消耗最少比特的算法是什么给定范围内的随机整数?

例如,CPython 3.9.0random.randbelow至少有一个微不足道的低效率——当调用任何 2 的幂(包括微不足道的范围)时,它会浪费一个随机位:

虽然这很容易通过将“ not n”替换为“ n <= 1”和“ n.bit_length()”替换为“”来修补(n-1).bit_length(),但一点分析表明它还有更多不足之处:

假设一个在范围内生成一个整数[0, 4097):所有调用的一半getrandbits(13)将超过该值:如果第一个位和第二个位为高,无论如何它将消耗 11 个更多位,并在看起来没有时丢弃它们没必要。所以看起来这个算法显然不是最优的。

今晚我能在一个小时内得到的最好的算法是以下算法:

但是,我不是数学家,仅仅因为我修复了我可以立即看到的低效率问题,并不能让我相信我只是在一个下午立即偶然发现了最有效的统一整数选择算法。

例如,比特是从量子或大气 RNG 服务购买的;或作为多方协议的一部分,其中每个单独的比特生成都需要多次往返;或者在没有任何硬件 RNG 支持的嵌入式设备上……无论如何,我只问一个直接的问题:从真正的随机比特流中生成(完美)均匀随机整数的算法对于随机数而言是最有效的位消耗?(或者,如果不确定,目前最好的候选人是什么?)

(我在这些示例中使用了 Python,因为这是我本赛季主要研究的内容,但问题绝不是特定于任何语言的,除非算法本身必须推广到 2 64以上的数字。)

0 投票
0 回答
9 浏览

optimal - 最优控制 Python 库——单状态约束

我有一个有六个状态和两个输入的系统。使用 Python 最优控制库,我可以使用以下命令为输入和状态设置约束:

我希望我的最后第三个状态正是我指定的状态。

当我尝试对特定状态施加限制时,当其他一切都是 -inf 到 inf 时,如上所示,我收到警告:/opt/anaconda3/lib/python3.8/site-packages/scipy/optimize/_constraints.py:432: OptimizeWarning: Equality and inequality constraints are specified in the same element of the constraint list. For efficient use with this method, equality and inequality constraints should be specified in separate elements of the constraint list.

我希望对我的状态和输入单独施加限制。这怎么可能?

在一个例子中,我已经看到了这个工作:

按照我的解释,上述陈述意味着所有状态在整个轨迹中都应该保持不变。对上述约束的解释的任何见解都是无价的。

0 投票
0 回答
7 浏览

matrix - D&D井字法计算器

我对编程/编码非常陌生,我想创建一个计算器,让我能够以最佳方式将一定数量 (9-11) 的随机标准骰子(数字 1-6)添加到 3x3 矩阵中并让它计算8 种可能的结果与最佳(总最高)结果相加,然后在所述矩阵上显示结果和这些数字的位置,并显示选择及其结果。

示例:使用一组 11 个数字 65554332211,然后将删除 11,并使用 9 个数字将 6 最佳地添加到矩阵的中间,以最大化所有未来计算的总数等等。对于 8 种可能的基于加法的结果,我希望计算器优先考虑从行、列和两个方向对角线输出 6 个最高数字,然后角将具有最高优先级,以此类推,其余边数。我希望我已经解释了我正在尝试创建的内容。如果这样的东西已经存在,我不知道在哪里可以找到它。谢谢你的帮助!

0 投票
0 回答
11 浏览

python - 最优控制库约束

我正在设计一个二维受限的火箭模型。其动态模型有 6 个状态和 2 个输入。

我正在使用最佳控制python库。该库的文档可以在以下链接中找到:Python 最佳控制库。链接文档的第 195 页描述了最优控制问题的约束。请不要这样,Final_xFinal_z表示火箭在 2D 空间中的最终坐标。[Min_T, a_min], [Max_T, a_max]表示火箭系统的推力和推力矢量角的上限和下限(这些是输入)。

我正在定义我的约束,然后以下列方式将它们传递给求解器:

如上所述定义和传递约束时,我收到以下错误消息:

根据错误消息的要求,分别定义约束的正确方法是什么?