- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 cplex 求解以下线性程序:
def generate_linear_program(self):
problem = cplex.Cplex()
problem.objective.set_sense(problem.objective.sense.minimize)
for index, track in enumerate(self.tracks):
tokens = track['track'].split('_')
problem.variables.add(names = ['c' + str(tokens[1])], ub = [1.0], types = ['C'])
problem.variables.add(names = ['e' + str(index) for index, param in enumerate(self.params)],
types = ['C'] * len(self.params),
ub = [param['c'] - param['u'] * param['r'] for param in self.params],
lb = [param['c'] - param['u'] * param['r'] - param['c'] * sum(param['tracks'][track] for track in param['tracks']) for param in self.params])
problem.variables.add(names = ['l' + str(index) for index, param in enumerate(self.params)],
#obj = [1.0] * len(self.params),
types = ['C'] * len(self.params))
problem.objective.set_quadratic([0.0] * len(self.tracks) + [1.0] * len(self.params) + [0.0] * len(self.params))
# add some linear constraints here
problem.solve()
当我打电话solve()
时CPLEX 提示错误消息 CPLEX Error 1017: Not available for mixed-integer problems
。如果我删除上面的二次目标,并通过取消上面注释的代码行( obj = [1.0] * len(self.params),
)的注释来添加线性目标,则它可以正常工作。
堆栈跟踪:
File "/share/src/python/kmer/programming.py", line 373, in solve
problem.solve()
File "/home/user/local/cplex/lib/python/cplex/__init__.py", line 998, in solve
_proc.qpopt(self._env._e, self._lp)
File "/home/user/local/cplex/lib/python/cplex/_internal/_procedural.py", line 499, in qpopt
check_status(env, status)
File "/home/user/local/cplex/lib/python/cplex/_internal/_procedural.py", line 171, in __call__
raise CplexSolverError(error_string, env, status)
cplex.exceptions.errors.CplexSolverError: CPLEX Error 1017: Not available for mixed-integer problems.
为了更好地了解这里发生的情况,当目标是二次的时,我试图最小化一些误差项的平方和。当目标变为线性时,我将最小化这些项的绝对值之和。名称以 e
开头的变量是错误项,l
s 将通过这些约束变成它们的绝对值:
for index, params in enumerate(self.params):
problem.linear_constraints.add(
lin_expr = [cplex.SparsePair(
ind = [len(self.tracks) + len(self.params) + index, len(self.tracks) + index],
val = [1.0, 1.0],
)],
rhs = [0],
senses = ['G']
)
problem.linear_constraints.add(
lin_expr = [cplex.SparsePair(
ind = [len(self.tracks) + len(self.params) + index, len(self.tracks) + index],
val = [1.0, -1.0],
)],
rhs = [0],
senses = ['G']
)
l<index>
在存在二次目标的情况下,变量实际上是无用的。
还有其他线性约束,我不能在这里包含,但它们绝对不是问题的原因,因为以下两个原因:
我在这里缺少什么?
最佳答案
很容易错过 Cplex.variables.add 文档中的以下注释:
If types is specified, the problem type will be a MIP, even if all variables are specified to be continuous.
如果删除可选的 types
来自您对 Cplex.variables.add
的调用的争论,问题应该消失。例如,代替:
problem.variables.add(names = ['c' + str(tokens[1])], ub = [1.0], types = ['C'])
用途:
problem.variables.add(names = ['c' + str(tokens[1])], ub = [1.0])
当你有一个线性目标时它起作用的原因是它被传递到 CPXmipopt
,作为方便,失败后 CPXlpopt
与 CPXERR_NOT_FOR_MIP
(错误 1017)。然而,当我们调用CPXqpopt
时,这个逻辑不适用。
关于python - CPLEX 二次 objective-c PLEX 错误 1017 : Not available for mixed-integer problems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51737277/
我正在使用下面的代码但收到警告, bool versionSupports = (@available(iOS 10, *)); @available does not guard availabil
我需要检查 Xamarin.iOS 中的 API 可用性 - 在 Objective-C 或 Swift 中我可以使用这些调用: if (@available(iOS 13, *)) 或 if #av
我遇到了一个我似乎不明白的奇怪问题。我正在制作一个从文件中读取数据的程序。但是当我读取数据时,我立即收到 EOFException。 所以我用 .available() 检查文件是否为空。我得到了一个
Swift 2.0 允许使用 @available 或 #available 进行可用性检查,但是使用 @available 和 有什么区别#可用? 最佳答案 您可以使用 if #available
我刚刚开始学习 angularjs 我尝试了这段代码:在文件 angularmy.js var myname = angular.module("myModule",[]); myname.contr
我有一个 USB 麦克风和扬声器适配器连接到 raspberry pi 3。我已经在 alsamixer 上设置了所有内容。我也设置了pcm.!default sysdefault:0在文件中 .as
import requests import time import csv import ast import sys import mysql.connector config = { 'user
我想让页脚的宽度与浏览器无关。 对于 Mozilla,我想使用 -moz-available 的值,当用户使用 Opera 时,那么 CSS 应该从 -webkit-fill-available 中获
如果您的代码需要仅在 macOS 10.12 或更高版本中可用的功能,但您希望您的代码也部署到更早的系统版本,您可以使用 @available在 Objective-C 中: if (@availab
我正在使用 Element Query允许在任何元素上使用 @media queries 的元素。这是它的处理方式: #foo:media(min-available-width:350px and
我正在尝试安装 oracle 19c,但在安装过程中遇到了与内存相关的问题“[INS-35179] 当前可用内存小于创建数据库所需的可用内存 (6,537MB)”。我仔细检查了所有先决条件,例如超过
我正在编写代码以使用此页面中的文档跟踪现场请求:http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-spot-instances-bid-
我仔细阅读了 Kubernetes 文档 here关于扩展 imagefs.available 的默认 15%和其他参数,但没有说明如何设置,我已经安装了具有以下配置的 RKE(Rancher Kub
我想进入PAPI。我在Debian GNU/Linux上有5.3.2.0版。 papi_avail告诉我没有可用的硬件事件: $ papi_avail Available events and har
我目前正在构建一个混合云解决方案,需要将消息写入队列以供稍后处理。队列具有高可用性(99.999+% 的正常运行时间)是绝对必要的。 我的选择是将消息读/写到本地 ZeroMQ 高可用性对或 Azur
在 Mac OS X Leopard 中使用 Eclipse Helios 并调试调用 fsf gdb 7.1 的 C++ 代码,调试停止在 main 的第一行。然后在第一步之后我得到 No sour
无论如何,是否可以将 UIWebView 与针对 tvos 的应用程序一起使用?这个苹果文档,UIWebView Class Reference ,会建议否则不是吗?或者我只是解释错了? UIWebV
我想删除以下数据框中的“不可用”,但是当我使用以下代码将 Number 更改为数字时,“不可用”变为 4: c1 data 是一个 factor 列。 当您将一个因子直接转换为numeric 时,生成
PushKit 在 iOS 11 中提供了一种新方法,旨在取代 iOS 10 中的方法。 使用 iOS 11 作为基础 SDK 构建时无法使用 iOS 10 方法(我当前使用的是 Xcode 9.2B
不确定使用@rename 指令的所有方法。 我正在尝试重命名一个方法 @available(*, deprecated, renamed: "setValueInTable") public func
我是一名优秀的程序员,十分优秀!