天道酬勤,学无止境

R 多整数线性规划中的约束(Constraints in R Multiple Integer Linear Programming)

问题

我正在用 R 编写一些代码来优化我的梦幻足球阵容,但我在一个约束下遇到了一些困难。 我基本上有一份球员名单、他们的位置、预期分数和成本。

名册必须包括:

1 QB 2 RB 2 WR 1 TE 1 FLEX(RB、WR 或 TE) 总成本低于 200 美元

我的问题是我的代码想要选择 FLEX 位置作为它已经选择为 WR、RB 或 TE 的球员。 这是我正在使用的代码,我有一个表格,其中包含玩家、位置、积分和成本的列。 在表中,任何 RB、WR 或 TE 都被复制,位置为 FLEX。 我试图更改将 pos=="FLEX" 设置为 pos=="WR"||pos=="RB"||pos=="TE" 的行,但没有奏效,我唯一的其他想法是运行代码,如果它复制了 FLEX 播放器,我将它从源表中删除。 不过这有点痛苦。

任何想法都非常感谢。

name <- mydata$name
pos <- mydata$pos
pts <- mydata$pts
cost <- mydata$cost

num.players <- length(name)

f <- pts

var.types <- rep("B", num.players)

A <- rbind(as.numeric(pos=="QB")
         , as.numeric(pos=="RB")
         , as.numeric(pos=="WR")
         , as.numeric(pos=="TE")
         , as.numeric(pos=="FLEX")
         ,cost)

dir <- c("=="
        ,"=="
        ,"=="
        ,"=="
        ,"=="
        ,"<=")

b <- c(1
     , 2
     , 2
     , 1
     , 1
     , 200)

library(Rglpk)

sol <- Rglpk_solve_LP(obj = f
                , mat = A
                , dir = dir
                , rhs = b
                , types = var.types
                , max=TRUE)
sol

name[sol$solution == 1]
回答1

你可以重写:

1 QB 2 RB 2 WR 1 TE 1 FLEX (either a RB, WR, or TE) 

作为

