标签: linear-programming

大数据集的贪婪集覆盖的任何良好实现?

这个问题来自我在这里发布的相关问题.@mhum建议我的问题属于覆盖问题领域.我尝试将我的问题编码为最小集合覆盖问题,目前我有一个这种形式的数据集:

Set        Cost
(1,2)        1
(1)          1
(1,2,3)      2
(1)          2
(3,4)        2
(4)          3
(1,2)        3
(3,4)        4
(1,2,3,4)    4
Run Code Online (Sandbox Code Playgroud)

目标是找到一个覆盖所有数字的好套装,并试图将总成本降至最低.我的数据集很大,至少有30000套(大小从5-40个元素不等),就像这样.是否有任何好的贪婪实现来解决这个问题,还是我自己实现这个?我不是LP的专家,但任何可以解决这个问题的LP解算器(来自numpy/scipy)都是可以接受的.

python algorithm numpy linear-programming scipy

6
推荐指数
1
解决办法
6398
查看次数

什么好的工具来解决linux上的整数程序?

有什么好的工具可以解决Linux上的整数程序吗?

我有一个小问题,我想计算以节省时间:D.它是一种子集和问题.我有一个大约20个整数值的列表,我想计算满足一定最小值的最小和的子集.你可以用整数程序来表达这个......就像这样

\sum_{i=1}^{n} w*x -> min
Run Code Online (Sandbox Code Playgroud)

\sum_{i=1}^{n} w*x >= c with x \in \{0,1\}
Run Code Online (Sandbox Code Playgroud)

或者还有其他好办法吗?

linux linear-programming solver

6
推荐指数
1
解决办法
1万
查看次数

顶点着色/分配,以尽量减少"颜色交叉"的数量

我不确定这是否真的是一个"着色"问题,因为它是一个赋值/线性编程问题.我对其中任何一方都没有专业知识,所以请原谅任何可能跟随的任何新闻.但是我觉得这个问题几乎肯定已经解决/研究过了,在查看了http://en.wikipedia.org/wiki/Category:Graph_algorithms上的许多图算法之后我才发现任何事情.我希望能在正确的方向上得到一些指示.

"问题陈述"有效归结为:

  1. 图中有两种类型的顶点:路由器和核心.

  2. 核心仅连接到路由器.每个核心仅连接到SINGLE路由器.每个都有一个用户输入/定义的"颜色".(在我的具体问题中,颜色仅限于4/5种颜色之一).它们的颜色不能改变,它是一个输入参数.(核心是下图中的方块)

  3. 路由器连接到核心以及其他路由器.他们没有分配"颜色".分配颜色是程序/算法目标的一部分.(路由器是下图中的圆形顶点.)

  4. 该程序的目的是为图中的每个路由器分配颜色,使得不同颜色的顶点之间的"交叉点"/边缘的数量最小化.

(另一种观点:实质上,您会得到一个图形,其中某些顶点是彩色的,而其他顶点则不是.目标是将那些不是这样的颜色着色,使得不同颜色的顶点之间的边缘数量最小化.)

我能够将这个(我很确定)很好地表达为Integer-Linear-Program并使用LP-Solve设置解决方案/方法.我也有自己的启发式.我想知道解决这个问题的"正确"/已知/其他方法?!

非常感谢!

演示的简单例子.

algorithm graph mathematical-optimization linear-programming graph-algorithm

6
推荐指数
1
解决办法
872
查看次数

AMPL找不到"迷你"

我遇到了AMPL的问题.我使用的是32位版本的Linux操作系统.我正在尝试解决一个简单的线性programmin问题,但我无法理解有什么问题......这里也是模型,数据文件和会话脚本.命令"解决"的答案是:找不到"minos".但解算器目前在我的文件夹中!更改解算器没有帮助.有什么建议?

问题模型:

param n;
param t;
param p{i in 1..n};
param r{i in 1..n};
param m{i in 1..n};
#Declaration of variables
var x {i in 1..n} >=0;
#Objective Function
maximize revenues: sum {i in 1..n} p[i]*x[i] ;
#Constraints
subject to Aval_Time: sum{i in 1..n} x[i]/r[i]<=t;
subject to Max_Flavor {i in 1..n}: x[i]<=m[i];
Run Code Online (Sandbox Code Playgroud)

问题数据:

param n := 4;# No of Flavors
param t := 40; # Total labor hour in a week
param p := 1 1 2 1.5 3 1 …
Run Code Online (Sandbox Code Playgroud)

linux optimization linear-programming ampl

6
推荐指数
2
解决办法
5462
查看次数

优雅的方法来计算矩阵的每列中的元素数量是否大于其他列中的元素数量?

我目前有一个有效的解决方案.我想知道是否有更优雅的方法?

首先是设置:

set.seed(315)
mat <- matrix(sample(1:5, 20, replace = TRUE), nrow = 4, ncol = 5)
> mat
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    4    1    3    3
[2,]    5    3    5    1    4
[3,]    4    1    1    4    3
[4,]    3    3    1    1    1
Run Code Online (Sandbox Code Playgroud)

从这个矩阵,我想创建一个5x5输出矩阵,其中i,j中的条目是 j中的元素数量大于输入矩阵的 i.

