You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CPLEX三维参数建模求助:房间容量参数与时段索引映射问题

CPLEX建模:参数计算与时段映射问题解决

1. 计算参数c_im(房间容量/学生组人数)

c_im是由已知输入参数衍生的静态值,不需要使用execute块(execute主要用于求解后处理或动态逻辑),直接在模型初始化时定义即可:

// 定义c_im,计算房间i容量与学生组m人数的比值
float c[1..a][1..e] = [i][m] => capacity[i] / number[m];

如果需要整数结果(比如表示可容纳的学生组数量),可以用ceil()或floor()函数处理:

int c[1..a][1..e] = [i][m] => ceil(capacity[i] / number[m]);

2. 时段(j,k)与全局时段的映射及H参数调整

一周5天(b=5)、每天4个时段(c=4),总计20个全局时段,有两种处理方式:

方案一:直接用[j][k][l]索引(推荐)

将H参数的索引改为[天j][时段k][教师l],直接对应业务逻辑,无需额外映射:

// 教师l在第j天第k时段的状态(1=开心,2=一般,3=其他)
int H[1..b][1..c][1..d] = ...;

方案二:保留全局timeperiod映射

如果一定要用timeperiod范围,定义映射函数将(j,k)转换为全局时段编号,修正之前的语法问题:

range timeperiod = 1..20;
int H[timeperiod][1..d] = ...; // 教师l在全局时段的状态

// 映射函数:第j天第k时段对应全局时段编号
int getTimePeriod(int j, int k) = k + (j-1)*4;

使用时通过H[getTimePeriod(j,k)][l]调用即可。

3. 目标函数编写

结合上述参数,目标函数的正确写法如下:

对应方案一的目标函数

minimize sum(i in 1..a, j in 1..b, k in 1..c, l in 1..d, m in 1..e, n in 1..f) 
    c[i][m] * H[j][k][l] * x[i][j][k][l][m][n];

对应方案二的目标函数

minimize sum(i in 1..a, j in 1..b, k in 1..c, l in 1..d, m in 1..e, n in 1..f) 
    c[i][m] * H[getTimePeriod(j,k)][l] * x[i][j][k][l][m][n];

修改后的完整代码片段

//Parameter
int a = ...; // 房间集合,索引i                
int b = 5; // 天数,索引j(固定为5)              
int c = 4; // 每天时段数,索引k(固定为4)
int d = ...; // 教师集合,索引l         
int e = ...; // 学生组集合,索引m  
int f = ...; // 课程集合,索引n

int capacity [1..a] = ...; // 房间容量
int number [1..e] = ...; // 学生组人数

// 计算c_im参数
float c[1..a][1..e] = [i][m] => capacity[i] / number[m];

// 定义H参数(方案一)
int H[1..b][1..c][1..d] = ...;

/* 方案二(可选)
range timeperiod = 1..20;
int H[timeperiod][1..d] = ...;
int getTimePeriod(int j, int k) = k + (j-1)*4;
*/

dvar boolean x [1..a][1..b][1..c][1..d][1..e][1..f];

// 目标函数
minimize sum(i in 1..a, j in 1..b, k in 1..c, l in 1..d, m in 1..e, n in 1..f) 
    c[i][m] * H[j][k][l] * x[i][j][k][l][m][n];

// 后续添加约束条件...

内容的提问来源于stack exchange,提问作者Yoom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 20:21:07