标签: linear-programming

整数线性规划:示例和好工具?

找到最小化 c 的向量 x 。x 受约束 m 。x >= b,x 整数。

这是一个示例输入集:

c : {1,2,3}
m : {{1,0,0},
     {0,1,0},
     {1,0,1}}
b : {1,1,1}
Run Code Online (Sandbox Code Playgroud)

有输出:

x = {1,1,0}
Run Code Online (Sandbox Code Playgroud)

什么是解决此类问题的好工具,以及如何使用它们的示例?

mathematical-optimization linear-programming

4
推荐指数
1
解决办法
3953
查看次数

生成ai = 1的线性不定方程的所有解的有效算法

我试图为给定的H生成以下方程的所有解.

H = 4时:

1) ALL solutions for x_1 + x_2 + x_3 + x_4 =4
2) ALL solutions for x_1 + x_2 + x_3 = 4
3) ALL solutions for x_1 + x_2 = 4
4) ALL solutions for x_1 =4
Run Code Online (Sandbox Code Playgroud)

对于我的问题,总有4个方程要解决(独立于其他方程).总共有2 ^(H-1)个解决方案.对于前一个,这里是解决方案:

1) 1 1 1 1
2) 1 1 2 and 1 2 1 and 2 1 1
3) 1 3 and 3 1 and 2 2
4) 4
Run Code Online (Sandbox Code Playgroud)

这是一个解决问题的R算法.

library(gtools)
H<-4
solutions<-NULL

