AMPL代码编译问题:已定义

问题描述 投票:0回答:2

我在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
    ;

这是我的.run文件:

#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; <<< 

我应该更改什么才能正确编译?

optimization ampl
2个回答
1
投票

尝试更改

maximize income;

至:

maximize objective_function: income;

AFAIK,这里的问题是AMPL将变量和目标函数视为单独的实体。 maximize income解释为在您已经有一个名为“收入”的目标函数时,已经声明了该函数,因此会出现“已定义”错误。


0
投票

当更改为:时也可以使用:

maximize zysk2: sum {k in SKUTERY} cena[k]*prod[k];

而不是:

var income = sum {k in SKUTERY} cena[k]*prod[k];

maximize income;
© www.soinside.com 2019 - 2024. All rights reserved.