主要内容

Esta página es para la versión previous。La página通讯员zh inglés下面的内容是关于versión实际的内容。

Envíoóptimo德generadores德能源公司:basado恩problemas

Este ejemplo muestra cómo programar dos generadores eléctricos de gas de forma óptima,请注意,我们有一个很好的市长,他的名字叫“ingresos menos el costo”。如果我们没有完全的现实,我们可以cómo我们的成本取决于decisión的时间。

如果你想解决这个问题,请咨询。Envío óptimo de generadores de energía: basado en Solver

Definicion德问题

萨尔瓦多梅尔卡多德拉electricidad tiene diferentes precios连接diferentes momentos德尔直径。硅tiene generadores阙suministran electricidad,puede aprovechar埃斯特PRECIO变量programando SUS generadores对阙funcionen宽多洛precios儿子托斯。Supongamos阙controlas DOS generadores。CADA generador tiene特雷斯niveles德potencia(desactivado,巴霍ÿ中音)。CADA generador tiene UNA TASA especificada德consumo德可燃Ÿproducción德能源公司EN CADA NIVEL德potencia。萨尔瓦多consumo德可燃ES 0宽多报generador ESTA apagado。

您可以给我们一个新的音程,我们可以给您一个新的音程,我们可以给您一个新的音程。在función de los registros históricos,我们可以用时间间隔来计算我们的体重。我们是澳大利亚歌剧演员,我们的名字是energíahttps://www.nemweb.com.au/REPORTS/CURRENT/2013年的媒体报道,请访问SUS términoshttps://www.aemo.com.au/Privacy_and_Legal_Notices/Copyright_Permissions_Notice

负载dispatchPrice;%获取poolPrice,这是每兆瓦时栏中的收入(poolPrice,0.5)XLIM([。5,48.5])xlabel( '每兆瓦时的价格在每个周期')

我希望你能成为我们的大使después我希望你能成为我们的大使。Además, hay una restricción en el consumo máximo de可燃para día。在restricción存在的我们可以在día的时间内使用易燃的物品,请您使用sólo我们可以在比较中使用。

Notación德problemasÿparámetros

Puede公式推EL problema德programación科莫联合国problema德programación德enteros binarios。Defina指数,Y,Y未矢量德programaciónbinario,como的SE籼稻一个continuación:一世jK.y

  • = el número de periodos de tiempo, 48 en este caso。nPeriods

  • = UN período de tiempo, 1 < = < = 48。一世一世

  • = UN índice del generador, 1 < = < = 2 pareste ejemplo。jj

  • 关多。período,关多。está有潜在危险。y (i, j, k) = 1一世jK.它在海里,它在海底。k = 1时k = 2时El generador está apagado cuando。Sum_k y(i,j,k) = 0

确定Cuándo se inicia un generador después de apagarse。请给我们定义一个变量,它是指把眼镜蛇放在período上的辅助符号。z (i, j)j一世

  • Cuando el generador está apagado en el período, pero está en el período。不配合。Z(I,J)= 1j一世I + 1Z(I,J)= 0在其他地方,在其他地方。Z(I,J)= 1Sum_k y(i,j,k) = 0Sum_k y(i+1,j,k) = 1

有必要建立一个表格automáticamente en función de la configuración de。Z.yUna restricción lineal continuación controla esta configuración。

También必要的是我们parámetros我们的问题是我们的费用,我们的费用是我们的费用,我们的费用是我们的易燃物品。

  • ——英格利索在dólares的间歇poolPrice(ⅰ)一世

  • --MW generados POR EL generador一个NIVEL德potencia创(j, k)jK.

  • --Combustible utilizado POR EL generador一个NIVEL德potencia燃料(j, k)jK.

  • ——可燃可燃物en un díatotalFuel

  • -Costo en dólares para iniciar un generador después de haber estado apagadostartCost

  • --Costo德UNA团结报德可燃fuelPrice

你有cuando ejecutaron。poolPrice加载dispatchPrice;Establezca洛杉矶OTROSparámetros德拉siguiente MANERA。

fuelPrice = 3;totalFuel = 3.95 e4;nPeriods =长度(poolPrice);% 48 period nGens = 2;% Two generator gen = [61,152;50,150];%发电机1低= 61 MW,高= 152 MW燃料= [427,806;325,765];%发电机2的燃料消耗低= 325,高= 765 startCost = 1e4;%发电机关闭后启动的成本

Eficiencia德尔generador

检查拉eficiencia德洛斯DOS generadores EN SUS DOS puntos德operación。