for(i in seq(H))
{ …
Run Code Online (Sandbox Code Playgroud)

algorithm math equation linear-programming diophantine

4
推荐指数
1
解决办法
3051
查看次数

线性规划约束:优化变量的乘法

给定一个具有两个优化变量 ( x_in(t), x_out(t))的优化问题。对于任何时间步,当x_in非零时,x_out必须为零(反之亦然)。写成约束:

x_in(t)*x_out(t)=0
Run Code Online (Sandbox Code Playgroud)

Matlab 的linprog函数中如何包含这样的约束?

optimization matlab constraints linear-programming

4
推荐指数
1
解决办法
2594
查看次数

Lps中的lpsolve包

我正在使用lpsolve包进行线性编程,但在其教程中已经阅读过只能解决非负变量的问题.

这是我的代码:

library(lpSolve) #linear programming solver
c = c(30, 18, 20, 23, 24, 26) 
a = scan(text="66 89 82 14 35 72")
b = 50
con.qual.s1=scan(text="64 98 17 55 27 80")
con.qual.s2=scan(text="16 59 88 89 60 47")
qual.cons=c(53,82)

n=6 #activities
m=3 #resources
f.rhs = c(b,qual.cons)
f.con <- matrix (rbind(a,con.qual.s1,con.qual.s2,diag.p),nrow=m+nrow(diag.p))
f.obj.d <- c(50,53,82)
diag.d=diag(x = 1, m, m) #non-negativity
f.con.d <- matrix (rbind(t(f.con[1:m,]),diag.d),nrow=n+nrow(diag.d))
f.dir.d <- c(rep("<=",7),rep(">=",2))
f.rhs.d <- c(c,rep(0,m))
of.d=lp ("max", f.obj.d, f.con.d, f.dir.d, f.rhs.d,compute.sens=TRUE)
Run Code Online (Sandbox Code Playgroud)

请注意,忽略约束编号7为非正数的事实.

编辑:我已经为lpSolveAPI包添加了新代码.为了检查是否有效,我为原始问题和双重问题准备了不同的代码. …

r linear-programming lpsolve

4
推荐指数
1
解决办法
5295
查看次数

Cplex Python如何避免打印输出

设置目标函数和约束后,我使用

prob.solve()
print prob.solution.get_objective_value()
Run Code Online (Sandbox Code Playgroud)

实际上,我只想打印目标值,然而,它显示了很多cplex的信息,

Tried aggregator 1 time.
LP Presolve eliminated 5 rows and 1 columns.
All rows and columns eliminated.
Presolve time = -0.00 sec. (0.00 ticks)
0.5
Run Code Online (Sandbox Code Playgroud)

我只想显示最后一行0.5,如何避免Cplex打印其他信息?先感谢您.

python logging mathematical-optimization linear-programming cplex

4
推荐指数
1
解决办法
2997
查看次数

线性规划 - 等于表达式符号的变量

我正在尝试编写一个线性程序,并且需要一个等于 xc 符号的变量 z,其中 x 是另一个变量,而 c 是一个常数。

我考虑过z = (x-c)/|x-c|。不幸的是,如果 x=c,那么这会产生除以 0。

我不能使用 z=xc,因为我不想用 x 和 c 之间的差值来加权它。

有谁知道表达 z 的好方法,以便它是 xc 的符号?

感谢您的任何帮助和建议!

linear-programming divide-by-zero

4
推荐指数
1
解决办法
2248
查看次数

使用Cplex在Python中构建线性程序

我正在尝试用大量变量和约束来解决线性程序.我需要动态生成约束矩阵并在python中构建lp.我可以在Cplex for Python上找到的唯一一个教程是来自IBM的官方教程,这个教程还不太详细.所以我的问题是:首先,一般问题是,是否有更好的教程或有充分记录的内容?第二,一个更具体的问题,在官方教程中,有一个例子显示填充lp的不同方法,问题陈述是:

Maximize
x1  + 2x2 + 3x3
subject to
–x1 +  x2 + x3 <= 20
x1 – 3x2 + x3 <= 30
with these bounds
0 <= x1 <= 40
0 <= x2 <= infinity
0 <= x3 <= infinity
Run Code Online (Sandbox Code Playgroud)

并按行填充如下:

def populatebyrow(prob):
    prob.objective.set_sense(prob.objective.sense.maximize)

# since lower bounds are all 0.0 (the default), lb is omitted here
prob.variables.add(obj = my_obj, ub = my_ub, names = my_colnames)

# can query variables like the following:

# lbs is a …
Run Code Online (Sandbox Code Playgroud)

python modeling linear-programming cplex

4
推荐指数
1
解决办法
4597
查看次数

在 PuLP Python 中指定 GLPK 求解器的容差

我在 Python 2.7.8、Windows 32 位上运行 PuLP 编程库。我使用 GLPK 作为混合整数线性规划问题的求解器。求解器收敛到大约。1% 的最优解很快,但是计算精确最优解的时间很长。有没有办法使用 PuLP 为 GLPK 求解器指定百分比容差?我搜索了https://pythonhosted.org/PuLP/solvers.html但它没有为 GLPK 求解器提供任何答案。

linear-programming python-2.7 glpk integer-programming

4
推荐指数
1
解决办法
2728
查看次数

线性编程(Simplex LP)PuLP?

仅在Python中,并使用来自Pandas数据帧的数据,我如何使用PuLP以与Excel相同的方式解决线性编程问题?应在新预算栏目下为每个渠道分配多少预算,以便最大化估算成功的总数?我真的在寻找一个使用数据框中数据的具体示例,而不是真正的高级建议.

问题数据设置

    Channel  30-day Cost  Trials  Success  Cost Min  Cost Max  New Budget
0  Channel1      1765.21    9865      812    882.61   2647.82           0
1  Channel2      2700.00   15000      900   1350.00   4050.00           0
2  Channel3      2160.00   12000      333   1080.00   3240.00           0
Run Code Online (Sandbox Code Playgroud)

这是一个最大化问题.

目标函数为:

objective_function = sum((df['New Budget']/(df['30-day Cost']/df['Trials']))*(df['Success']/df['Trials']))
Run Code Online (Sandbox Code Playgroud)

限制是:

  1. 总和df['New Budget']必须相等5000
  2. New Budget给定信道可以去不Cost Min
  3. New Budget给定信道可以走不Cost Max

有关如何使用PuLP或任何其他求解器方法转换此pandas数据帧求解器线性问题的任何想法?最终结果将是您在下图中看到的结果.

期望的结果

python linear-programming dataframe pandas pulp

4
推荐指数
1
解决办法
3470
查看次数

Pyomo:Python代码的访问解决方案

我有一个我想解决的线性整数程序.我安装了解算器glpk(感谢这个答案)和pyomo.我写了这样的代码:

from pyomo.environ import *
from pyomo.opt import SolverFactory

a = 370
b = 420
c = 2

model             = ConcreteModel()
model.x           = Var([1,2], domain=NonNegativeIntegers)
model.Objective   = Objective(expr = a * model.x[1] + b * model.x[2], sense=minimize)
model.Constraint1 = Constraint(expr = model.x[1] + model.x[2] == c)
# ... more constraints

opt = SolverFactory('glpk')

results = opt.solve(model)
Run Code Online (Sandbox Code Playgroud)

这产生了文件解决方案results.yaml.

我有很多问题,我想用同样的模式来解决,但不同的a,bc值.我想指定不同的值a,bc,解决了模型,得到的解决方案model.x[1]model.x[2],并有一上市a, …

python optimization mathematical-optimization linear-programming pyomo

4
推荐指数
2
解决办法
3641
查看次数