cplex - 使用 Cplex 计算唯一索引的数量
问题描述
对于我的合并问题,我想计算我的决策变量dvar int+ y[terminal, consolidated_truck, time, order] in 0..1; //y is 1 if order n is consolidated at terminal i in consolidated truck c at time t
为合并卡车采用的唯一值的数量。如果我只是简单地计算forall(i in terminal, t in time, n in order) sum(c in consolidated_trucks) y[i,c,t,n] == trucks_used;
我会得到每个值,而我只想获得 c 的所有唯一值。Cplex 中是否有一个函数可以让我计算它或正确地制定它的方法?
非常感谢您的帮助!亲切的问候
解决方案
int nbKids=300;
// a tuple is like a struct in C, a class in C++ or a record in Pascal
tuple bus
{
key int nbSeats;
float cost;
}
// This is a tuple set
{bus} buses={<40,500>,
<30,400>,
<35,450>,
<20,300>};
// asserts help make sure data is fine
assert forall(b in buses) b.nbSeats>0;
assert forall(b in buses) b.cost>0;
// decision variable array
dvar int+ nbBus[buses];
// objective
minimize
sum(b in buses) b.cost*nbBus[b];
// constraints
subject to
{
sum(b in buses) b.nbSeats*nbBus[b]>=nbKids;
// Number of sizes where we have 1 or 2 buses should be at least 3
sum(b in buses) (1<=nbBus[b]<=2) >=3;
}
甚至
int nbKids=300;
// a tuple is like a struct in C, a class in C++ or a record in Pascal
tuple bus
{
key int nbSeats;
float cost;
}
// This is a tuple set
{bus} buses={<40,500>,
<30,400>,
<35,450>,
<20,300>};
// asserts help make sure data is fine
assert forall(b in buses) b.nbSeats>0;
assert forall(b in buses) b.cost>0;
range quantity = 0..10;
// decision variable array
dvar int+ nbBus[buses] in quantity;
// objective
minimize
sum(b in buses) b.cost*nbBus[b];
// constraints
subject to
{
sum(b in buses) b.nbSeats*nbBus[b]>=nbKids;
// Quantities should have less than 1 value
sum(q in quantity)
(1<=sum(b in buses) (q==nbBus[b])) <=1;
}
从计数值
推荐阅读
- reactjs - 使用 onChange 在功能组件中设置状态时 NumberPicker 循环
- python - 从划分为组的现有列在 Pandas 中生成新列
- c - 如何使用 C 中的指针仅释放数组的一部分?
- sql - SQL CASE when with embedded CASE when 语句
- c - 试图用 bison 和 flex 制作计算器,但它只打印出 0
- node.js - NodeJS 变量范围、函数和回调
- javascript - TypeError:this.props.navigation.getParam 在使用 ReactNative 传递参数时不是函数
- jquery - 函数结束后循环打印检索多个数据
- azure - 删除 azure devops 计费的自动化
- php - 如何更新多对多关系中的时间戳