效率= gen./fuel;%计算单位燃料耗电量rr =效率';% for标绘h = bar(rr);h(1)。FaceColor = ' g ';h(2)。FaceColor = ' c ';legend(h,'Generator 1','Generator 2','Location','NorthEastOutside') ax = gca;斧子。XTick = [1, 2];斧子。XTickLabel = {'Low','High'}; ylim([.1,.2]) ylabel('Efficiency')

观察2号发电机的效能和1号发电机的效能和operación的通讯(上),如果1号发电机的效能和2号发电机的效能和1号发电机的效能和operación的通讯(上),如果1号发电机的效能和2号发电机的效能和1号发电机的效能和operación的通讯(上)。

变量para la solución

帕拉configurar EL problema,德贝codificar待办事项洛杉矶DATOS德尔problemaŸ拉斯restricciones连接形式上德problema。拉斯维加斯变量representan拉solución德尔problema,Y拉斯变量auxiliares靛SI SE carga对encender联合国generador。ES UNA matrizŸES UNA matriz。y (i, j, k)z (i, j)ynPeriods逐nGen​​s×2Z.nPeriods-by-nGens所有的变量都是二元的。

y = optimvar (“y”nPeriods ngen, {'低的''高的'},“类型”“整数”下界的,0,......' UpperBound ', 1);z = optimvar (' z ', nPeriods ngen,“类型”,“整数”、“下界”,0,…' UpperBound ', 1);

Restricciones lineales

对一个没有任何潜力的人来说,más是一个组成部分,建立一个restricción是一个直系的。

powercons = y (:,:'低的')+ Y(:,:,'高的')<= 1;

工作的代价período易燃的代价período。我们的歌剧没有价值,只有价值。jK.fuelPrice *燃料(j, k)

我想知道代理人是否可以使用易燃物品。fuelUsed

yFuel = 0 (nPeriods ngen 2);yFuel(:, - 1, - 1) =燃料(1,1);yFuel(:,1,2) = Fuel(1,2);yFuel(:,2,1) = Fuel(2,1);yFuel(:,2,2) = Fuel(2,2);% generator 2 in high setting fuelUsed = sum(sum(sum(y.*yFuel)));

restricción是可燃物,而不是más是可燃物。

fuelcons = fuelUsed <= totalFuel;

建立变量的标识符和生成符

我们的网址是:automáticamente我们的网址是什么?Z.y下面我们再来回顾一下,condición符合的是cuándo y。Z(I,J)= 1Sum_k y(i,j,k) = 0Sum_k y(i+1,j,k) = 1

观察阙exactamente宽多usted quiere。Sum_k (- y(i,j,k) + y(i+1,j,k)) > 0Z(I,J)= 1

但是,在这个问题中,包括是一个限制因素。

sum_k( - Y(I,J,K)+ Y(I + 1,J,K)) - Z(I,J)<= 0

Además,包含变量在función目标的成本中。Z.精读拉斯变量EN LAfunciónobjetivo,EL solucionador intenta reducir SUS VALORES,老阙阙标志意义intenta establecerlos待办事项igual 0。Z.在这段时间内,我们的后代都是伊瓜拉尔人。z (i, j)

Cree是表示的一个辅助变量。W.Y(I + 1,J,K) - Y(I,J,K)代表在términos的总机上签字。W.

W = optimexpr(nPeriods,nGens);%分配瓦特IDX = 1:(nPeriods-1);瓦特(IDX,:) = Y(IDX + 1,:, '低') -  Y(IDX,:, '低')+ Y(IDX + 1,:, '高') -  Y(IDX,:,'高的');瓦特(nPeriods,:) = Y(1,:, '低') -  Y(nPeriods,:, '低')+ Y(1,:, '高') -  Y(nPeriods,:, '高');switchcons = W  -  z <= 0;

值objetivo

función目标包括易燃费用段ejecución generadores, ingresos de La ejecución generadores y los costos de los generadores。

generatorlevel =零(大小(yFuel));generatorlevel(:,1,1)=根(1,1);% Fill in the levels generatorlevel(:,1,2) = gen(1,2);generatorlevel(: 2 1) =创(2,1);generatorlevel(: 2 2) =创(2,2);

entrantes = y。* generatorlevel。* poolPrice

收入= optimexpr(大小(y));II = 1:nPeriods收入(二,:,:) = poolPrice(ⅱ)* Y(二,:,:)* generatorlevel(ⅱ。,::);结束

总可燃物=。fuelUsed * fuelPrice

fuelCost = fuelUsed * fuelPrice;

埃尔costo inicial德尔generador =。Z * startCost

startingCost z = * startCost;

