问题标签 [mathematical-optimization]

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 投票
4 回答
6639 浏览

r - 非线性整数规划

我想知道R中是否有处理非线性整数优化的包。

“基本上”,我想解决以下问题:

max f(x) s.t x in (0,10) and x is integer.

我知道一些分支算法能够处理这个问题的线性版本,但这里我的函数f()可能更复杂。(我什至不能确定它是形式的二次方f(x)=xQx)。

我想总会有蛮力解决方案来测试所有可能性,只要它们是有界的,但我想知道是否没有更聪明的方法。

0 投票
2 回答
164 浏览

language-agnostic - 这种整数编码是如何工作的?

这个代码高尔夫问题中,有一个python 答案,它将英语中从 1 到 99 的所有整数的长度编码为一个大数字:

要获得 的长度n,您只需计算3 + (the_big_number / (10**n)) % 10。这是如何运作的?

0 投票
3 回答
961 浏览

c# - 操作方法:找到一个好的数学算法来随时间分布测量点?

我目前正在实施一个软件,可以随着时间的推移测量某些值。用户可以选择在 28 天的时间内测量该值 100 次。(只是举个例子)

线性分布不是问题,但我目前正在尝试在时间跨度上获得点的对数分布。

直接的实现是迭代这些点,因此我需要一个指数函数。(我已经走到这一步了!)

我当前的算法(C#)如下:

这给了我 28 天和 100 分的相当“好”的结果。
前 11 个点都在 0 秒,
第 12 点在 1 秒,
第 20 点在 50 秒,
第 50 点在 390 分钟,
第 95 点在 28605 分钟
第 99 点在 37697 分钟(这使得 43 小时到最后一点)

我的问题是:有没有人知道如何让前 20-30 分彼此分开更远,也许让最后 20-30 分更接近一点?

我知道我最终将不得不添加一些算法,将第一点分开至少一分钟左右,因为我无法将这种行为纳入严格的数学算法中。

像这样的东西:

但是,我希望总体上获得更好的分布。

任何来自你数学裂缝的很酷的想法都将不胜感激!

0 投票
3 回答
2940 浏览

java - 需要帮助优化 Project Euler 问题的解决方案 #12

我再次从 Project Euler 挑战中获得乐趣,我注意到我的 12 号解决方案是我~593.275 ms每次运行速度最慢的解决方案之一。这是我在~1254.593 ms每次运行时获得第 10 号的解决方案的第二位。我所有其他的答案都比3 ms在大多数情况下运行的时间都少1 ms

我对问题 12的 Java 解决方案:

主要的():

数除数():

.

环顾解决方案论坛,有人发现这些公式(n = (p^a)(q^b)(r^c)... & d(n) = (a+1)(b+1)( c+1)...) 为他们工作,但我个人不认为它会更快;也许手动更快,但不是在程序中。

.

基本的思考过程如下:

我们要计算 48 中的除数个数。通过查看下面的因子树,我们可以得出48 = (2^4)(3^1)[n = (p^a)(q^b)(r^c)...] 的结论。

知道了这一点,我们构造公式d(48) = (4+1)(1+1)[d(n) = (a+1)(b+1)(c+1)...] 来确定 48 有 10 个因子。

.

如何优化我的代码?这些公式是最好的解决方案吗?我觉得找到所有主要因素,然后实施公式将比我已经拥有的程序花费更长的时间。

非常感谢,

贾斯蒂安

编辑:

在任何人开始发布链接之前,我已经在 SO 中查看了类似的问题,但没有任何运气 - 我只是想不出他们的方法的实现会比我已有的方法运行得更快。

编辑2:

我在 Eratosthenes 筛上的第二次尝试(针对第 10 题):

运行速度~985.399 ms- 不比其他方法快太多,但尚未优化。但是,它有效。

0 投票
1 回答
205 浏览

algorithm - 这种聚类搜索算法以前在哪里出现过?

见: http: //kks.cabal.fi/GoodEnoughSearch

我浏览了很多论文和网站。我还没有发现这个算法以前在哪里出现过,或者有人做过类似的东西,但更好或更通用。该算法非常简单,因此任何面临我遇到的同类问题的人都应该很容易找到。

0 投票
6 回答
3269 浏览

c# - 如何在 C# 中计算这种类型的方程 (x^1+...x^n)?

我有一个这样写的数学问题:

C# 中是否有任何构造可以帮助我解决这些方程?

我知道我可以编写一个 for 循环或使用递归来完成此操作,但我记得读过 c# 中的一些构造,它将预编译这样的语句以供以后执行。

有什么有趣的方法可以解决这些方程吗?

0 投票
1 回答
1756 浏览

wolfram-mathematica - 为什么使用牛顿法的 FindMaximum 抱怨它找不到足够的函数减少?

首先,这似乎(来自 ContourPlot)是一个相当简单的最大化问题,为什么使用牛顿法的 FindMaximum 有问题?

其次,我怎样才能摆脱警告?

第三,如果我无法摆脱这些警告,如何判断警告是否有意义,即最大化失败?

例如,在下面的代码中,使用 Newton 方法的 FindMaximum 会发出警告,而 PrincipalAxis 方法不会

请注意,我认为可能在其中一个组件的方向上的梯度为 0 是问题所在,但如果我扰乱了初始点,我仍然会收到相同的警告,这是一个示例

0 投票
4 回答
78640 浏览

sum - 有什么有效的方法来计算谐波级数到第 n 项的总和?1 + 1/2 + 1/3 + --- + 1/n =?

这个系列有没有公式“1 + 1/2 + 1/3 + --- + 1/n = ?” 我认为它是 k = 1 到 n 的 sum(1/k) 形式的谐波数。

0 投票
3 回答
1086 浏览

multithreading - 优化计算中使用的#线程的算法

我正在执行一项操作,我们称之为CalculateSomeData。CalculateSomeData 在连续的“代”中运行,编号为 1..x。整个运行中的代数由CalculateSomeData的输入参数固定,并且是先验已知的。单代需要 30 分钟到 2 小时才能完成。其中一些可变性是由于输入参数造成的,并且无法控制。但是,这种可变性的一部分是由于硬件容量、来自其他进程的 CPU 负载、网络带宽负载等因素造成的。每代可以控制的一个参数是 CalculateSomeData 使用的线程数。现在这是固定的并且可能不是最佳的。一世' 我想跟踪每一代所花费的时间,然后有一些算法来调整线程的数量,以便每一代后续的计算时间都在前一代的计算时间上有所改进(最小化时间)。我应该使用什么方法?遗传算法的适用性如何?直觉告诉我,这个范围会相当小——在双四核处理器机器上可能有 1 到 16 个线程。

非常感谢任何指针、伪代码等。

0 投票
1 回答
805 浏览

c# - 找到满足不等式约束的离散对 {x,y}

我有一些关于 的不等式{x,y},它们满足以下等式:

请注意,xandy必须是整数。

图形上可以表示如下,蓝色区域是满足上述不等式的区域:

替代文字

现在的问题是,Matlab 中是否有任何函数可以找到每个可接受的对{x,y}?如果有一种算法可以做这种事情,我也会很高兴听到它。

当然,我们总是可以使用的一种方法是蛮力方法,我们测试每种可能的组合{x,y}以查看是否满足不等式。但这是最后的手段,因为它很耗时。我正在寻找一个聪明的算法来做到这一点,或者在最好的情况下,一个我可以立即使用的现有库。

这些x^2+y^2>=100 and x^2+y^2<=200只是示例;实际上f,并且g可以是任何次数的任何多项式函数。

编辑:也欢迎 C# 代码。