问题标签 [operations-research]
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 - 为分配/分配问题设置线性程序
关于我已经解决并使用 excel 的线性程序,我遇到了一些麻烦,但现在我想在 r/python 中执行它,因为我已经达到了 excel 和求解器的限制。因此,我正在就这个特定主题寻求帮助。
我还通过更改 lp.assign 函数来尝试使用 lPsovle 包,但我无法提出解决方案。
问题如下:
假设我是商品的交付者。
我有不同的仓库,服务于不同的地区。这些领域必须满足他们的要求。另一方面,我的仓库对他们可以处理和交付的容量有限制。一个站点可以服务多个区域,但一个区域只能由一个站点服务。
我有仓库和区域之间连接的距离/成本矩阵以及对这些区域的需求。
此解决方案的目标应该是尽可能少地为这些区域提供服务。
假设成本/距离矩阵如下所示:
所以这创建了我的矩阵,第一行/标题中的客户/区域和第一列/行名称中的仓库。
现在地区/客户的需求是:
容量限制,depos 能够服务的数量是:
所以现在我希望这个问题由 lp 来解决,以生成分配,根据这些限制,哪个区域应该由哪个仓库提供服务。
结果应如下所示:
至于限制,这意味着每列必须有一个。
我用 lpSolve 的 lpsolve 和 lp.assign 函数尝试了它,但我不知道如何实现我所拥有的那种确切的限制,我已经尝试改变 lp.assign 函数但没有成功。如果有帮助,我还可以制定 lp 的方程。
谢谢大家的帮助,我现在真的很困惑:D
BR
python - 专注于从单个商店获得的最大订单量
目前,如果客户订购 2 件产品,假设 1 件产品存在于距离客户位置 20 英里的商店 1 中,并且两种产品都存在于距离客户位置 30 英里的商店 2 中,则商店 1 的可用产品为被提货,然后从商店 2 提货第二个产品。
这是因为我正在过滤并将最近的商店分配给特定订单中的每个订单项目。
相反,我想做的是,即使商店 2 距离客户位置 30 英里(距离商店 1 更远),它也包含两个订单项目。因此,这两件商品都应从商店 2 取货并交付给相应的客户。
根据您的观点,专注于从单个商店提取单个/多个订单的最大/所有订单项目的正确方法是什么?
entity - hits@k 是如何计算的,在知识库中的链接预测上下文中意味着什么
我研究有关知识网络中链接预测的论文。作者通常报告“Hits@k”。我想知道如何计算 hits@k 以及它对模型和结果意味着什么?
mathematical-optimization - 在混合整数线性规划 (MILP) 中对具有多个条件的 IF-THEN 语句进行建模
我需要一些帮助将以下逻辑建模为车辆路线问题的混合整数线性规划约束。
涉及的变量如下:
- X ij、SDV lmj和 MDV hkbj是二元决策变量。当某个链接 (ij) 或路由/路径 (lmj 或 hkbj) 通过时,它们等于 1。
- SOC Li和SOC j R都是系统变量,在 0 到 100 之间连续,表示车辆的充电状态,决定了其在特定节点的行驶范围。
指数
所有索引 (i,j,l,m,h,k,b) 都与网络中的节点有关,并且在特定约束中使用时指代不同的节点。索引 i 和 j 将是我问题的重点。
逻辑
IF (X ij = 1 AND (SDV lmj = MDV hkbj = 0) THEN (SOC L i = SOC j R )。
当这个逻辑不成立时,我希望 SOC Li和SOC j R的值不具有约束力。
关于其他当前约束的附加说明,可能会更清楚(不需要帮助)。
- SDV lmj + MDV hkbj <= 1 对于所有 j
- 如果所有节点 j 的X ij = 1, SDV lmj或 MDV hkbj只能 = 1 。但是即使 SDV lmj和 MDV hkbj都 = 0 , X ij也可以 = 1。(我已经把它记下来了。只是为我试图实现的逻辑提供更多上下文)
我目前所拥有的...
(1) SOC L i <= SOC j R + BigM(1-X ij )
(2) SOC L i => SOC j R - BigM(1-X ij )
(3) SDV lmj +MDV hkbj <=1
(4) SDV lmj +MDV hkbj <= X ij
然而,当前公式的问题在于,当 (SDV lmj + MDV hkbj ) = 1 时,基于约束 (4),X ij必须等于 1,这将约束 (1) 和 (2) 中的 BigM 乘以零,有效地将值 SOC L i绑定到等于我试图避免 的 SOC j R 。
任何帮助将非常感激。
algorithm - 如何对图进行分区,以便每个分区中节点的权重在两个数字之间?
运筹学中有一个具体问题转化成图:
我想将图划分为n个子图,以便子图中的节点是连接的,并且节点的权重之和在两个数字之间,a和b。
由于我是运筹学背景的,我最开始想提出一个 MIP 模型来解决这个问题,但是很快就出现了很多关于如何对约束进行建模的问题。我了解通常的切边算法并使用它们来解决问题。
我将描述我到现在为止的思考过程,希望您对这个问题有任何想法:
我生成了一个生成树,然后我选择了一些n边,所以分区的数量就可以了,从现在开始我需要从每个分区中添加或删除节点以达到可行的响应。在这个阶段,我觉得应该有一个合乎逻辑的过程。我试图在纸上描述一个程序,但无法正确描述。
我还想知道在给定一个特殊图的情况下,将图划分为权重在a和b之间的n个子图的问题是否可行。
algorithm - 查找不包含负循环的强连通子图
是否有解决以下决策问题的算法:
给定一个由其转移矩阵定义的强连通加权有向图G
,是否存在一个G
没有负环的强连通跨越子图?
的强连通跨越子图是与共享相同顶点G
的强连通子图。您可以查看本文以了解强连通跨越子图的定义。在本文中,他们提出了最小强连通子图问题的近似值。G
G
解决这个问题的一种简单方法是使用 Ford-Bellman 或 Floyd-Warshall 算法找到图的负循环,从该循环中删除一条边,并在图仍然强连接时重复。但是这种幼稚的方法时间复杂度很差,因为我们可能会运行 Ford-bellman 算法并多次检查强连通性——而且我无法证明该算法是否在所有情况下都是正确的。
我希望在这里找到专家,他们可以告诉我这个决策问题是否可以在多项式时间内解决,以及什么算法可以解决。提前谢谢了。
java - 在 CPLEX Java API 中对目标函数进行建模
我正在尝试使用 java 在 Cplex 中对目标函数sum(i in Sites,j in Sites, k in Routings)(c[i][j] * x[i][j][k]*TruckKmCost)进行建模。
这是我的尝试,但 addTerm 方法只接受 (double, IloNumVar),我无法将 c[i][j] 转换为 IloNumVar,因为我需要它作为 int,所以我可以将我的 int 值添加到它。
必须有一个非常简单的解决方案,也许有人可以帮助我,我现在有点难过。
非常感谢!
linear-programming - 如何将离散时间的资源调度问题化为问题?
我是线性规划的新手,并试图围绕我要解决的问题开发 ILP 模型。
我的问题类似于机器资源调度问题。我有一组二进制变量来表示具有离散时间网格的机器的配对组合。作业 A 需要 1 小时,作业 B 需要 1 小时 15 分钟,因此时间网格应该以 15 分钟为间隔。因此,作业 A 将使用 4 个时间单位,而作业 B 将使用 5 个时间单位。
我很难弄清楚如何表达一个约束,这样当一个作业被分配给一台机器时,它占据的单位在时间变量中是连续的。有没有一个如何建模这个约束的例子?如果有帮助,我正在使用纸浆。
谢谢!
algorithm - 有向图中的近似最长循环
在有向图中找到最长的循环(循环我的意思是没有节点重复的循环)是一个 NP 难题,否则我们可以判断该图是否是哈密顿量。我的问题是:这个问题是否有任何 alpha 逼近多项式算法?
python - 如何告诉 CP-SAT 设置具有某些偏好的决策变量?
我对布尔决策变量有疑问。
每个客户都有一个分数:
每个客户都可以标记为good
或bad
:
每个客户要钱:
目标是客户资金的最大总和。
约束是标记为的接受客户数量bad
应低于 3.8%
我的问题是如何告诉求解器选择bad
要接受的客户,按分数对其进行排序,直到满足 3.8% 的约束?换句话说,我想抓住最好的客户。