如何比较Matlab OptmizationExpression?

时间:2019-09-10 00:10:33

标签: matlab mixed-integer-programming

我正在解决一个二进制整数线性程序(BILP)。为了生成优化表达式,我将决策变量的向量与每个决策值的向量的点积作为乘积。生成点积的两种不同方式会产生外观相同的优化表达式,但似乎没有办法确认它们是否相同。

Tdecisions = table;

% Binary decision variables
Tdecisions.YesNo = optimvar( 'YesNo' , 2,1 , ...
   'Type','integer' , 'LowerBound',0 , 'UpperBound',1 );

% Utility/value coefficients for each decision
Tdecisions.VALUE = [ 1 ; 2 ];

% The two ways to get dot product should yield the same result
x = Tdecisions.YesNo' * Tdecisions.VALUE
y = dot( Tdecisions.YesNo , Tdecisions.VALUE )
%
% Output is:
%   x = Linear OptimizationExpression YesNo(1) + 2*YesNo(2)
%   y = Linear OptimizationExpression YesNo(1) + 2*YesNo(2)

% isequaln returns false, so it isn't up to the task
isequaln( x, y )

% Text expressions of OptmizationExpressions are identical (diff).
% This is not convenient.
writeexpr(x,'x.txt')
writeexpr(y,'y.txt')

由于我是Matlab基于混合整数线性程序(MILP)的基于问题的流程的新手,所以我认为这种健全性检查对于行业规模的问题可能很重要:是否有一种方法可以动态检查OptmizationExpression的等效性而无需求助于生成外部文本文件进行比较?

我正在使用Matlab 2019a。

谢谢。

0 个答案:

没有答案