编辑:最初我描述了一个解决方案,其中输出解决方案的条目i,j i中的元素数量大于 j,但在输出中提供了相反的关系.我更改了描述以匹配输出,并且提供的答案中的任何差异都可能是由此产生的.

该解决方案提供了所需的输出:

mat.pm <- apply(mat, MARGIN = 2,
                function(x) {
                  return(apply(mat, MARGIN = 2, function(y) …
Run Code Online (Sandbox Code Playgroud)

r matrix linear-programming

6
推荐指数
1
解决办法
1056
查看次数

代表旅行推销员作为线性表达

我在网上看到,人们可以将旅行商问题写成线性表达式,并使用CPLEX for java等软件进行计算.

我有1000个城镇,需要找一小段距离.我计划将这1000个城镇划分为约100个城镇的集群,并在这些单独的集群上执行一些线性规划算法.

我的问题是,我究竟如何将其表示为线性表达式.

所以我有100个城镇,我相信每个人都知道TSP是如何工作的.

我完全不知道如何编写满足TSP的线性约束,目标和变量.

有人可以向我解释这是如何完成的,或者给我一个清楚解释它的链接,因为我一直在研究很多,似乎找不到任何东西.

编辑:

我找到了一些额外的信息:

我们用数字0到n标记城市并定义矩阵:

在此输入图像描述

这会为5个城镇产生以下矩阵吗?

在此输入图像描述

限制是:

i)每个城市都来自其他城市

ii)从每个城市出发前往另一个城市

iii)该路线不会分成不同的岛屿.

同样,这对我来说是完全合理的,但我仍然无法将这些约束写为线性表达式.显然它是一个简单的矩阵.

谢谢你的帮助 !

algorithm linear-algebra linear-programming traveling-salesman cplex

6
推荐指数
1
解决办法
1050
查看次数

scipy.optimize.linprog无法找到一个可行的起点,尽管明确存在可行的答案

向量k似乎满足所有约束.这里有什么我想念的吗?谢谢.

import numpy as np
from scipy.optimize import linprog
A_ub=[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud)

python linear-programming scipy

6
推荐指数
1
解决办法
3183
查看次数

多车场车辆调度

我一直在玩单一车辆段调度问题(SDVSP)的算法和ILP,现在想把我的知识扩展到多车辆段调度问题(MDVSP),因为我想在我的项目中使用这些知识.

至于这个问题,我发现并实现了几种MDSVP算法.但是,我非常好奇的一个问题是如何确定所需的仓库数量(以及位置).遗憾的是,我还没有找到任何真正没有假设/要求设置软件仓库的资源.因此,我的问题是:我如何能够接近MDVSP,我可以在其中确定仓库的数量和位置?

(编辑)澄清:假设我们通常在SDVSP或MDVSP 中给出一组行程T 1,T 2 ... T n.在返回仓库之前,可以连续多次行驶.离开和返回仓库通常只发生在一天的开始和结束.但作为正常问题的延伸,我们现在可以确定我们的仓库的数量和位置,而不是设置仓库.

目标是找到一种解决方案,以最小的成本驱动所有行程.成本包括死角量(汽车在行程之间以及从停车场到行驶的距离),每辆车的固定成本K,以及每个仓库的固定成本C.

我希望这会在某种程度上解决这个问题.

algorithm scheduling linear-programming

6
推荐指数
1
解决办法
324
查看次数

R中带条件约束的线性规划

我有一个线性编程问题,我试图从一些二进制资源中选择优化值,基本上是一个背包问题.我遇到的问题是不同的资源具有共同的特征,我想确保我的最终解决方案具有0或2个具有特定特征的资源.有没有办法实现这个目标?尽管进行了广泛的搜索,我仍然无法想到一个或找到一个.在我的数据中,决策变量是资源,约束是这些资源的特征.请考虑以下代码:

library(lpSolve)
const_mat_so<-matrix(c(
  c(0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,1,0,0,1,0,1)
     ,c(0,  0,  0,  0,  0,  0,  0,  1,  0,  1,  0,1,1,0,0,1,1)
     ,c(0,  0,  0,  0,  0,  1,  1,  0,  0,  0,  1,0,1,0,1,0,0)
     ,c(1,  1,  0,  1,  1,  0,  0,  0,  1,  0,  0,0,0,0,0,0,0)
     ,c(8800,   8500,   7600,   8600,   8400,   7500, 7000, 8500,   8800,   7700,   6700,5500,1200,6700,9500,8700,6500)
     ,c(0,  0,  0,  0,  0,  0,  1,  0,  0,  0,  0,0,0,0,0,0,0)
     ,c(0,  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,0,0,0,0,0,0) …
Run Code Online (Sandbox Code Playgroud)

r knapsack-problem linear-programming

6
推荐指数
1
解决办法
1946
查看次数

差异LP/MIP和CP

约束编程(CP)和线性规划(LP)或混合整数规划(MIP)之间有什么区别?我知道什么是LP和MIP,但不明白与CP的区别 - 或者CP与MIP和LP相同?我对此很困惑......

linear-programming constraint-programming mixed-integer-programming

6
推荐指数
2
解决办法
1846
查看次数