问题标签 [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.
r - 非线性整数规划
我想知道R中是否有处理非线性整数优化的包。
“基本上”,我想解决以下问题:
max f(x) s.t x in (0,10) and x is integer
.
我知道一些分支算法能够处理这个问题的线性版本,但这里我的函数f()
可能更复杂。(我什至不能确定它是形式的二次方f(x)=xQx
)。
我想总会有蛮力解决方案来测试所有可能性,只要它们是有界的,但我想知道是否没有更聪明的方法。
c# - 操作方法:找到一个好的数学算法来随时间分布测量点?
我目前正在实施一个软件,可以随着时间的推移测量某些值。用户可以选择在 28 天的时间内测量该值 100 次。(只是举个例子)
线性分布不是问题,但我目前正在尝试在时间跨度上获得点的对数分布。
直接的实现是迭代这些点,因此我需要一个指数函数。(我已经走到这一步了!)
我当前的算法(C#)如下:
这给了我 28 天和 100 分的相当“好”的结果。
前 11 个点都在 0 秒,
第 12 点在 1 秒,
第 20 点在 50 秒,
第 50 点在 390 分钟,
第 95 点在 28605 分钟
第 99 点在 37697 分钟(这使得 43 小时到最后一点)
我的问题是:有没有人知道如何让前 20-30 分彼此分开更远,也许让最后 20-30 分更接近一点?
我知道我最终将不得不添加一些算法,将第一点分开至少一分钟左右,因为我无法将这种行为纳入严格的数学算法中。
像这样的东西:
但是,我希望总体上获得更好的分布。
任何来自你数学裂缝的很酷的想法都将不胜感激!
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
- 不比其他方法快太多,但尚未优化。但是,它有效。
algorithm - 这种聚类搜索算法以前在哪里出现过?
见: http: //kks.cabal.fi/GoodEnoughSearch
我浏览了很多论文和网站。我还没有发现这个算法以前在哪里出现过,或者有人做过类似的东西,但更好或更通用。该算法非常简单,因此任何面临我遇到的同类问题的人都应该很容易找到。
c# - 如何在 C# 中计算这种类型的方程 (x^1+...x^n)?
我有一个这样写的数学问题:
C# 中是否有任何构造可以帮助我解决这些方程?
我知道我可以编写一个 for 循环或使用递归来完成此操作,但我记得读过 c# 中的一些构造,它将预编译这样的语句以供以后执行。
有什么有趣的方法可以解决这些方程吗?
wolfram-mathematica - 为什么使用牛顿法的 FindMaximum 抱怨它找不到足够的函数减少?
首先,这似乎(来自 ContourPlot)是一个相当简单的最大化问题,为什么使用牛顿法的 FindMaximum 有问题?
其次,我怎样才能摆脱警告?
第三,如果我无法摆脱这些警告,如何判断警告是否有意义,即最大化失败?
例如,在下面的代码中,使用 Newton 方法的 FindMaximum 会发出警告,而 PrincipalAxis 方法不会
请注意,我认为可能在其中一个组件的方向上的梯度为 0 是问题所在,但如果我扰乱了初始点,我仍然会收到相同的警告,这是一个示例
sum - 有什么有效的方法来计算谐波级数到第 n 项的总和?1 + 1/2 + 1/3 + --- + 1/n =?
这个系列有没有公式“1 + 1/2 + 1/3 + --- + 1/n = ?” 我认为它是 k = 1 到 n 的 sum(1/k) 形式的谐波数。
multithreading - 优化计算中使用的#线程的算法
我正在执行一项操作,我们称之为CalculateSomeData。CalculateSomeData 在连续的“代”中运行,编号为 1..x。整个运行中的代数由CalculateSomeData的输入参数固定,并且是先验已知的。单代需要 30 分钟到 2 小时才能完成。其中一些可变性是由于输入参数造成的,并且无法控制。但是,这种可变性的一部分是由于硬件容量、来自其他进程的 CPU 负载、网络带宽负载等因素造成的。每代可以控制的一个参数是 CalculateSomeData 使用的线程数。现在这是固定的并且可能不是最佳的。一世' 我想跟踪每一代所花费的时间,然后有一些算法来调整线程的数量,以便每一代后续的计算时间都在前一代的计算时间上有所改进(最小化时间)。我应该使用什么方法?遗传算法的适用性如何?直觉告诉我,这个范围会相当小——在双四核处理器机器上可能有 1 到 16 个线程。
非常感谢任何指针、伪代码等。
c# - 找到满足不等式约束的离散对 {x,y}
我有一些关于 的不等式{x,y}
,它们满足以下等式:
请注意,x
andy
必须是整数。
图形上可以表示如下,蓝色区域是满足上述不等式的区域:
现在的问题是,Matlab 中是否有任何函数可以找到每个可接受的对{x,y}
?如果有一种算法可以做这种事情,我也会很高兴听到它。
当然,我们总是可以使用的一种方法是蛮力方法,我们测试每种可能的组合{x,y}
以查看是否满足不等式。但这是最后的手段,因为它很耗时。我正在寻找一个聪明的算法来做到这一点,或者在最好的情况下,一个我可以立即使用的现有库。
这些x^2+y^2>=100
and x^2+y^2<=200
只是示例;实际上f
,并且g
可以是任何次数的任何多项式函数。
编辑:也欢迎 C# 代码。