【发布时间】:2020-05-19 16:24:08
【问题描述】:
我正在使用 ampl 在 python 中对我的优化问题进行建模,并且我是 ampl 的初学者。我的变量是一个二维数组。这是我的数据:
data;
set USER := u1 u2 ;
set JOB := j1 j2 ;
param p:=
u1 j1 0.8022422666444835
u1 j2 0.8022422666444835
u2 j1 0.8022422666444835
u2 j2 0.8022422666444835
;
param o:=
u1 j1 0.268
u1 j2 0.544
u2 j1 0.234
u2 j2 0.964
;
这是我的放大建模:
set USER;
set JOB;
param p {USER,JOB}>=0;
param o {USER,JOB}>=0;
var t {i in USER, k in JOB}>=0;
maximize profit: sum{k in JOB} 50*log(1+(sum{i in USER} log(1+t[i,k]*o[i,k])))-sum{i in USER}sum{k in JOB} t[i,k]*p[i,k];
结果将是t 变量。我想将t 转换为python 中的二维数组,因为我想在我的python 代码中使用这个优化问题的结果。
我在 python 中运行了这段代码:
time = ampl.getVariable('t')
for i in time:
print(i)
结果是:
(('u1', 'j1'), <amplpy.variable.Variable object at 0x7f82b3b419d0>)
(('u1', 'j2'), <amplpy.variable.Variable object at 0x7f82b3b41d10>)
(('u2', 'j1'), <amplpy.variable.Variable object at 0x7f82b3b41b50>)
(('u2', 'j2'), <amplpy.variable.Variable object at 0x7f82b3b41b10>)
我不知道如何在 python 中将此结果转换为二维数组。你能帮我请求吗? 提前感谢您的帮助。
【问题讨论】:
-
我突然想到你可能想要一些由 u1 和 j1 等值索引的东西,所以你可以像
data["u1"]["j2"]这样查找。如果是这样,您想要一个字典而不是我在下面列出的答案...
标签: python optimization ampl