首页>AMPL发行说明

AMPL 发行说明

 

20250901

  • 更新至快照 0.1.6:默认情况下(或当包含 "solution" 时),与变量和约束相关的后缀会显示在快照中。在此之前,只有当问题求解完毕后才会显示,不论是否包含 "solution"。
  • 省略有时在接收可变数量参数的函数名称前打印的初始空格。例如,

set I; param p{I};
data; param :I: p := b 3.7 c 2.9;
display min(p['b'], p['c']);

打印结果为 min(p['b'],p['c']) = 2.9。

20250805

  • 修复在 for 循环中,当使用形如 {I, J} 的笛卡尔积且含有哑变量元组时出现的故障。

20250722

  • 新增用于约束的内建后缀 .ctype,用于指示特定约束的类型:

0 ==> Algebraic constraint
1 ==> Logical constraint
2 ==> Complementarity constraint

  • 更改内建后缀 .domain的取值。现在,原值“2”和“3”已合并为“2”。
	0 ==> floating-point (double precision)
1 ==> integer
2 ==> in a discrete set or union of intervals
  • 将选项 strict_ineq_warn的默认值更改为 0。严格不等式现被视为逻辑约束。此选项控制是否显示严格不等式的警告(先前默认值为 1)。
  • 新增选项 ampl_debug(默认值为 0),用于控制是否显示致命错误信息。若需显示致命错误信息,请将此选项设为 1。

20250626

  • 修复约束条件被括号包围时出现的问题。

20250508

修复预求解中简化涉及 “and”、“or”、“exists” 及 “forall” 运算符的逻辑表达式时出现的错误。

新增选项 allow_Nan以影响涉及“小于”或“大于”比较的预求解简化过程。在上述示例中添加 allow_NaN=1选项后,输出将更改为:

subject to con:
             !(20 <= x) || !(x <= 70);

  • 修复 expand命令中的一个错误。示例如下:

var x{1..4};
subj to con: 0 <==> forall {a in 1..4} not(1 <= x[a] <= 2);
expand;

给定

subject to con:
              0 /*FALSE*/ <==> ((!(1 <= x[1]) || !(x[1] <= 2)) && (!(1 <= x[2]) || !
              (x[2] <= 2)));

遗漏了 x[3] 和 x[4],而不是

subject to con:
             0 /*FALSE*/ <==> ((1 > x[1] || x[1] > 2) && (1 > x[2] || x[2] > 2) &&
             (1 > x[3] || x[3] > 2) && (1 > x[4] || x[4] > 2));

修复在...中出现的一个故障

var x;
subj to con: 0 <==> exists{i in 0..3} i <= i*x <= i^2;
solexpand;

20250401

  • 快照 (版本 0.1.5) 中的命令与 xor运算符不再是实验性功能,现已成为正式功能。

20250318

  • 快照 0.1.5:

    • 不打印已定义变量的值。

    • 省略一些输出,除非包含模型。它影响部分:当前问题/环境、当前目标、固定变量、丢弃的约束。

20250311

  • 修复了在传送定义的非线性变量时出现的错误,这些变量也出现在 .nl 文件中的逻辑约束上。

20241203

  • 改进了在预求解关闭时处理逻辑文字的能力。

20241122

  • 修复以下代码段导致的 bug 消息:

option presolve 0;
var x >= 0;
subject to c: x >= .5 <==> 1;
solve;

20240313

  • 修复 write 命令在$auxfiles包含 “d” 且定义的变量被拆分为线性和非线性部分时出现的错误。在 .col 文件中,非线性零件现在由“.nl”后缀表示。在下面的愚蠢例子中

var x; var y;
var z = 4*y + y^4 - 6.38;
var w = 8*x + abs(y) + 18.635;
minimize O: 5*x + 8*z + 15;
s.t. C: -200 <= 205*x -17*x^3 - 3.8*w <= 403.2869;
solexpand;
option auxfiles rd;
write gfoo1;

 

20230124

在块模式下显示错误上下文(调用 “”).ampl -b ...

20221013

修复了版本 20220505 中引入的处理数据部分的错误。 例:

set A := 1..2; param p{A}; param q{A};  
data;  
param: p q :=  
[*] 1 2.5 3	# erroneously complained about "."      
    2 4 5.6;  
display p, q;

20221008

修复了 64 位 ARM 二进制文件中在某些情况下导致错误值的配置错误,比如某些要计算的内容。跟今天的 64 位 ARM 二进制文件“”将报告版本 20221008Normal01()ampl -vvq

20220927

修复由于变量的不当使用而导致的几条错误消息。以前的例子

 var x >= 0 integer; var y >= 0 integer;  
subj to con: x + y in {0,3,5};  
solve;  

