resultx = [] for i in range(1,5): resultx.append([i]*[i])
时间: 2023-11-17 10:06:04 浏览: 78
这段代码有语法错误,应该是:
```python
resultx = []
for i in range(1, 5):
resultx.append([i]*i)
```
它的作用是生成一个二维列表,其中第 `i` 行有 `i` 个元素,每个元素都是 `i`。最终生成的 `resultx` 如下:
```
[[1],
[2, 2],
[3, 3, 3],
[4, 4, 4, 4]]
```
相关问题
resultx = [] for i in range(1,5): resultx.append(5[i]*2[i]) print(resultx)
这段代码有误,应该改为:
```
resultx = []
for i in range(1, 5):
resultx.append(5*i*2*i)
print(resultx)
```
或者使用下标访问列表元素的方式:
```
resultx = []
for i in range(1, 5):
resultx.append(5[i-1]*2[i-1])
print(resultx)
```
这里的问题在于,5[i] 和 2[i] 的语法是错误的。正确的语法应该是 5 * i 和 2 * i。同时,由于列表的下标是从0开始的,因此要使用 i-1 的方式来访问列表元素。
##构建决策变量x,并将x从元祖转化为字典 x={} for i, j in CostKey: x[i, j] = m.addVar(0,gb.GRB.INFINITY,vtype=gb.GRB.INTEGER, name="x"+str(OnlyNumber(i))+str(OnlyNumber(j))) x= gb.tupledict(x) #构建目标函数,默认求最小值 Obeject = gb.quicksum(x[i, j] * Cost[i, j] for i, j in CostKey) m.setObjective(Obeject) m.addConstrs((x.sum("*", j) == Sale[j] for j in SaleKey), name="Con1") # 添加约束条件1 m.addConstrs((x.sum(i, "*") == Production[i]for i in ProductionKey), name="Con2") #m.addConstrs((x.sum(i, "*") <= Production[i]for i in ProductionKey), name="Con2") # 添加约束条件2(可设置产销平衡或产销不平衡) m.write("Transport.lp") #将建立好的数学模型(决策变量、目标函数等)送入模型 m.optimize() # 求解 if m.status == gb.GRB.OPTIMAL: for v in m.getVars(): print("%s %g" % (v.varName, v.x)) print("Object: %g" % m.objVal) else: print(f"变量{m.varName} 没有最优解") #决策变量X最优解展示 wb1=openpyxl.Workbook() ws1=wb1['Sheet'] ws1.cell(1,1).value="变量名" ws1.cell(1,2).value="数值" ws1.cell(1,4).value="目标函数最优值" ws1.cell(2,4).value=m.objVal ResultX=[] NameX=[] for value in m.getVars(): if value.x>0: ResultX.append(value.x) NameX.append(value.varName) for i in range(2,len(NameX)+2): ws1.cell(i,1).value=NameX[i-2] ws1.cell(i,2).value=ResultX[i-2] wb1.save("result.xlsx") #将结果写入excel表中 with open("C:\\Users\\LENOVO\\Desktop\\gurobi\\result.txt",'w') as FileResult: FileResult.write("变量名 数值"+'\n') for i in range(len(NameX)): FileResult.write(str(NameX[i])+" "+str(ResultX[i])+'\n') FileResult.write('\n') FileResult.write("目标函数值: "+str(m.objVal)) #将结果写入txt文件中
这段代码是一个数学规划模型的求解过程,其中包括了建立决策变量、构建目标函数、添加约束条件、求解最优解等步骤。
首先,通过循环遍历`CostKey`中的元组,构建决策变量`x`,并将其转化为字典格式。
然后,通过`gb.quicksum()`函数构建目标函数`Obeject`,该目标函数为求解最小值。
接下来,添加两个约束条件,即产量等于销量和销量等于生产量,可以根据需求设置产销平衡或不平衡。
将建立好的数学模型送入模型,调用`m.optimize()`求解最优解。
如果模型求解成功,就将决策变量的最优解和目标函数的最优值输出,并将结果写入Excel和txt文件中。
总之,这段代码实现了对数学规划模型的建立和求解过程,可以帮助用户解决复杂的决策问题。
阅读全文