萨尔瓦多beneficio = costo德INICIO德尔costo德可燃总去ingresos entrantes。--

利润=总和(求和(总和(收入))) -  fuelCost  - 总和(总和(startingCost));

解析器el问题

克里联合国problema德optimizaciónËincluya EL objetivoŸ拉斯restricciones。

调度= optimproblem ('ObjectiveSense'“最大化”);dispatch.Objective =利润;dispatch.Constraints.switchcons = switchcons;dispatch.Constraints.fuelcons = fuelcons;dispatch.Constraints.powercons = powercons;

一个恐怖的空间,一个visualización迭代。

选择= optimoptions (“intlinprog”“显示”“最后一次”);

Resuelve el问题。

[dispatchsol,FVAL,exitflag,输出] =解决(调度,“选项”、选择);
找到最优解。Intlinprog停止是因为客观值在最优值选项的间隙公差范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是在公差选项内的整数。IntegerTolerance = 1e-05(默认值)。

检查la solucion

跟踪la solución en función del tiempo。

次要情节(1,1)栏(dispatchsol.y(:, 1, 1) *创(1,1)+ dispatchsol.y(:, 1, 2) *创(1、2),5,‘g’) xlim ([5, 48.5]) ylabel (“MWh”)标题(“发电机1最优调度”“FontWeight”'胆大'次要情节(3、1、2)酒吧(dispatchsol.y(:, 2, 1) *创(1,1)+ dispatchsol.y(:, 2, 2) *创(1、2),5,'C')标题(“发电机2最佳调度”“FontWeight”'胆大') xlim ([5, 48.5]) ylabel (“MWh”) subplot(3,1,3) bar(poolPrice,.5) xlim([.5,48.5]) title(能源价格的“FontWeight”'胆大')包含('时期') ylabel (“美元/千瓦时”

埃尔generador 2 CORREMÁS蒂恩波阙EL generador 1,阙cabríaesperar porque ESMÁSeficiente。萨尔瓦多generador 2 SE ejecuta EN苏NIVEL德阿尔塔potencia CADA VEZ阙ESTA encendido。萨尔瓦多generador 1 SE ejecuta principalmente EN苏NIVEL德potencia阿尔塔,佩罗本身extiende一个巴哈potencia对UNA团结报德时代报。CADA generador SE ejecuta对联合国CONJUNTO contiguo德períodosdiariamente Y,POR LO短刀,独奏incure恩未costo德INICIO CADA直径。

我们应该把变量定义为períodos所以我们应该把变量定义为períodos。Z.

Starttimes = find(round(dispatchsol.z) == 1);%对非整数结果使用round [theperiod,thegenerator] = ind2sub(size(dispatchsol.z),starttimes)
年度变化平均数低于=2×123日16
thegenerator =2×11 2

所以,我们的朋友们都认为这是一个巧合。

Comparar CON巴哈penalización段启动

如果是一个更小的例子,solución就意味着generación的不同时期。startCost

startCost = 500;%选择较低的惩罚用于起动发电机startingCost = Z * startCost;利润=总和(求和(总和(收入))) -  fuelCost  - 总和(总和(startingCost));dispatch.Objective =利润;[dispatchsolnew,fvalnew,exitflagnew,outputnew] =解决(调度, '选项',选择);
找到最优解。Intlinprog停止是因为客观值在最优值选项的间隙公差范围内。AbsoluteGapTolerance = 0(默认值)。intcon变量是在公差选项内的整数。IntegerTolerance = 1e-05(默认值)。
次要情节(1,1)栏(dispatchsolnew.y(:, 1, 1) *创(1,1)+ dispatchsolnew.y(:, 1, 2) *创(1、2),5,‘g’) xlim ([5, 48.5]) ylabel (“MWh”)标题(“发电机1最优调度”“FontWeight”'胆大'次要情节(3、1、2)酒吧(dispatchsolnew.y(:, 2, 1) *创(1,1)+ dispatchsolnew.y(:, 2, 2) *创(1、2),5,'C')标题(“发电机2最佳调度”“FontWeight”'胆大') xlim ([5, 48.5]) ylabel (“MWh”) subplot(3,1,3) bar(poolPrice,.5) xlim([.5,48.5]) title(能源价格的“FontWeight”'胆大')包含('时期') ylabel (“美元/千瓦时”

starttimes =找到(圆(dispatchsolnew.z)== 1);%用途轮非整数结果[theperiod,thegenerator] = ind2sub(大小(dispatchsolnew.z),starttimes)
年度变化平均数低于=3×122 16 45
thegenerator =3×11 2 2