- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图在 Python 中使用 cvxpy 强制变量为整数(整数约束),但结果仍然是 float :
from cvxpy import *
Fi = Int()
Or = Int()
constr = [Fi <= 3000,
Or <= 3000,
Or >= 1000,
1.25*Or - Fi >= 0,
Fi >= 0,
Or >= 0]
obj= Maximize(50000*Fi + 25000*Or)
prob = Problem(obj, constr)
prob.solve()
print ("Status: ", prob.status)
print ("Fi: ", Fi.value)
print ("Or: ", Or.value)
print ("Obj: ", obj.value)
结果:
Status: optimal
Fi: 2999.9999999
Or: 2999.99999989
Obj: 224999999.992
我可以做什么来强制它?
我也尝试过:
Fi = Variable()
Or = Variable()
constr = [Fi <= 3000,
Or <= 3000,
Or >= 1000,
1.25*Or - Fi >= 0,
Fi >= 0,
Or >= 0,
Fi == Int(),
Or == Int()]
Fi 和 Or 是变量。不仅仅是数字。
最佳答案
我也遇到了同样的问题(还有更多变量)!我认为 cvxpy 将解决方案存储为 numpy.matrix 变量以节省空间,这将每个解决方案转换为 float 。我只是将输出设置为 int
阈值。这应该适合你:
Fi_val = int(Fi.value)+(1 if (Fi.value - int(Fi.value)) >0.9 else 0)
Or_val = int(Or.value)+(1 if (Or.value - int(Or.value)) >0.9 else 0)
有比 x-int(x)
更好的方法来获取整数 x
的小数部分(例如 Math.modf(x)
和 numpy.modf(x)
),但这不需要导入包。
请注意,您可以将阈值设置为 0.9999999999,而不仅仅是 0.9。 cvxpy 的输出似乎是一个 int
,几乎达到了 numpy 矩阵 float 的完整精度。
(如果有人可以使这个想法更精确,请这样做)。
关于python - 强制变量为整数 CVXPY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43194615/
我有一个目标函数,它取决于外积的总和。如果我可以使用 Numpy 函数,我会这样写: A = np.ones(m, n) U = Variable(m, n) objective = np.trace
目的:我试图在 python 中使用 cvxpy 来最大化 dual_func,但是我得到下面的 SolverError,我相信它可能是 Variable 具有不同的维度,但似乎无法弄清楚这个问题。我
可能有某个地方漂浮的答案,但我找不到。 我想最小化具有变量 X >= 0 和一阶导数矩阵 D,因此 X 在列方向上是平滑的并且具有相对大的数据。 过去我使用过各种方法来解决这个问题(例如使用 scip
背景:我是 PyPortfolioOpt 的开发者,一个 python 投资组合优化库,我试图允许用户向最大夏普比率问题添加约束。 目前,用户可以将他们的约束作为 lambda 函数传递,例如使所有权
我正在使用以下代码: import sys, numpy as np import cvxpy as cvx if __name__ == '__main__': sims = np.rand
我正在尝试编写一个搜索时钟频率和除数的程序来生成目标频率。然而,一个限制是除数必须是偶数(由于硬件限制),我找不到一种方法来对此进行建模。 我没有得到模运算符支持 "TypeError: unsupp
我正在尝试在 CVXPY 中实现此 LP: 但我正在努力寻找一种有效的方法来实现这里的第一个约束。我发现有效的唯一方法是将每个总和作为其自己的约束添加,但随着问题的规模变大,其规模会迅速扩大。有没有更
我正在使用 CVXPY(1.0 版)。我不明白是什么导致了 ZERO 表达式和 NONNEGATIVE 表达式之间的差异,如以下代码所示: >>> import cvxpy as cv >>> a =
我试图在 Python 中使用 cvxpy 强制变量为整数(整数约束),但结果仍然是 float : from cvxpy import * Fi = Int() Or = Int() constr
我在 CVXPY modelling language 中定义了一个大问题.我想解决一系列这样的问题 - 仍然是相同的格式但具有不同的参数(常量)。 我发现在调用 problem.solve() 之后
我正在尝试在目标函数的 CVXPY 中进行逐元素乘法。这是否允许作为凸问题的一部分? X 是一个 n x 1 变量。V 是一个 n x n 常数。 我想执行与 np.multiply(X, V*X)
这个问题在这里已经有了答案: How to convert quadratic to linear program? (1 个回答) 关闭 7 年前。 我需要一个可以将两个非常数相乘的 LP。这是我
这是一个边界 super 用户问题。我一直在使用 pip install 从 Windows 10 上的 powershell 将软件包添加到我的 3.6.2 安装中。我正在努力安装 CVXPY。具体
我正在尝试使用 CVXPY 解决 Python 中的投资组合优化问题,但收到错误 sum_entries 未定义。我正在使用 Anaconda 2.7 和 Jupyter 笔记本。我已经使用 cond
我正在尝试使用 cvxpy 进行优化。 w=cvxpy.Variable((10,1)) cvxpy.kron(w,w) 这不起作用说第一个参数应该是常量, 然后我尝试使用 numpy numpy.k
我正在尝试使用 CVXPY 包(使用 ECOS 求解器)解决 Python 中的优化问题。该问题涉及最小化受多个约束的线性变量。问题本身是拟凸的,所以我实现了二分算法来找到最优解。 问题在于,当二分越
在解决 cvxpy 中的优化问题时,是否有一种很好的方法可以通过将优化变量替换为实际值来检查约束是否有效? 我有一个复杂的优化问题(100 多个约束),但我知道最优解应该是什么。但是,cvxpy 失败
假设我的约束条件是矩阵变量的第一列和第三列的乘积大于 1。我如何在 CVXPY 中实现?示例: w = Variable(4,3) 在 Matlab 中,我的约束是: w(:,1)'*w(:,3)>1
使用 CVXPY 时,我经常遇到“SolverError”。他们的doc只是说这是由数值问题引起的,但没有提供有关如何避免这些问题的更多信息。 下面的代码片段是一个例子,问题很简单,但是 'CVXOP
如何在 cvxpy 中反转变量矩阵? 我有一个问题变量矩阵,定义如下: import cvxpy as cp A = cp.Variable(2,2) 我想求解一个目标函数涉及该矩阵的逆的程序。我几乎
我是一名优秀的程序员,十分优秀!