AMPL代码编译问题:已定义
AMPL code compilation problem: is already defined
我在 AMPL 中有短期任务。
有类似的问题,但没有给我解决方案
这是我的 .mod 文件:
set MOTORS;
set FABRICS;
param work {FABRICS,MOTORS}>= 0;
param power {FABRICS}>= 0;
param price {MOTORS}>= 0;
var prod {MOTORS}>= 0;
var use {o in FABRICS} = sum {k in MOTORS} work [o,k] * prod[k];
var free {o in FABRICS} >= 0;
var income = sum {k in MOTORS} price[k]*prod[k];
maximize income;
s.t. Ogrfreepower {o in FABRICS}: free[o]= power[o]- use[o];
这是我的 .dat 文件:
set MOTORS:= GL SL ;
set FABRICS:= montage paintshop;
param work: GL SL:=
montage 2 5
paintshop 3 3
;
param: power :=
montage 150
paintshop 180
;
param: price :=
GL 2
SL 3
;
这是我的 .运行 文件:
#RESET THE AMPL ENVIROMENT
reset;
model example1.mod;
data example1.dat;
#LOAD THE MODEL
option solver './cplex';
#SOLVE
solve;
#SHOW RESULTS
display income;
当我尝试使用控制台时:
ampl: include example1.run;
它带给我:
example1.mod, line 19 (offset 314):
income is already defined
context: maximize >>> income; <<<
我应该更改什么才能正确编译它?
尝试更改
maximize income;
至:
maximize objective_function: income;
AFAIK,这里的问题是 AMPL 将变量和 objective 函数视为单独的实体。 maximize income
被解释为声明一个名为 "income" 的 objective 函数,而您已经有一个该名称的变量,因此会出现 "already defined" 错误。
更改为:
时也有效
maximize zysk2: sum {k in SKUTERY} cena[k]*prod[k];
而不是:
var income = sum {k in SKUTERY} cena[k]*prod[k];
maximize income;
我在 AMPL 中有短期任务。
有类似的问题,但没有给我解决方案
这是我的 .mod 文件:
set MOTORS;
set FABRICS;
param work {FABRICS,MOTORS}>= 0;
param power {FABRICS}>= 0;
param price {MOTORS}>= 0;
var prod {MOTORS}>= 0;
var use {o in FABRICS} = sum {k in MOTORS} work [o,k] * prod[k];
var free {o in FABRICS} >= 0;
var income = sum {k in MOTORS} price[k]*prod[k];
maximize income;
s.t. Ogrfreepower {o in FABRICS}: free[o]= power[o]- use[o];
这是我的 .dat 文件:
set MOTORS:= GL SL ;
set FABRICS:= montage paintshop;
param work: GL SL:=
montage 2 5
paintshop 3 3
;
param: power :=
montage 150
paintshop 180
;
param: price :=
GL 2
SL 3
;
这是我的 .运行 文件:
#RESET THE AMPL ENVIROMENT
reset;
model example1.mod;
data example1.dat;
#LOAD THE MODEL
option solver './cplex';
#SOLVE
solve;
#SHOW RESULTS
display income;
当我尝试使用控制台时:
ampl: include example1.run;
它带给我:
example1.mod, line 19 (offset 314):
income is already defined
context: maximize >>> income; <<<
我应该更改什么才能正确编译它?
尝试更改
maximize income;
至:
maximize objective_function: income;
AFAIK,这里的问题是 AMPL 将变量和 objective 函数视为单独的实体。 maximize income
被解释为声明一个名为 "income" 的 objective 函数,而您已经有一个该名称的变量,因此会出现 "already defined" 错误。
更改为:
时也有效maximize zysk2: sum {k in SKUTERY} cena[k]*prod[k];
而不是:
var income = sum {k in SKUTERY} cena[k]*prod[k];
maximize income;