0

我是 AMPL/NEOS 和一般优化问题的新手。我有一个看起来像这样的 mod 文件:

参数

参数 n; # 观察次数

参数 p; # 特征数量

参数 ResponseVariable{i in 1..n}; # 连续响应变量

参数 VectorofFeatures{i in 1..p}; # 特征向量

决策变量

var IndependentTerm{i in 1..p}; #独立项

var VectorofCoefficients{i in 1..p}; #向量的系数

目标函数

最小化函数: sum {i in 1..p} (ResponseVariable[i]-(VectorofCoefficients[i]*VectorofFeatures[i]+IndependentTerm[i]))^2

#文件结束

和一个看起来像这样的数据文件:

参数

参数 n:= 50;

参数 p:= 6;

参数响应:= 1 24 2 21.6 3 34.7 4 33.4 5 36.2 6 28.7 7 22.9 8 22.9 8 27.1 9 16.5 10 18.9 11 15 12 18.9 15 12 18.9 13 21.7 13 21.7 14 14 20.4 15 18.2 16 19.9 17 23.9 17.1 18.1 18.1 18.5 15.2 24 14.5 25 15.6 26 13.9 27 16.6 28 14.8 29 18.4 30 21 31 12.7 32 14.5 33 13.2 34 13.1 35 13.5 36 18.9 37 20 38 21 39 24.7 40 30.8 41 34.9 42 26.6 43 25.3 44 24.7 45 21.2 46 19.3 47 20 48 16.6 49 14.4 50 19.4;

param VectorofFeatures: 1 2 3 4 5 6 := 1 0.00632 6.575 65.2 4.09 396.9 4.98 2 0.02731 6.421 78.9 4.9671 396.9 9.14 3 0.02729 7.185 61.1 4.9671 392.83 4.03 4 0.03237 6.998 45.8 6.0622 394.63 2.94 5 0.06905 7.147 54.2 6.0622 396.9 5.33 6 0.02985 6.43 58.7 6.0622 394.12 5.21 7 0.08829 6.012 66.6 5.5605 395.6 12.43 8 0.14455 6.172 96.1 5.9505 396.9 19.15 9 0.21124 5.631 100 6.0821 386.63 29.93 10 0.17004 6.004 85.9 6.5921 386.71 17.1 11 0.22489 6.377 94.3 6.3467 392.52 20.45 12 0.11747 6.009 82.9 6.2267 396.9 13.27 13 0.09378 5.889 39 5.4509 390.5 15.71 14 0.62976 5.949 61.8 4.7075 396.9 8.26 15 0.63796 6.096 84.5 4.4619 380.02 10.26 16 0.62739 5.834 56.5 4.4986 395.62 8.47 17 1.05393 5.935 29.3 4.4986 386.85 6.58 18 0.7842 5.99 81.7 4.2579 386.75 14.67 19 0.80271 5.456 36.6 3.7965 288.99 11.69 20 0.7258 5.727 69.5 3.7965 390.95 11.28 21 1.25179 5。57 98.1 3.7979 376.57 21.02 22 0.85204 5.965 89.2 4.0123 392.53 13.83 23 1.23247 6.142 91.7 3.9769 396.9 18.72 24 0.98843 5.813 100 4.0952 394.54 19.88 25 0.75026 5.924 94.1 4.3996 394.33 16.3 26 0.84054 5.599 85.7 4.4546 303.42 16.51 27 0.67191 5.813 90.3 4.682 376.88 14.81 28 0.95577 6.047 88.8 4.4534 306.38 17.28 29 0.77299 6.495 94.4 4.4547 387.94 12.8 30 1.00245 6.674 87.3 4.239 380.23 11.98 31 1.13081 5.713 94.1 4.233 360.17 22.6 32 1.35472 6.072 100 4.175 376.73 13.04 33 1.38799 5.95 82 3.99 232.6 27.71 34 1.15172 5.701 95 3.7872 358.77 18.35 35 1.61282 6.096 96.9 3.7598 248.31 20.34 36 0.06417 5.933 68.2 3.3603 396.9 9.68 37 0.09744 5.841 61.4 3.3779 377.56 11.41 38 0.08014 5.85 41.5 3.9342 396.9 8.77 39 0.17505 5.966 30.2 3.8473 393.43 10.13 40 0.02763 6.595 21.8 5.4011 395.63 4.32 41 0.03359 7.024 15.8 5.4011 395.62 1.98 42 0.12744 6.77 2.9 5.7209 385.41 4.84 43 0.1415 6.169 6.6 5.7209 383.37 5.81 44 0.15936 6.211 6.5 5.7209 394.46 7.44 45 0.12269 6.069 40 5.7209 389.39 9.55 46 0.17142 5.682 33.8 5.1004 396.9 10.21 47 0.18836 5.786 33.3 5.1004 396.9 14.15 48 0.22927 6.03 85.5 5.6894 392.74 18.8 49 0.25387 5.399 95.3 5.87 396.9 30.81 50 0.21977 5.602 62 6.0877 396.9 16.2;

#文件结束

每当我尝试在 NEOS 中运行它们时,都会遇到同样的错误:

amplin,第 41 行(偏移量 631):语法错误上下文:>>> 数据;<<< /opt/ampl/ampl -R amplin 中的错误 (2)

上下文对我来说非常模糊,所以我不确定它指的是数据的哪一部分。还有人知道吗?

4

1 回答 1

0

我认为您收到此错误是因为您忘记用分号结束目标函数声明。NEOS 在内部将您的模型和输入文件连接在一起,data;在模型文件之后放置一条语句。由于您没有正确结束目标函数声明,因此您收到了该错误。

但是,您的程序还存在其他问题,尤其是在数据文件中。您的数据分配无效。如果您有一个param集合VectorofCoefficients索引 over 1..6,则赋值语句应如下所示:

param VectorofCoefficients =
  1 123
  2 456
  ...
  6 789;

有关 AMPL 数据分配的更多信息:https ://pifop.com/help/ampl_data_assignment.html

于 2021-12-27T17:47:18.823 回答