如何将线性表达式与常数相乘?我编写了代码但总是返回import AccountManager from 'react-native-account-manager';
AccountManager.getAccountsByType('accountName').then((accounts) => {
// console.log('available accounts', accounts);
let [firstAccount] = accounts;
AccountManager.getUserData(firstAccount, 'storedKey').then((storedData) => {
// console.log('stored data for storeKey', storedData);
AccountManager.setUserData(account, 'storedKey', JSON.stringify({foo: "bar"})).then(() => {
// console.log('data successfully stored');
})
});
})
。
需要帮助将常数乘以线性表达式。
0.0
答案 0 :(得分:1)
我们首先来看一些代码行-
Vars["y_" + str(t)] = model.addVar(vtype=GRB.BINARY,name="y_" + str(t))
model.addVar
方法添加了一个名为y_1的新变量,您将该变量存储在字典Vars
中。
lhs = Vars["y_" + str(t)]
这将创建一个新的(python)变量lhs
,并将其指向您在(y_0)之前创建的gurobi变量。请注意,由于您尚未调用model.update()
,因此此时y_1不能在任何表达式中使用。
lhs = LinExpr()
我假设您想创建线性表达式1*y_1 + 0
,但此行不做。
LinExpr()
创建一个新的 empty 线性表达式,等效于0*y_1 + 0
。那是因为您没有向LinExpr对象的构造函数(构造函数here的文档)提供任何参数,所以gurobi不知道您想要的哪个表达式,并且默认为零。
相反,您可以调用LinExp(lhs)
,这将创建您想要的表达式。然后,您可以通过键入lhs = 2 * lhs
将其乘以2,甚至可以直接使用LinExp([2], [Vars["y_" + str(t)]])
创建结束表达式-这里的第一个参数是系数列表,第二个参数是gurobi变量列表。
但是,gurobi具有用于创建表达式的非常方便的语法(使用operator overloading),因此通常您不应该自己显式调用LinExpr的构造函数,而应直接在数学表达式中使用gurobi变量。
这是一个简单的工作代码-
from gurobipy import Model
model = Model()
var = model.addVar(name="x")
model.update()
print 2 * var
哪些印刷品
<gurobi.LinExpr: 2.0 x>