主要内容

将优化模型与数据分离

要获得可伸缩的、可重用的优化问题,请以将问题数据与模型结构分离的方式创建问题。

假设您有多个产品的多周期调度问题。下载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);结束

相关的话题