收到令人惊讶的错误消息

presolve, constraint con:      
            Logical constraint is always false.  
Infeasible constraints determined by presolve.  

现在第二行引发错误消息

Cannot test whether a variable expression is in a set expression.  
context:  subj to con: x + y in  >>> {0,3,5}; <<<   

此示例可以重述为

var x >= 0 integer; var y >= 0 integer;  
var z in {0,3,5};  
s.t. con: x + y == z;  

以前是小例子的第二行

var x >= 0;  
subj to con: x in {0,3,5};  

引发了令人惊讶的错误消息

continuous variable in tuple  
context:  subj to con: x in  >>> {0,3,5}; <<<   

不是它得到

Cannot test whether a variable is in a set expression.  
context:  subj to con: x in  >>> {0,3,5}; <<<   

该示例可以重写(无报错)为

var x in {0,3,5};  

对于 “” 声明,AMPL无声地生成二进制文件 由 SOS1 条件和定义 x 的约束var x in set_expr相关的变量。

20220812

修复20220730更改中的错误,该错误导致定义变量的某些使用出错 - 仅当20220730的更改相关时。

20220730

修复定义变量的错误:如果一个定义的变量非线性地使用了一个问题变量,另一个定义的变量线性地使用第一个问题变量,没有对问题变量进行其他使用,并且第二个定义的变量是非线性使用的,那么就不计算关于问题变量的导数。例:

set I = 1..3; var x{i in I} := i;    
var v1 = x[1] + x[2]^2;    
var v2 = v1 + x[3]^3;  
minimize obj: v2^2;  

由于 .nl 文件x[2]中的错误,未计算有关的导数。

20220703

修复版本 20220505 中引入的故障:在数据部分中,下标集的下标中未引号的“-”给出了错误消息。例:

set S; set T{S}; data;    
set S := 2022-06-26_03;    
set T[2022-06-26_03] := a b c;    
display T;  

将第三行更改为

set T['2022-06-26_03'] := a b c;  

是一个变通办法。

20220621

修复控制台输入的故障:如果光标位于当前行的开头(可能是因为按了 HOME 键),则 DELETE 键不执行任何操作。

使用历史记录和向上和向下箭头键可以正确调用的最长行从 1000 个字符增加到 4000 个字符。

20220506

在数据部分中,当 x 是变量时,当 x 还没有当前值时,将 x.val 视为 x,当 c 是约束时,对于 c 和 c.dual ,同样。

在小例子中

var x; data; var x.dual := 3;    

将错误消息从“dual 不是后缀”更改为“dual 不是可分配的后缀”。(当 x 是用 “” 声明的已定义变量时,x.dual 是隐含约束 “x = 表达式” 的对偶变量的值。定义的变量被替换出问题,因此求解器看不到它们,但有时希望看到它们的对偶变量值。var x = expression;

20220505

修复了 “” 命令中的一个错误,该错误未打印约束的默认值(双精度)。例:show

var x; s.t. cx default 1: x <= 4;    
show cx;  

允许后缀(关于变量、约束、目标、问题)出现在数据部分中。像通常的数据部分一样,约束、目标或问题的名称可以用“param”或“var”引入。例如

var x;    
minimize o: (x-3)^2;    
suffix foo;    
data;    
var o.foo 3.2; # or "var o := 3.2"; the ":=" is optional here.    
# or "param o.foo 3.2", etc.    

这是为了使“快照”更有效率;不会检查是否替换后缀值。

如果指定了 ,并且在预解后没有变量仍然使用,输出x[2] “# No .nl file written: no variables used.”"option show_write_files 2"

悄悄地减少 printf 格式中荒谬的大精度。例如,出错。现在它可以工作并静默减少到 ."%.410g""%.500g""%.415g"

 

 

 

 


 

在线留言

尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。

 

 

联系我们

 

微信公众号

咨询微信

企业店铺

400-621-1085

(节假日期间办公室座机如无人接听,请选择其他联系方式,感谢理解!祝您节日快乐!)

 

联系我们 快速链接 相关产品 上海卡贝信息技术有限公司

©2026  上海卡贝信息技术有限公司

产品中心

下载中心

站点地图

隐私政策

 

销售QQ咨询

产品QQ咨询

淘宝店铺

 

综述

下载试用

 

 

GAMS

LINGO

What'sBest!

SmarPLS

Stata

IBM SPSS Statistics

Berkeley Madonna

iThink

Stella Architect

IBM SPSS Modeler

DecisionTools Suite

NeuralTools

Frontier Analyst

Vensim

RISKOptimizer

PrecisionTree

LINDO API

@RISK

BayesiaLab

Oracle Crystal Ball

GEMPACK

GTAP Database

TreeAge