num(QB) == 1
2 <= num(RB) <= 3
2 <= num(WR) <= 3
1 <= num(TE) <= 2
num(RB) + num(WR) + num(TE) == 6

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • OR-Tools:1-线性优化,整数优化和约束优化(Linear optimization,Mixed-integer optimization,Constraint optimization)
    OR-Tools 解决的问题类型: Linear optimization Constraint optimization Mixed-integer optimization Bin packingNetwork flowsAssignmentSchedulingRouting 线性优化示例 线性优化(或线性规划)是最古老且使用最广泛的优化领域之一,其中目标函数和约束可以写为线性表达式。 在以下约束下最大化3x + y: 0≤x≤10≤y≤2 x + y≤2 目标函数为3x + y。 目标函数和约束都由线性表达式给出,这使它成为线性问题。 def eg_linear(): # 3x+y,0<=x<=1,0<=y<=2,x+y<=2 # libraries from ortools.linear_solver import pywraplp # Create the linear solver with the GLOP backend. solver = pywraplp.Solver.CreateSolver('simple_lp_program', 'GLOP') # Create the variables x and y. x = solver.NumVar(0, 1, 'x') y = solver.NumVar(0, 2, 'y') print('Number of
  • Matlab离散优化: Mixed-Integer Linear Programming Basics: Problem-Based
    Mixed-Integer Linear Programming Basics: Problem-Based Problem DescriptionFormulate ProblemSolve Problem 全文翻译自Matlab官方教程:Mixed-Integer Linear Programming Basics: Problem-Based,侵删。 这个例子展示了如何解决一个混合整数线性问题。虽然不复杂,但示例显示了使用基于问题的方法来构造问题的典型步骤。有关显示此示例的视频,请参见 Mixed-Integer Linear Programming Basics: Sovler-Based。 Problem Description 你想把不同化学成分的钢混合起来,得到25吨具有特定化学成分的钢。结果应含有5%的碳和5%的钼(按重量计),即25吨*5%=1.25吨碳和1.25吨钼。其目的是尽量降低钢的混合成本。 这个问题摘自Carl Henrik Westerberg,Bengt Bjorklund和Eskil Hultman:“瑞典钢铁厂混合整数规划的应用”,接口1977年2月第7卷,第2期,第39-43页,摘要见https://doi.org/10.1287/inte.7.2.39。 有四种钢锭可供购买,每种钢锭只有一个。钢锭需要整个整个地购买。
  • 非线性整数规划(Non Linear Integer Programming)
    问题 我想知道 R 中是否有处理非线性整数优化的包。 “基本上”,我想解决以下问题: max f(x) st x in (0,10) and x is integer 。 我知道一些分支算法能够处理这个问题的线性版本,但这里我的函数f()可能更复杂。 (我什至不能确定它是f(x)=xQx形式的二次方)。 我想总会有蛮力解决方案来测试所有可能性,只要它们是有界的,但我想知道是否没有更聪明的方法。 回答1 我为您提供了一些选择,但它们都不是灵丹妙药,尽管看起来您的灵丹妙药正在rino项目下进行:http: rino /. 由于您的函数很复杂,您可能需要使用遗传算法(即基于梯度的优化器可能不可靠)。 genoud库中的rgenoud可能会rgenoud (链接文本)。 如果你设置data.type.int=TRUE它应该可以解决问题。 我没有使用过这个库,但在 matlab 中使用 GA 有一些经验,收敛时间对设置很敏感,所以你会很好地阅读手册页几次。 或者,如果您的函数严格凹入(不太可能,因为您说它可能很复杂),您可以使用梯度求解器(例如, optim )进行求解,然后检查最优值附近的邻域(不能超过 2^n 个点)查看)。 抱歉,我帮不上忙了。 回答2 如果它几乎不是非线性的,那么没有比蛮力更好的方法(你永远不会知道最小值是否是局部的,或者某个看起来平坦的片段是否没有任何窄而深的谷)
  • 将 scipy.optimize.minimize 限制为整数值(Restrict scipy.optimize.minimize to integer values)
    问题 我正在使用scipy.optimize.minimize来优化答案只能是整数的现实世界问题。 我当前的代码如下所示: from scipy.optimize import minimize def f(x): return (481.79/(5+x[0]))+(412.04/(4+x[1]))+(365.54/(3+x[2]))+(375.88/(3+x[3]))+(379.75/(3+x[4]))+(632.92/(5+x[5]))+(127.89/(1+x[6]))+(835.71/(6+x[7]))+(200.21/(1+x[8])) def con(x): return sum(x)-7 cons = {'type':'eq', 'fun': con} print scipy.optimize.minimize(f, [1,1,1,1,1,1,1,0,0], constraints=cons, bounds=([0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7],[0,7])) 这产生: x: array([ 2.91950510e-16, 2.44504019e-01, 9.97850733e-01, 1.05398840e+00, 1.07481251e+00, 2.60570253e-01, 1.36470363e+00
  • 在整数线性程序内使用min / max *(Using min/max *within* an Integer Linear Program)
    问题 我正在尝试建立一个线性程序,其中目标函数为决策变量乘以它们各自的系数后的max增加了额外的权重。 考虑到这一点,有没有使用方式min或max线性规划的目标函数中的运营商? 例子: Minimize (c1 * x1) + (c2 * x2) + (c3 * x3) + (c4 * max(c1*x1, c2*x2, c3*x3)) subject to #some arbitrary integer constraints: x1 >= ... x1 + 2*x2 <= ... x3 >= ... x1 + x3 == ... 请注意, (c4 * max(c1*x1, c2*x2, c3*x3))是我关注的“超重”术语。 我们让c4表示“额外权重”系数。 另外,请注意,在此特定示例中, x1 , x2和x3是整数。 我认为以上内容可能不在线性编程提供的范围之内。 但是,也许有一种方法可以破解/重新格式化为有效的线性程序? 如果此问题完全不在线性规划的范围内,也许有人可以推荐一种更适合此类问题的优化范例? (任何让我避免手动枚举和检查所有可能的解决方案的方法都会有所帮助。) 回答1 添加一个带有约束的辅助变量,例如x4: x4 >= c1*x1 x4 >= c2*x2 x4 >= c3*x3 Objective += c4*x4
  • Python 中的约束回归(Constrained regression in Python)
    问题 我有这个简单的回归模型: y = a + b * x + c * z + error 对参数有限制: c = b - 1 SO 上发布了类似的问题(如 Python 中的约束线性回归)。 但是,约束的类型是lb <= parameter =< ub 。 处理这个特定约束线性回归问题的可用选项有哪些? 回答1 这是如何使用 GLM 完成的: import statsmodels import statsmodels.api as sm import numpy as np # Set the link function to identity statsmodels.genmod.families.links.identity() OLS_from_GLM = sm.GLM(y, sm.add_constant(np.column_stack(x, z))) '''Setting the restrictions on parameters in the form of (R, q), where R and q are constraints' matrix and constraints' values, respectively. As for the restriction in the aforementioned regression model, i.e., c
  • 整数线性规划:示例和好的工具?(Integer linear programming: example and good tools?)
    问题 找出使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} 输出: x = {1,1,0} 有什么好的工具可以解决此类问题,以及如何使用它们的示例? 回答1 Mathematica Mathematica具有此内置功能。(注意:Mathematica不是免费软件。) LinearProgramming[c, m, b, Automatic, Integers] 输出: {1, 1, 0} 回答2 GLPK 我提供了使用GLPK的glpsol的答案,但我希望有更好的方法来执行此操作(对于这种简单的线性编程问题的特殊情况,GLPK似乎过于强大/笼统): 为了生成下面给出的.mps文件,您必须将矩阵按行拆分成一个方程式系统,因此问题描述变为: minimize cost = 1 x_1 + 2 x_2 + 3 x_3 s.t. constraints: S1 = 1 x_1 + 0 x_2 + 0 x_3 S2 = 0 x_1 + 1 x_2 + 0 x_3 S3 = 1 x_1 + 0 x_2 + 1 x_3 S1 >= 1 S2 >= 1 S3 >= 1 0 <= x1 <= 1 0 <= x2 <= 1 0 <= x3 <= 1
  • 使用 R lpSolve 在线性规划中添加 1000 个约束(Add 1000 Constraints in linear programing using R lpSolve)
    问题 我正在尝试实现一个大的线性模型,但是我在添加更多变量/约束时遇到了问题。 例如,我想添加约束而不像示例中那样在矩阵 (f.con) 中添加其他零 (0): library(linprog) f.obj <- c(3,24,79,140,230,306,338, 26,78,145,226,309,336,354, 146,250,312,364,417,496,508, 314,382,424,472,503,525,548) f.con <- matrix (c(1,1,1,1,1,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, 1,1,1,1,1,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, 1,1,1,1,1,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, 1,1,1,1,1,1,1) ,nrow=4, byrow=TRUE) f.rhs <- c(10,22,8,30) f.dir <- c("<=", "<=","<=","<=") lp ("max", f.obj, f.con, f.dir, f.rhs) n<-lp
  • 为什么不能为整数编程操纵SciPy的约束优化?(Why can't I rig SciPy's constrained optimization for integer programming?)
    问题 我已经读到整数编程非常棘手,或者用SciPy无法实现,并且我可能需要使用zibopt之类的东西才能在Python中进行。 但是我真的认为我可以通过为SciPy优化的向量中的每个元素创建一个“是二进制”约束来做到这一点。 为此,我利用了http://docs.python-guide.org/en/latest/writing/gotchas/#late-binding-closures中的闭合技巧,并为每个元素创建了一个约束函数,如下所示: def get_binary_constraints(vector, indices_to_make_binary=None): indices_to_make_binary = indices_to_make_binary or range(len(vector)) for i in indices_to_make_binary: def ith_element_is_binary(vector, index=i): return vector[index] == 0 or vector[index] == 1 yield ith_element_is_binary test_vector = scipy.array([0.5, 1, 3]) constraints = list(get_binary_constraints(test
  • Python混合整数线性编程(Python Mixed Integer Linear Programming)
    问题 是否有适用于Python的混合整数线性编程(MILP)求解器? GLPK python可以解决MILP问题吗? 我读到它可以解决混合整数问题。 我对线性编程问题很陌生。 因此,如果混合整数编程与混合整数线性编程(MILP)不同,我会很困惑,无法真正区分。 回答1 Pulp是一个python建模接口,可以连接到CBC(开源),CPLEX(商业),Gurobi(商业),XPRESS-MP(商业)和YALMIP(开源)之类的求解器。 您还可以使用Pyomo为优化问题建模,然后调用外部求解器,即CPLEX,Gurobi GLPK和AMPL求解器库。 您也可以从GLPK / Python,PyGLPK或PyMathProg调用GLPK。 另一种建模语言是CMPL,它具有用于MIP求解器的python接口(仅适用于线性程序)。 以上所有求解器都可以求解混合整数线性程序,而其中某些求解器(肯定是CPLEX,GUROBI和XRESS-MP)可以求解混合整数二次程序和二次约束二次程序(以及圆锥程序),但这可能超出了此范围。问题)。 MIP指的是混合整数程序,但通常仅用于指线性程序。 为了使术语更精确,应始终参考MILP或MINLP(混合整数非线性编程)。 请注意,CPLEX和GUROBI也具有自己的python API,但它们(以及)XPRESS-MP是商业产品,但可免费用于学术研究。
  • Python中的二进制线性规划求解器(binary linear programming solver in Python)
    问题 我有一个 Python 脚本,我需要在其中解决线性规划问题。 问题是解决方案必须是二元的。 换句话说,我需要一个相当于 MATLAB 的 bintprog 函数。 NumPy 和 SciPy 似乎没有这样的程序。 有没有人对我如何做这三件事之一有建议: 查找包含此类函数的 Python 库。 约束问题,使其可以通过更一般的线性规划求解器解决。 将 Python 与 MATLAB 连接起来,以便直接使用bintprog 。 回答1 严格地说,如果问题是二进制规划问题,那么它就不是线性规划。 你可以试试 CVXOPT。 它有一个整数规划功能(见this)。 要使您的问题成为二进制程序,您需要添加约束 0 <= x <= 1。 编辑:您实际上可以将变量声明为二进制,因此您无需添加约束 0 <= x <= 1。 cvxopt.glpk.ilp = ilp(...) Solves a mixed integer linear program using GLPK. (status, x) = ilp(c, G, h, A, b, I, B) PURPOSE Solves the mixed integer linear programming problem minimize c'*x subject to G*x <= h A*x = b x[I] are all integer x
  • 带有线性约束的Scipy.optimize.minimize SLSQP失败(Scipy.optimize.minimize SLSQP with linear constraints fails)
    问题 考虑以下(凸)优化问题: minimize 0.5 * y.T * y s.t. A*x - b == y 其中优化(向量)变量是x和y而A , b分别是适当尺寸的矩阵和向量。 下面的代码使用Scipy的SLSQP方法轻松找到解决方案: import numpy as np from scipy.optimize import minimize # problem dimensions: n = 10 # arbitrary integer set by user m = 2 * n # generate parameters A, b: np.random.seed(123) # for reproducibility of results A = np.random.randn(m,n) b = np.random.randn(m) # objective function: def obj(z): vy = z[n:] return 0.5 * vy.dot(vy) # constraint function: def cons(z): vx = z[:n] vy = z[n:] return A.dot(vx) - b - vy # constraints input for SLSQP: cons = ({'type': 'eq','fun': cons}) #
  • 连续优化、离散优化、组合优化、整数优化和凸优化
    optimization分类 4 Classification of optimization problem (IP: integer programming, MINLP: mixed integer non-linear programming, MILP: mixed integer linear programming, LP: linear programming, QP: quadratic programming, NLP: non-linear programming) 出自 其中,离散优化又称组合优化. means searching for an optimal solution in a finite or countably infinite set of potential solutions. optimization按目标函数分类 source optimization按照决策变量分类 source optimization按照解决方法分类 具体算法介绍 易混的概念 离散优化 是站在解的角度来看。变量是离散的。 整数规划 离散优化的下面,离散的变量同时还都是整数。同时,它是基于线性规划中,变量必须是整数的约束下提出来的。跟线性规划密切相关。JK studies linear programs in which some or all
  • 寻找“简单”的整数线性规划源代码/伪代码(Looking for “simple” integer linear programming source code / pseudo code)
    问题 我今天可能需要实现整数线性规划,我想知道是否有任何伪代码或相对无痛(注释良好)的源代码来解释如何实现它? 对伪代码有强烈的偏好。 请注意,我不是在寻找一个认真完整的项目,其中包含所有“微调”以获得最佳性能。 我正在寻找最基本的求解器,它可以演示整数线性规划的工作原理,而不是一一尝试所有选项。 谢谢。 回答1 这个问题是个大问题,所以让我一步一步地尝试: 当您说Integer Linear Program 时,我假设您的意思是具有线性约束和目标函数的 IP。 1. 从单纯形算法开始。 (尽管这对 IP 不起作用,除非在线性程序具有“完整性”属性的“幸运”情况下。)但Simplex始终是一个很好的起点,尤其是。 因为您对第一原理方法感兴趣 令人惊讶的是,虽然已解决的示例很多,但 PseudoCode 并不容易找到。 下面是 Simplex 算法中步骤的一个示例。 (不是伪代码) 在第 3.1.4 节计算过程总结中有一些接近伪代码的东西。 本文档还对可以实现的 Simplex 算法进行了总结,尤其是。 如果您按照前面部分中的示例进行操作。 请注意,Simplex 是一种相对容易理解(尤其是逐步)但众所周知难以实现的算法。 关于为什么会这样的一个非常好的讨论可以在这里找到。 2. 整数规划 - “最简单”的情况。 许多人倾向于从“背包”问题开始。 您可以在此处找到伪代码和 Java
  • R 中的约束优化设置约束(constrained optimization in R setting up constraints)
    问题 我一直在尝试使用 constrOptim()(我的第一次)解决 R 中的约束优化问题,但我正在努力为我的问题设置约束。 问题很简单,我可以设置好函数,但对传递约束有点不知所措。 例如,我定义的问题是(我将从固定在 1000 的 N 开始说,所以我只想解决 X 最终我想同时选择 N 和 X 以获得最大利润): 所以我可以将函数设置为: fun <- function(x, N, a, c, s) { ## a profit function x1 <- x[1] x2 <- x[2] x3 <- x[3] a1 <- a[1] a2 <- a[2] a3 <- a[3] c1 <- c[1] c2 <- c[2] c3 <- c[3] s1 <- s[1] s2 <- s[2] s3 <- s[3] ((N*x1*a1*s1)-(N*x1*c1))+((N*x2*a2*s2)-(N*x2*c2))+((N*x3*a3*s3)-(N*x3*c3)) } 我需要实施的约束是: x1>=0.03 x1<=0.7 x2>=0.03 x2<=0.7 x3>=0.03 x2<=0.7 x1+x2+x3=1 这里的 X 代表我需要优化分配 N 的桶,所以 x1=N 的百分比放置在桶 1 等中,每个桶至少有 3% 但不超过 70%。 任何帮助非常感谢... 例如
  • 线性规划 - 等于表达式符号的变量(Linear Programming - variable that equals the sign of an expression)
    问题 我正在尝试编写一个线性程序,并且需要一个等于 xc 符号的变量 z,其中 x 是另一个变量,而 c 是一个常数。 我考虑过z = (xc)/|xc| . 不幸的是,如果 x=c,那么这会产生除以 0。 我不能使用 z=xc,因为我不想用 x 和 c 之间的差值来加权它。 有谁知道表达 z 的好方法,以便它是 xc 的符号? 感谢您的任何帮助和建议! 回答1 您不能完全使用线性程序对z = sign(xc)建模(因为 LP 中的约束仅限于变量的线性组合)。 但是,如果您愿意将线性程序转换为混合整数程序,则可以对sign进行建模,您可以使用以下两个约束对其进行建模: L*b <= x - c <= U*(1-b) z = 1 - 2*b 其中b是二元变量, L和U是数量xc下限和上限。 如果b = 0 ,我们有0 <= x - c <= U和z = 1 。 如果b = 1 ,我们有L <= x - c <= 0和z = 1 - 2*1 = -1 。 您可以使用 Gurobi 之类的求解器来求解混合整数程序。 回答2 对于 k » 1,这是符号函数的平滑近似: 还 当ε → 0 这两个近似值没有除以 0 的问题,但现在您必须调整参数。 在某些语言(例如 C++/C)中,您可以简单地编写如下内容: double sgn(double x) { return (x > 0.0) -
  • (十五:2020.08.28)CVPR 2013 追踪之论文纲要(译)
    讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自己对这200篇的论文做一个大致从名称上的筛选,希望能找到些能解决当前问题的答案。论文链接建议直接Google论文名,比去各种论文或顶会网站找不知道快捷多少。下面皆为机器翻译以方便我第一次筛选,我会慢慢修正,但现在请结合。有兴趣的可以问我要处理这些论文并自动翻译的脚本。因为脚本还没完善而且谷歌把我的ip给封了暂时无法翻译,所以中英文不对称,之后有时间做修改。Respect! 论文目录 论文概要1.All About VLAD融合离焦深度和立体有编码孔径2.Lost! Leveraging the Crowd for Probabilistic Visual Self-Localization量词与同时主动学习通过相对反馈属性3.Looking Beyond the Image: Unsupervised Learning for Object Saliency and Detection灰色的5个牙色的快速和可靠的相机姿态估计4.Bringing Semantics into Focus Using Visual Abstraction在自然光照和非朗伯反射分析双线性外观子空间构建模型图片辐照5.Augmenting CRFs with Boltzmann Machine
  • R中的约束线性回归系数(Constrained linear regression coefficients in R [duplicate])
    问题 这个问题已经在这里有了答案: R:多个子样本回归上的约束系数和误差方差[关闭] (1个答案) 4年前关闭。 我正在估计R中的几个普通的最小二乘线性回归。我想在回归中约束估计的系数,以使它们相同。 例如,我有以下内容: z1 ~ x + y z2 ~ x + y 我希望在第一次回归中对y的估计系数等于在第二次回归中对x的估计系数。 有一个简单的方法可以做到这一点吗? 提前致谢。 更详细的编辑 我正在尝试估计一个线性需求函数系统,其中相应的福利函数是二次函数。 福利函数的形式为: W = 0.5*ax*(Qx^2) + 0.5*ay*(Qy^2) + 0.5*bxy*Qx*Qy + 0.5*byx*Qy*Qx + cx*Qx + cy*Qy 因此,需求函数为: dW/dQx = Px = 2*0.5*ax*Qx + 0 + 0.5*bxy*Qy + 0.5*byx*Qy + 0 + cx dW/dQx = Px = ax*Qx + 0.5*(bxy + byx)*Qy + cx 和 dW/dQy = Py = ay*Qy + 0.5*(byx + bxy)*Qx + cy 我想对系统进行约束,使byx = bxy(福利函数中的乘积系数)。 如果此条件成立,则两个需求函数将变为: Px = ax*Qx + bxy*Qy + cy Py = ay*Qy + bxy*Qy + cy
  • 整数线性编程 Java:提供多种开源和商业工具。 使用哪一种?(Integer Linear Programming Java: Multiple Open Source and Commercial tools are available. Which one to use?)
    问题 我需要为我的应用程序使用整数线性规划 API/工具。 虽然我的应用程序是在 Java 中,但我不介意从 Java 调用 EXE(工具)提供使用文件(MPS 等)的输入。 我的搜索分析如下: 有多种开源和商业工具可用于解决 ILP 以下我发现并认为对我的需求有用。 1. Gnu LP Kit(GLPK):我认为这是最古老的,可能是最稳定和最高效的 2. IP_Solve:对它有很好的评价。 3. JavaILP:发现了这个,但没有太多关于它的评论 4. Apache Common-Math:支持 LP 但不支持 ILP,所以排除了。 5. 硬币或 请您建议哪一个在稳定性、效率、接受度等方面最好 问候 回答1 我已经使用他们的 java 包装器从 java 成功调用了另一个名为 LPSolve 的免费 LP/MIP 求解器。 对于体面的问题,它是一个很好的求解器。 我正在解决超过 5000 个整数变量的问题。 从您的列表中,您似乎想将自己限制在免费工具上; 否则,有可用的商业选项。 回答2 感谢您的回答。 我终于使用 LP Solve。 这样做的好处是(也可能存在于其他 LP 求解器工具中)是超时选项。 因此,我可以在提到的超时秒内获得最佳结果。
  • “多重不等式约束” - 使用 R nloptr 包进行最小化(“multiple inequality constraints” - Minimization with R nloptr package)
    问题 有没有办法在 R 的nloptr包中定义多个“不等式约束”? 不等式函数需要有五个不等式约束; 矩阵的 colsum (从整数向量堆叠) <=1 。 (6 列中的 5 列) 这是我实现它的方式: constraint.func <- function(my.data.var) { column = 2 constr <- c("numeric",ncol(my.data.matrix.inj) ) for(index in 1:ncol(my.data.matrix.inj)) #1 to 5 { constr[index] <- sum(my.data.var[column], my.data.var[column+6], my.data.var[column+12], my.data.var[column+18])-1 column = column+1 } constr.1 <- c(constr[1],constr[2],constr[3],constr[4],constr[5]) return(constr.1) } my.data.var是堆叠为矩阵的数值向量。 my.data.var <- c(10,0.25,0.25,0.25,0.25,0.25, 10,0.25,0.25,0.25,0.25,0.25, 10,0.25,0.25,0.25,0.25,0.25