将优化模型与数据分离
要获得可伸缩的、可重用的优化问题,请以将问题数据与模型结构分离的方式创建问题。
假设您有多个产品的多周期调度问题。下载188bet金宝搏时间周期是一个矢量,期
,乘积是一个字符串向下载188bet金宝搏量,下载188bet金宝搏
.
周期= 1:10;下载188bet金宝搏产品= [“草莓”,“樱桃”,“红葡萄”,...“绿色葡萄”,“蜜桃”,“杏”];
若要创建表示每个时期使用的产品数量的变量,请使用从数据中获取大小的语句。下载188bet金宝搏例如:
Usage = optimvar(“使用”长度(时期)、产品下载188bet金宝搏...“类型”,“整数”,下界的, 0);
若要以后更改时间段或产品,只需在中更改数据下载188bet金宝搏期
而且下载188bet金宝搏
.然后,您可以运行相同的代码来创建使用
.
换句话说,为了保持灵活性并允许重用,不要使用具有硬编码数据大小的语句。例如:
Usage = optimvar(“使用”10 6...不要这样做“类型”,“整数”,下界的, 0);
表达式和变量同样需要考虑。假设产品的成本在一个数据矩阵中,下载188bet金宝搏成本
,大小长度(时期)
——- - - - - -长度(产品)下载188bet金宝搏
.为了模拟有效的数据,创建一个大小适当的随机整数矩阵。
rng默认的%用于再现性成本= randi(8,长度(周期),长度(产品));下载188bet金宝搏
最佳实践是创建从数据中获取大小的成本表达式。
costPerYear = sum(成本。*使用量,2);totalCost = sum(costPerYear);
通过这种方式,如果您改变了数据大小,创建的语句costPerYear
而且totalCost
不要改变。换句话说,为了保持灵活性并允许重用,不要使用具有硬编码数据大小的语句。例如:
costPerYear = optimexpr(10,1);不要这样做总成本= 0;为Yr = 1:10不要这样做costPerYear(i) = sum(cost (i,:).*usage(i,:));totalcost = totalcost + costPerYear(i);结束