Gurobi/Python模型(定序模型混合整数编程)不可行解决办法
回答大家好
这是我的数学模型和约束
indicei可忽略
目标函数旨在最小延迟作业 。约束 (I) 表示,如果在机器上排名一,完成时间必须大于并等于处理时间和准备启动时间约束二类显示,如果工作排入队列2或以上,完成时间必须大于前一作业完成处理时间和设置时间之和约束性(III)中,最多分配一件作业表示机器处理队列约束性(IV)表示每项作业分配到一列机器约束性(V)中,如果工作完成时间大于最后期限,则表示延迟性约束性(VI)允许工作顺序
点菜归根结底,可以看到非高度约束
ython代码
Veriler(makine,IS,终止语和预设语-时间词典)
机器=makine
作业s
进程_time=进程_time
setup_time=setup_time
准备时间=预设时间
到期日期=终止
序列=序列
M=30000
模型=gp.model
德什肯勒
Y=模型.addVars(工作、机器、序列,v类型=gp.GRB.BINARY,名称'Y')#makina=j/i#k
C=模型.addVars
T=模型.addVars
setObjective(gp.quicksum(T[jk]机器中j作业k)gp.GRB.MINIMIZE
#Cons1
k作业:
O序列:
if(o=0):
机器中j使用
模型Costr/C[j,k]+produce_time
#控件2
k作业:
机器中j使用
O序列:
if(o2=0):
l作业:
kylsl
adcostr/C[j,k]+进程time-kj
#Cons3
机器中j使用
O序列:
adConstr/gp.quicksum/
#Cons4
k作业:
adConstr(gp.quicksum)
#Cons5
k作业:
机器中j使用
模型.addConstr(C[j,k]-到期_date
#Cons6
机器中j使用
O序列:
k作业:
l作业:
kwetl+
model.addConstr(@quicksum(
Ykjo)-
非自发性
k作业:
机器中j使用
model.addConstr(C[j,k]>=0)
容我说明不可行的理由并帮助我
0
-
HiBurcu
本条应该是帮助
我建议你加点有意义的名称以这种方式分析IIS比较容易
并试生成最小实例ISS
希望这有帮助
最优问候
约纳斯0 -
Jonasz,谢谢你的意见
但我不完全理解添加一些有意义的名称来约束你. 并尝试生成IIS最小实例
举个例子
友爱之道
布尔库
0 -
HiBurcu
添加一些有意义的名称限制
manbet体育手机客户端文档添加Constrs方法指名参数,用它表示约束名添加Constr方法相同控件
添加名重要,如果你想浏览文本表单中的模型否则受约束者会取像R112这样的泛名,很难识别
从代码中举一例(假设使用Python3.7或Nester):
k作业:
机器中j使用
模型.addConstr(C[j,k]-到期日期#T[j,k]以这种方式你每一次约束都可清晰识别以后会很重要
并尝试生成IIS最小实例
我猜你用数个数据集/实例测试模型
对其中一些人来说,用代码执行模型可能可行,对其他人则不可行。
保证你所有约束都取名后,我取最小数据集免用
并计算IIS运行
##模型生成上
model.optimize()
model.computeIIS()
model.write("IIS.ilp")并研究后产生IIS.ilp文件这会为您的不可行性提供点子
我希望这能让事情更清晰需要进一步澄清时,请毫不犹豫地联系我们
最优问候
约纳斯一号
求求您签名入留点注释
注释
3条注释