~~557 2022-10-22 21:50 采纳率: 76.7%
浏览 156
已结题

python调用gurobi进行目标优化

python调用gurobi进行目标优化,通过优化每段路程的速度,耗油最少,并在规定时间内到达目的地
照葫芦画瓢自己写的代码运行不了,求DA LAO救我,看看是啥问题

from gurobipy import *
df1 = pd.read_csv(r'E:\L228.csv')
df2 = pd.read_csv(r'E:\228.csv')
L= df1.L.values #距离
V = np.linspace(2, 22, 201) #速度,设置每段路程的最大速度和最小速度,每隔0.1取一次值
x2= df2.x2.values #其他影响因素
x3= df2.x3.values
x4= df2.x4.values
x5= df2.x5.values
x6= df2.x6.values
x7= df2.x7.values
x8= df2.x8.values
x9= df2.x9.values

I = list(range(148))# 时段
J = list(range(200))# 速度每次增加0.1

#计算第i个时间段的耗油量
Y= []
for i in range(148):
    for j in range(200):
        Y[i][j] = (-14.16)*x1[i]+1.39*x2[i]+1.08*x3[i]+1.04*x4[i]+(-1.35)*x5[i]+1.65*x6[i]+0.47*x7[i]+0.52*V[j]+(-284.66)
    

# 创建模型
m = Model("minY")
z = m.addVars(I, J, vtype=GRB.BINARY)
m.update()
# 创建目标函数
m.setObjective(sum(sum(z[i, j] * Y[i][j] * L[i]/V[j]for j in J) for i in I ), GRB.MINIMIZE) #若V[j]是最优速度,则z[i, j]为1,否则为0
# 创建约束条件约束条件
# 不超过时间限制
T_max = 2 #规定时间
m.addConstrs(L[i]/V[j]+sum(L[i]/V[j]*z[i, j] for j in J) <=T_max for i in I) #在最优速度下每段的时间之和小于等于规定时间
m.addConstrs(sum(z[i, j]for j in J) == 1 for i in I )
# 求解规划模型
m.optimize()

# 输出结果
# 得到最小耗油量
min_get = sum(sum(z[i, j] * Y[i][j] * L[i]/V[i][j]for j in J ) for i in I )
print('最小耗油量为:',min_get)
  • 写回答

1条回答 默认 最新

  • 码诅 2022-10-22 23:17
    关注

    你还没安装环境gurobi,以及到导入gurobi包

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月23日
  • 赞助了问题酬金15元 10月23日
  • 赞助了问题酬金1元 10月23日
  • 修改了问题 10月23日
  • 展开全部

悬赏问题

  • ¥15 在国外文献网站里点击view pdf 加载异常缓慢甚至加载不出来。
  • ¥50 python批量提取发票的信息
  • ¥15 mysql安装,初始化数据库失败
  • ¥15 虚幻五引擎内容如何上传至网盘?
  • ¥15 使用mmpose库时出现了问题
  • ¥15 IRI2016模型matlab运行报错
  • ¥50 bat怎么设置电脑后台自动点击网页指定词运行脚本,输入指定网页链接,指定点击词,指定间隔时间,指定网页出现的词,指定网页出现词出现后后点击锁定,放在后台运行不影响前台鼠标工作
  • ¥20 20CrMnMo的高温变形抗力
  • ¥15 RTX3.6 5565驱动中断报错
  • ¥50 带防重放token(Antireplay-Token)的网站怎么用Python发送请求