【问题标题】:parameter is already defined in ampl参数已经在ampl中定义
【发布时间】:2018-10-18 01:32:51
【问题描述】:

我想在ampl文件中定义一些参数,但是当我尝试运行它时软件显示该参数已定义。我该如何解决这个问题?

set N := 1..6;
set N_row := 1..4;

var x{i in N} >= 0, <= 1 default 0;

param alpha{N_row};
param A{N_row,N};
param P{N_row,N}; 

param alpha := 1 1.0  2 1.2  3 3.0  4 3.2;
param A :=
[1,*] 1 10  2 3  3 17  4 3.5  5 1.7  6 8
[2,*] 1 0.05  2 10  3 17  4 0.1  5 8  6 14
[3,*] 1 3  2 3.5  3 1.7  4 10  5 17  6 8
[4,*] 1 17  2 8  3 0.05  4 10  5 0.1  6 14;
param P :=
[1,*] 1 0.1312  2 0.1696  3 0.5569  4 0.0124  5 0.8283  6 0.5886
[2,*] 1 0.2329  2 0.4135  3 0.8307  4 0.3736  5 0.1004  6 0.9991
[3,*] 1 0.2348  2 0.1451  3 0.3522  4 0.2883  5 0.3047  6 0.6650
[4,*] 1 0.4047  2 0.8828  3 0.8732  4 0.5743  5 0.1091  6 0.0381;


minimize Obj: sum {i in N_row} (alpha[i]*exp(-1*(sum{j in N} A[i,j]*(x[j]-P[i,j])**2)));

option solver scip;
solve;
display x;
display Obj;
display alpha;
display A;
display P;

【问题讨论】:

  • 我知道我可以将参数信息放在 .dat 文件中,但我想将其包含在 .mod 文件中

标签: ampl


【解决方案1】:

将模型和数据分开通常是一种很好的做法,但如果您真的想这样做,您可以使用“数据”语句切换到数据模式,然后使用“模型”切换回来。像这样:

set N := 1..6;
set N_row := 1..4;

var x{i in N} >= 0, <= 1 default 0;

param alpha{N_row};
param A{N_row,N};
param P{N_row,N}; 

data;
param alpha := 1 1.0  2 1.2  3 3.0  4 3.2;
param A :=
[1,*] 1 10  2 3  3 17  4 3.5  5 1.7  6 8
[2,*] 1 0.05  2 10  3 17  4 0.1  5 8  6 14
[3,*] 1 3  2 3.5  3 1.7  4 10  5 17  6 8
[4,*] 1 17  2 8  3 0.05  4 10  5 0.1  6 14;
param P :=
[1,*] 1 0.1312  2 0.1696  3 0.5569  4 0.0124  5 0.8283  6 0.5886
[2,*] 1 0.2329  2 0.4135  3 0.8307  4 0.3736  5 0.1004  6 0.9991
[3,*] 1 0.2348  2 0.1451  3 0.3522  4 0.2883  5 0.3047  6 0.6650
[4,*] 1 0.4047  2 0.8828  3 0.8732  4 0.5743  5 0.1091  6 0.0381;

model;
# etc.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-02
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多