对你的爱 21克

你知道爱情的重量吗?往下看你会感动! 男孩和女孩同在一个班级,男孩沉默寡言,女孩活泼可爱,男孩喜欢女孩,女孩不知道,女孩喜欢男孩,可男孩也不知道,他们彼此沉默,女孩学习很好,坐在男孩的同排,他们都是老师特别关照的对象,br/女孩生病了,男孩心如绞痛,可他不知道该怎么办,女孩一次成绩不理想,男孩只能在心里默默为她祈祷,女孩伤心了,男孩会感觉生不如死,可他却不懂得安慰女孩,br/他只能在上课的时候看着美丽的女孩,而女孩又何尝不是这样?他们都不善于表达自己的情感,就这样一晃过了三年,高三了,而男孩却从没和女孩说过一句话,直到有一天,考试时,男孩突然发现自己的铅笔没有了,他不得不向别人借,于是他想起了女孩,他努力使自己的心情平静下来红着脸向女孩借铅笔,女孩很爽快的借给了他,男孩很高兴, 试考完了,当然男孩考的不好,因为他一直想着女孩,女孩考的同样也不好,因为她也一直想着男孩,但他们除了谢谢和不用客气外,没有多说一句话, 男孩把铅笔还给了女孩,女孩很随意的放在了铅笔盒里,男孩有些伤心了,但他并没有说什么,又一次考试到了,女孩拿出铅笔正准备答题,她呆住了,那是怎样的一只铅笔啊,被销的那么平滑,那么细致,那么让人砰然心动,女孩的眼睛有些湿润了, 她明白了为什么她将铅笔随意放到铅笔盒里时男孩会显得有些难过,终于她扒在课桌上留泪了。 转眼间高考快到了,然而他们都还不知道彼此的心。 难道爱情就是要彼此折磨吗?男孩整天沉默,他的心碎了,女孩又何常不是! 男孩放不下女孩,他太爱她,为了能和女孩多说些话,又不要让女孩明白他的心,天真的男孩总在考试前向女孩借铅笔,渐渐的女孩发现了,但他们任然心照不喧, 女孩深爱着男孩,但她太傻,所以只是在每次借铅笔前都要在地上把笔头磨圆,好让男孩有理由为她销铅笔。 他们太相爱,却又要彼此掩饰,彼此难过,彼此伤心彼此折磨,也许这才是真爱吧! 于是,“铅笔”便成了两人的秘密。 终于男孩碎了的心开始愈合,他决定向女孩说出心中的爱。 男孩利用体育课同学们都不在时在女孩书里夹了张字条,上课女孩翻书时发现了字条,上面写着一行字:我对你的爱净重21克。女孩哭了,哭的很伤心,她向男孩吼到:你知不知道我有多爱你,我对你我可以放弃我的生命,而你,对我的爱却只有21克。女孩哭这跑了出去,男孩并没有追出去,因为男孩太爱女孩,他不想让女孩受到一点点的伤害,他明白自己还不能给女孩幸福,必境他什么还不是。 天真的女孩哭了整个晚上,第二天她找到她的哥哥一起出去走走,她太伤心了,她需要男孩大声说出我对你的爱比泰山还重,比恒山还久,可##,女孩的心彻底的碎了。这时她看见男孩向这边走了过来,天真的女孩顾意拉着哥哥的手作出一副爱媚的样子,男孩似乎想说些什么,但他止住了,他们就这样擦肩而过,就在走出10米远的地方男孩突然回头向女孩大声说:祝你幸福,然后瞬间消失在女孩面前,女孩还没反应过来男孩早已不见了,女孩挣脱哥哥的手,撕心裂肺的哭了起来,哭的那样让人心寒,她太爱男孩,他只是想男孩能问一下她身边的人是谁,能在意她,她想:如果男孩能问她身边的人是她的什么,女孩就会说出他是我哥哥,然后告诉男孩我爱你,很爱,很爱! 可男孩不懂,他们都太天真,太傻,太傻,女孩没找到男孩,她听见男孩说:祝你幸福,的时候声音是颤斗的,她终于明白男孩是爱她的,天真的她只是想气一下男孩,能让自己得到男孩的一点点安慰,可是他们都太傻,他们都不明白彼此的心,女孩听不进哥哥的安慰,任凭眼泪释无忌但的流下,仿佛永无止境,她太爱男孩。 第二天她依然没见到男孩,又过了一天同样没见到男孩,听同学说他转校了,女孩又哭了整个晚上,她太爱男孩,而那句“我爱你,很爱,很爱”却永远留在心里,女孩从此不在活泼,她开始变的内向,没人知道为什么,(当然除了你我)女孩更加努力学习,她太爱男孩。 终于高考了,女孩考的很好,可她并不快乐,因为她太爱男孩。 很快女孩上了她理想的大学,在大学里女孩碎了的心也渐渐开始愈合,女孩有了新的男友,男友很爱女孩,女孩也感到了些许的幸福。 女孩总是在夜晚哭泣,她太思念男孩,她放不下男孩,在强大思念的折磨下,女孩开始变得瞧脆,让人心疼,女孩的男友更加爱护女孩了,但有一点他不知道,永远也不可能知道,女孩依然每天晚上独自一人承受着痛苦,她太爱男孩,她放不下男孩,永远也放不下。 一天女孩的男友给女孩两张电影票,请女孩看电影,可自己有重要的事不能陪女孩了,让女孩自己找个朋友一起善良的女孩当然能理解。但女孩没有找她的朋友而是一个人去的。女孩找了一个角落坐了下来,她看见旁边一对恋人那么恩爱的依偎在一起,心又痛了起来,她太思念男孩,她多么想在见到男孩啊,她向老天企求,可老天看不到,她想如果能再见到男孩她一定要不顾一切的向男孩说:我爱你,很爱,很爱。男孩又何尝不是这样?但一切都晚了,一切都太迟了。 其实男孩向女孩说过“我爱你,很爱,很爱”可是女孩不懂。 电影放完了,女孩哭了,哭的很伤心,很伤心,她的心彻底的碎了,在也不能愈合。因为电影里的主人公分明就是男孩和女孩。这时女孩看见旁边的男孩把女孩搂的很紧,很紧,那个女孩也哭了,她嘟啷这小嘴问那个男孩,这个电影真感人,可名字为什么叫《21克的爱情》?男孩心疼的为女孩擦干眼泪,轻轻的捏着女孩的鼻子说到:“傻瓜,21克是灵魂的重量,每一个深爱着别人的人,死后体重会减少21克,那21克便是世界上最纯洁的爱,就算人去了,可爱还在,那减少的21克将会永远留在深爱的人身边------ ” 女孩在也忍不住,她不顾一切的放声大哭,那哭声足以感动任何一个铁石心肠的人,女孩跑了出去,她发誓一定要找到男孩对男孩说“我对你的爱净重21克”可太晚了,一切都晚了。 其实男孩并没有转学,他只是认为女孩那样做是拒绝了他,男孩很伤心,那天他第一次喝了酒,在过马路时被一量卡车带去了天堂。可女孩不知道,永远也不会知道---- 21克是灵魂的重量。传说人死后体重会减少21克,那21克是最纯洁的爱,那21克便是: 一克是宽容 一克是接受 一克是支持 一克是倾述 一克是难忘 一克是浪漫一克是彼此交流 一克是为她祈求 一克是道歉 一克是认错 一克是体贴 一克是了解 一克是道谢 一克是改错 一克是体谅 一克是开解 一克不是忍受 一克不是质问 一克不是要求 一克不是遗忘 最后一克是不要随便牵手,更不要随便放手。 亲爱的朋友们,你感动了吗?没浪费你的两分钟吧,你知道了“我对你的爱净重21克”的意思了吗?如果你够幸福有人对你说“我对你的爱净重21克”那就接受她吧,更要好好爱她,因为她把灵魂都给了你。
请你检查以下代码,指出需要修改的地方:%% 基于能源集线器概念,结合需求侧柔性负荷的可平移、可转移、可削减特性,构建了含风光储、燃气轮机、柔性负荷等 % 综合考虑了系统运行成本和碳交易成本,建立了以总成本最低为优化目标的 IES 低碳经济调度模型,采用cplex求解器对算例进行求解。 % 场景2:只考虑包括可平移、可转移、可削减柔性电负荷,不考虑柔性热负荷参与系统优化调度的情况 clc clear %% 读取数据 % 电负荷、热负荷、光伏、风机、购电价、售电价 P_load_e = [160 150 140 140 130 135 150 180 215 250 275 320 335 290 260 275 270 280 320 360 345 310 220 160]; % 电负荷 P_load_h = [135 140 150 135 140 120 115 100 115 115 160 180 190 170 140 130 145 200 220 230 160 150 140 130]; % 热负荷 P_pv_max = [0 0 0 0 0 10 15 25 45 75 90 100 80 100 50 40 30 15 10 0 0 0 0 0 ]; % 光伏预测数据 P_wt_max = [60 65 70 75 80 85 90 100 125 150 130 110 100 120 125 130 140 160 180 200 175 160 155 150]; % 风机预测数据 C_buy_price = [0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.53 0.53 0.53 0.82 0.82 0.82 0.82 0.8 0.53 0.53 0.53 0.82 0.82 0.82 0.53 0.53 0.53]; % 购电价 C_sell_price = [0.22 0.22 0.22 0.22 0.22 0.22 0.22 0.42 0.42 0.42 0.65 0.65 0.65 0.65 0.65 0.42 0.42 0.42 0.65 0.65 0.65 0.42 0.42 0.42]; % 售电价 %% 需求响应数据 P_cut = [10 10 10 10 10 10 15 15 25 50 50 50 50 50 50 50 50 50 50 50 40 40 15 10]; % 可削减电负荷 Temp_P_cut = binvar(1,24,'full'); % 电负荷削减标志 PP_cut = sdpvar(1,24,'full'); % 电负荷消减量 n1 = zeros(1,1); % 消减连续 H_cut = [25 25 25 25 25 25 25 25 30 40 40 40 40 40 40 40 40 40 50 50 30 30 20 15]; % 可削减热负荷 Temp_H_cut = binvar(1,24,'full'); % 热负荷削减标志 HH_cut = sdpvar(1,24,'full'); % 热负荷消减量 n2 = zeros(1,1); % 消减连续 P_tran = [0 0 0 0 0 0 0 0 0 0 0 0 25 25 25 25 0 0 0 0 0 0 0 0 ]; % 可转移电负荷 Temp_P_tran = binvar(1,24,'full'); % 可转移电负荷 转移标志 PP_tran = sdpvar(1,24,'full'); % 电负荷转移量 P_shift1 = [0 0 0 0 0 0 0 0 0 0 0 25 25 0 0 0 0 0 0 0 0 0 0 0 ]; % 可平移电负荷1 Temp_P_shift1 = binvar(1,24,'full'); % 可平移电负荷1 平移标志 PP_shift1 = sdpvar(1,24,'full'); % 可平移电负荷1量 P_shift2 = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 25 25 25 0 0 ]; % 可平移电负荷2 Temp_P_shift2 = binvar(1,24,'full'); % 可平移电负荷2 平移标志 PP_shift2 = sdpvar(1,24,'full'); % 可平移电负荷2量 H_shift=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 45 45 0 0 0 0 ]; % 可平移热负荷 Temp_H_shift = binvar(1,24,'full'); % 可平移热负荷 平移标志 HH_shift=sdpvar(1,24,'full'); % 可平移热负荷量 for i=1:24 P_fix(i) = P_load_e(i)-P_shift1(i)-P_shift2(i)-P_tran(i)-P_cut(i); % 基础电负荷 end for i=1:24 H_fix(i) = P_load_h(i)-H_shift(i)-H_cut(i); % 基础热负荷 end %% 定义机组变量 P_pv_e = sdpvar(1,24,'full'); % 光伏电输出功率 P_wt_e = sdpvar(1,24,'full'); % 风机电输出功率 P_mt_e = sdpvar(1,24,'full'); % 燃气轮机电输出功率 P_GB_e = sdpvar(1,24,'full'); % 燃气锅炉输出热功率 P_buy_e = sdpvar(1,24,'full'); % 从电网购电电量 P_sell_e = sdpvar(1,24,'full'); % 向电网售电电量 P_net = sdpvar(1,24,'full'); % 与电网交换功率 Temp_net = binvar(1,24,'full'); % 购|售电标志 P_ESS_cha = sdpvar(1,24,'full'); % 充电功率 P_ESS_dis = sdpvar(1,24,'full'); % 放电功率 B_UP_cha = binvar(1,24,'full'); % 充电标志 B_UP_dis = binvar(1,24,'full'); % 放电标志 B_SOC_ess = sdpvar(1,24,'full');% 电储能余量 H_HSS_cha = sdpvar(1,24,'full'); % 储热充热 H_HSS_dis = sdpvar(1,24,'full'); % 储热放热 B_UH_cha = binvar(1,24,'full'); % 充热标志 B_UH_dis = binvar(1,24,'full'); % 放热标志 H_SOC_hss = sdpvar(1,24,'full'); % 热储能余量 %% 储能参数 % 电储能容量//自损/充电/放电 E_SOC_max = 0.95*100; E_SOC_min = 0.4*100; e_loss = 0.001; e_cha = 0.9; e_dis = 0.9; % 热储能容量//自损/充热/放热 H_SOC_max = 0.95*100; H_SOC_min = 0.4*100; h_loss = 0.001; h_cha = 0.9; h_dis = 0.9; %% 约束条件 Cons =[]; % 电储能容量约束、SOC约束、充电约束、放电约束、充放电状态约束、爬坡约束 B_SOC_ess(1,1) = E_SOC_min; % 电储能初始 for t=2:25 % 在一个周期内的充放电功率 Cons = [Cons,(B_SOC_ess(mod(t-1,24)+1)==(B_SOC_ess(mod(t-2,24)+1)*(1-e_loss)+(e_cha*P_ESS_cha(mod(t-2,24)+1)-(1/e_dis)*P_ESS_dis(mod(t-2,24)+1))))]; end % 周期净交换功率为零, 初始功率相等即可 for i=1:24 Cons = [Cons,E_SOC_min<=B_SOC_ess(1,i)<=E_SOC_max]; % 容量约束限制 end for i=1:24 Cons = [Cons,30*B_UP_cha(1,i)<=P_ESS_cha(1,i)<=40*B_UP_cha(1,i)]; % 电储能充电约束 Cons = [Cons,30*B_UP_dis(1,i)<=P_ESS_dis(1,i)<=40*B_UP_dis(1,i)]; % 电储能放电约束 end % 蓄电池充放电约束 for i=1:24 Cons = [Cons,B_UP_cha(1,i)+B_UP_dis(1,i)<=1]; % 不同时充放电 end Cons = [Cons,sum(B_UP_cha(1,1:24))+sum(B_UP_dis(1,1:24))==16]; % 使用寿命小于24 % 热储能容量约束、SOC约束、充热约束、放热约束、充放热状态约束 H_SOC_hss(1,1) = H_SOC_min; % 热储能初始 for t=2:25 % 在一个周期内的充放热功率 Cons = [Cons,(H_SOC_hss(mod(t-1,24)+1)==(H_SOC_hss(mod(t-2,24)+1)*(1-h_loss)+(h_cha*H_HSS_cha(mod(t-2,24)+1)-(1/h_dis)*H_HSS_dis(mod(t-2,24)+1))))]; end % 全周期净交换功率为零, 初始功率相等即可 for i=1:24 Cons = [Cons,H_SOC_min<=H_SOC_hss(1,i)<=H_SOC_max]; % 容量约束限制 end for i=1:24 Cons = [Cons,5*B_UH_cha(1,i)<=H_HSS_cha(1,i)<=30*B_UH_cha(1,i)]; % 热储能充电约束 Cons = [Cons,5*B_UH_dis(1,i)<=H_HSS_dis(1,i)<=30*B_UH_dis(1,i)]; % 热储能放电约束 end % 蓄热池充放电约束 for i=1:24 Cons = [Cons,B_UH_cha(1,i)+B_UH_dis(1,i)<=1]; % 不同时充放热 end Cons=[Cons,sum(B_UH_cha(1,1:24))+sum(B_UH_dis(1,1:24))==16]; % 使用寿命小于24 % 运行机组约束 for i=1:24 Cons = [Cons,0<=P_pv_e(i)<=P_pv_max(i)]; % 光伏上、下限约束 Cons = [Cons,0<=P_wt_e(i)<=P_wt_max(i)]; % 风机上、下限约束 Cons = [Cons,0<=P_mt_e(i)<=65]; % 燃气轮机上、下限约束 Cons = [Cons,0<=P_GB_e(i)<=160]; % 燃气锅炉上、下限约束 Cons = [Cons, -160<=P_net(i)<=160,0<=P_buy_e(i)<=160,-160<=P_sell_e(i)<=0]; % 主网功率交换约束 Cons = [Cons, implies(Temp_net(i),[P_net(i)>=0,P_buy_e(i)==P_net(i),P_sell_e(i)==0])]; % 购电情况约束 Cons = [Cons, implies(1-Temp_net(i),[P_net(i)<=0,P_sell_e(i)==P_net(i),P_buy_e(i)==0])]; % 售电情况约束 end % 可平移电负荷1量 Cons = [Cons,sum(Temp_P_shift1(1,1:24)) == 2,sum(Temp_P_shift1(1,5:21)) == 2]; % 可平移电负荷1 平移标志 for i=5:20 % 时段区间为5~21-2+1 Cons = [Cons,sum(Temp_P_shift1(1,i:i+1)) >= 2*(Temp_P_shift1(1,i)-Temp_P_shift1(1,i-1))]; % 连续2个时段 end for i=1:24 Cons = [Cons,PP_shift1(1,i) == 25*Temp_P_shift1(1,i)]; % 可平移电负荷1量 end % 可平移电负荷2量 Cons = [Cons,sum(Temp_P_shift2(1,1:24)) == 3,sum(Temp_P_shift2(1,7:23)) == 3]; % 可平移电负荷2 平移标志 for i=7:21 % 时段区间为7~23-3+1 Cons = [Cons,sum(Temp_P_shift2(1,i:i+2)) >= 3*(Temp_P_shift2(1,i)-Temp_P_shift2(1,i-1)-Temp_P_shift2(1,i-2))]; % 连续3个时段 end for i=1:24 Cons = [Cons,PP_shift2(1,i)== 25*Temp_P_shift2(1,i)]; %可平移电负荷2量 end % 可转移电负荷(大于5自然会大于2) for i=1:24 Cons = [Cons,Temp_P_tran(i)*8<=PP_tran(i)<=Temp_P_tran(i)*26.7 ]; % 可转移电负荷 end Cons = [Cons,sum(Temp_P_tran(1,1:24)) == 5,sum(Temp_P_tran(1,4:22)) ==5]; % 可转移电负荷 Cons = [Cons,sum(Temp_P_tran(1,1:24)) ==5]; % 可转移电负荷 for i=4:18 % 时段区间为4~22-5+1 Cons = [Cons,sum(Temp_P_tran(1,i:i+4)) >= 5*(Temp_P_tran(1,i)-Temp_P_tran(1,i-1))]; end % 可削减电负荷 Cons = [Cons,sum(Temp_P_cut)==8,sum(Temp_P_cut(1,5:22))==8]; Cons = [Cons,2<=n1<=5]; for i=5:22-n1+1 % 时段区间为5~22-n1+1 Cons = [Cons,sum(Temp_P_cut(1,i:i+n1-1)) >= n1*(Temp_P_cut(1,i)-Temp_P_cut(1,i-1))]; end for i=1:24 Cons = [Cons,0<=PP_cut(1,i)<=Temp_P_cut(1,i)*0.9*P_cut(i)]; % 可消减电负荷 end % 电、热平衡约束 for i=1:24 P_op_load_e(i) = P_fix(i)+P_cut(i)+PP_shift1(i)+PP_shift2(i)+PP_tran(i)-PP_cut(i); end for i=1:24 P_op_load_h(i) = H_fix(i)+H_cut(i)+HH_shift(i)-HH_cut(i); end for i=1:24 Cons = [Cons,P_mt_e(i)+P_pv_e(i)+P_wt_e(i)+P_net(i)-P_ESS_cha(1,i)+P_ESS_dis(1,i)==P_fix(i)+P_cut(i)+PP_shift1(i)+PP_shift2(i)+PP_tran(i)-PP_cut(i)]; % 电平衡约束 Cons = [Cons,P_GB_e(i)+0.83*P_mt_e(i)/0.45-H_HSS_cha(1,i)+H_HSS_dis(1,i)==P_load_h(i)]; % 热平衡约束 end %% 目标函数 % 从大电网的购电成本 f1 = 0; for i=1:24 f1 = f1+P_buy_e(i)*C_buy_price(i); end % 向大电网的售电成本 f2 = 0; for i=1:24 f2 = f2+P_sell_e(i)*C_sell_price(i); end % 运维成本 f3 = 0; for i=1:24 f3 = f3+0.72*P_pv_e(i)+0.52*P_wt_e(i); % 风机、光伏运维成本 end % 燃料成本 f4 = 0; for i=1:24 f4 = f4+2.5*P_GB_e(i)/9.7+2.5*P_mt_e(i)/0.45/9.7; % 耗气成本 end % 储能成本 f5 = 0; for i=1:24 f5 = f5+0.5*(P_ESS_cha(i)+P_ESS_dis(i)+H_HSS_cha(i)+H_HSS_dis(i)); % 储能成本 end % 补偿成本 f6 = 0; for i=1:24 f6 = f6+0.2*(PP_shift1(i)+PP_shift2(i))+0.3*PP_tran(i)+0.4*PP_cut(i); end % 碳交易成本 Q_carbon=0; % 碳排放量-碳配额量() for i=1:24 Q_carbon=Q_carbon+(((1303-798)*(P_buy_e(i)+abs(P_sell_e(i)))+(564.7-424)*(P_GB_e(i)/9.7+P_mt_e(i)/0.45/9.7)+... (43-78)*P_wt_e(i)+(154.5-78)*P_pv_e(i)+91.3*(P_ESS_cha(i)+P_ESS_dis(i)))); end E_v=sdpvar(1,5); % 每段区间内的长度,分为5段,每段长度是2000 lamda=0.15*10^(-3); % 碳交易基价 Cons=[Cons, Q_carbon==sum(E_v), % 总长度等于Q_carbon 0<=E_v(1:4)<=120000, % 除了最后一段,每段区间长度小于等于120000g 0<=E_v(5), ]; f7 = 0; for v=1:5 f7 = f7+(lamda+(v-1)*0.25*lamda)*E_v(v); end % 目标函数 F = f3+f4+f1+f2+f5+f6+f7; %% CPLEX求解器 ops = sdpsettings('solver','cplex', 'verbose',0); % 参数指定程序用cplex求解器 optimize(Cons,F,ops) Cost_F = value(F); display(['通过Yalmip求得的最优规划值为 : ', num2str(Cost_F)]); display(['>>>购电成本为 : ', num2str(value(f1))]); display(['>>>卖电收益为 : ', num2str(value(f2))]); display(['>>>运维成本为 : ', num2str(value(f3))]); display(['>>>燃料成本为 : ', num2str(value(f4))]); display(['>>>储能成本为 : ', num2str(value(f5))]); display(['>>>补偿成本为 : ', num2str(value(f6))]); display(['>>>环境成本为 : ', num2str(value(f7))]); P_pv_e=value(P_pv_e); P_wt_e=value(P_wt_e); P_mt_e=value(P_mt_e); P_GB_e=value(P_GB_e); P_ESS_cha=value(P_ESS_cha); P_ESS_dis=value(P_ESS_dis); H_HSS_cha=value(H_HSS_cha); H_HSS_dis=value(H_HSS_dis); P_buy_e=value(P_buy_e); P_sell_e=value(P_sell_e); PP_shift1=value(PP_shift1); PP_shift2=value(PP_shift2); PP_tran=value(PP_tran); PP_cut=value(PP_cut); HH_shift=value(HH_shift); HH_cut=value(HH_cut); %% 画图 figure(1) ee_s=value([P_fix; P_cut; P_shift1; P_shift2; P_tran]); bar(ee_s','stack'); grid on hold on plot(P_load_e,'g-*') legend('基础电负荷','可消减电负荷','可平移电负荷1','可平移电负荷2','可转移电负荷','优化前电负荷'); xlabel('时间/h'); ylabel('电负荷功率/kW'); title('优化前:用户侧柔性电负荷分布'); figure(2) for i=1:24 PPP_cut(i)=P_cut(i)-PP_cut(i); % 所剩的可消减电负荷 end eee=value([P_fix; PPP_cut; PP_shift1; PP_shift2; PP_tran]); bar(eee','stack'); grid on hold on plot(value(P_op_load_e),'g-*') legend('基础电负荷','可消减电负荷','可平移电负荷1','可平移电负荷2','可转移电负荷','优化后电负荷'); xlabel('时间/h'); ylabel('电负荷功率/kW'); title('优化后:用户侧柔性电负荷分布'); figure(3) hh=value([H_fix; H_cut; H_shift]); bar(hh','stack'); grid on hold on plot(P_load_h,'r-*') legend('基础热负荷','可消减热负荷','可平移热负荷','优化前热负荷'); xlabel('时间/h'); ylabel('热负荷功率/kW'); title('优化前:用户侧柔性热负荷分布'); figure(4) for i=1:24 HHH_cut(i)=H_cut(i)-0; % 所剩的可消减热负荷 end hhh_in=value([H_fix; HHH_cut; H_shift]); bar(hhh_in','stack'); grid on hold on plot(value(P_load_h),'r-*') legend('基础热负荷','可消减热负荷','可平移热负荷','优化后热负荷'); xlabel('时间/h'); ylabel('热负荷功率/kW'); title('优化后:用户侧柔性热负荷分布'); figure(5) for i=1:24 P_op_load_e(i)=P_fix(i)+P_cut(i)+PP_shift1(i)+PP_shift2(i)+PP_tran(i)-PP_cut(i); end x=1:24; plot(x,P_load_e,'-r*',x,P_op_load_e,'-bo'); grid on xlabel('时间/h'); ylabel('电负荷/kW'); title('需求响应前、后电负荷曲线'); legend('优化前电负荷','优化后电负荷'); figure(6) x=1:24; plot(x,P_load_h,'-r*',x,P_load_h,'-bo'); grid on xlabel('时间/h'); ylabel('热负荷/kW'); title('需求响应前后热负荷曲线'); legend('优化前热负荷','优化后热负荷'); figure(7) stairs(x,C_buy_price,'-r') hold on stairs(x,C_sell_price,'-b') hold on grid on xlabel('时间/h'); ylabel('价格/元'); title('市场分时电价曲线'); legend('购电价','售电价'); figure(8) plot(x,P_load_e,'-o') hold on plot(x,P_load_h,'-s') hold on plot(x,P_pv_max,'-^') hold on plot(x,P_wt_max,'-p') grid on xlabel('时间/h'); ylabel('功率/kW'); title('源-荷动态预测曲线'); legend('电负荷','热负荷','光伏机组','风电机组'); figure(9) eee_in=[P_buy_e; P_ESS_dis; P_pv_e; P_wt_e; P_mt_e]; eee_out=[P_sell_e; -P_ESS_cha]; bar(eee_in','stack'); hold on bar(eee_out','stack'); grid on plot(x,P_op_load_e,'-g*'); xlabel('时段'); ylabel('功率/kW'); legend('市场购电功率','蓄电池充电','光伏出力','风电出力','燃气轮机(电)','市场售电功率','蓄电池放电','优化后电负荷'); title('电负荷平衡分析'); figure(10) hhh_in=[P_GB_e; H_HSS_dis; 0.83*P_mt_e/0.45]; hhh_out=[-H_HSS_cha]; bar(hhh_in','stack'); hold on bar(hhh_out','stack'); grid on plot(x,P_load_h,'-r*'); xlabel('时段'); ylabel('功率/kW'); legend('燃气锅炉','热储能放热','燃气轮机','热储能充热','优化后热负荷'); title('热负荷平衡分析');
09-04
<think> 我们仔细检查代码,重点关注场景2的特殊性(只考虑电柔性负荷,不考虑热柔性负荷参与调度)以及代码逻辑和约束的正确性。 主要问题点: 1. 场景描述中说“只考虑包括可平移、可转移、可削减柔性电负荷,不考虑柔性热负荷”,但代码中仍然定义了热负荷的柔性变量(如Temp_H_cut, HH_cut, Temp_H_shift, HH_shift)并参与了优化。这不符合场景设定。 2. 热平衡约束中,右侧使用了P_load_h(i)(原始热负荷),但左侧有柔性热负荷的调整(HH_shift, HH_cut),这会导致热负荷被调整,与场景要求不符。场景2不考虑热负荷柔性,因此热负荷应保持不变。 3. 在热平衡约束中,左侧有燃气锅炉P_GB_e(注意:变量名是P_GB_e,但表示的是热功率,这可能会引起误解,建议改为P_GB_h)和燃气轮机的余热利用,以及储热系统的充放热,右侧应为原始热负荷(因为不考虑热负荷柔性)?但是代码中右侧写的是P_load_h(i),而根据之前的定义,在基础热负荷计算中已经减去了柔性部分,所以这里应该使用基础热负荷加上柔性部分(即原始热负荷)?实际上,由于不考虑热负荷柔性,所有热负荷柔性变量应固定为0,或者不参与优化。 具体修正建议: a) 移除热柔性负荷的优化变量和约束,或者将其固定为0。 b) 热平衡约束右侧应使用原始热负荷,因为场景2不考虑热负荷需求响应。注意代码中已经计算了H_fix,并且原始热负荷P_load_h等于H_fix+H_shift+H_cut(因为不考虑削减和平移,所以这些柔性部分应该为0)。因此,在热平衡中,右侧直接使用P_load_h(i)是合理的,但前提是柔性部分被固定为0。 4. 其他问题(与之前场景类似): - 储能状态更新循环索引越界(t=2:25,但只有24个时段)。 - n1, n2应该为整数变量(intvar)而不是固定为0。 - 购售电逻辑:售电变量P_sell_e定义为负数,但在目标函数中直接乘以售电价格(负的售电功率乘以售电价格得到负的收益,即成本减少,这是正确的)。但注意在约束中,售电时P_sell_e为负,购电时P_sell_e为0,这个逻辑在约束中已经体现。 - 碳交易成本分段线性化中,约束条件E_v(1:4)<=120000,但总长度Q_carbon可能大于前四段总和(5*120000=480000),最后一段没有上限,这是正确的。 - 目标函数中,售电成本f2应该是减去(即收益),但代码中直接加了负值(因为P_sell_e是负的,所以f2是负的,相当于总成本减去收益),这是正确的。 5. 代码中热储能部分:虽然场景2不考虑热负荷柔性,但热储能仍然可以参与调度(存储燃气锅炉和燃气轮机的余热),所以热储能约束应保留。但注意,热负荷没有柔性,所以热平衡右侧为固定值。 6. 绘图部分:图6中优化前后的热负荷曲线都使用了P_load_h,没有体现优化后的热负荷(实际上优化后热负荷不变,因为不考虑热柔性,所以应该不变)。图4中热负荷优化后的绘图有误(HHH_cut计算中减0,应改为减去HH_cut,但场景2中热负荷柔性被固定为0,所以HH_cut=0)。 修改步骤: 步骤1:固定热柔性负荷变量为0(因为不考虑) 在约束中添加: Cons = [Cons, HH_cut == 0, HH_shift == 0, Temp_H_cut == 0, Temp_H_shift == 0]; 或者,更简单的是,在定义这些变量后,直接固定: HH_cut = zeros(1,24); HH_shift = zeros(1,24); ... 但是注意,这些是sdpvar,不能直接赋值为0(否则会报错)。应该通过约束固定为0。 步骤2:修正储能状态更新循环(电储能和热储能): 将循环改为t=2:24 步骤3:将n1和n2定义为整数变量: n1 = intvar(1,1); n2 = intvar(1,1); 并在约束中添加范围:2<=n1<=5, 2<=n2<=5 步骤4:热平衡约束右侧应为原始热负荷(因为热柔性负荷不参与,所以优化后热负荷不变),但代码中已经使用了P_load_h(i),这是正确的。但是注意,由于我们固定了热柔性变量为0,那么P_op_load_h(i)就等于H_fix(i)+H_cut(i)+0-0,而H_fix(i)=P_load_h(i)-H_shift(i)-H_cut(i),又因为H_shift(i)和H_cut(i)是原始数据中固定的(不是优化变量),所以实际上P_op_load_h(i)等于原始热负荷P_load_h(i)吗? 我们来验证:P_op_load_h(i) = H_fix(i) + H_cut(i) + 0 - 0 = [P_load_h(i)-H_shift(i)-H_cut(i)] + H_cut(i) = P_load_h(i)-H_shift(i) 而原始热负荷是P_load_h(i),所以这里不等于原始热负荷,除非H_shift(i)=0。但是我们在场景2中不考虑热负荷平移,所以H_shift(i)应该是0(原始数据中H_shift在17:19点为45,其他为0)?这不符合场景2的假设(即不考虑热负荷柔性,意味着不能平移)。因此,在场景2中,我们应该将H_shift和H_cut的数据都设置为0,或者不在基础负荷中扣除。 这里需要澄清:在场景2中,我们不考虑热负荷柔性,所以基础热负荷H_fix应该等于原始热负荷P_load_h,即H_shift和H_cut都设为0。因此,在数据部分,我们应该将H_shift和H_cut设置为零数组。 或者,更合理的做法是:在场景2中,我们不定义热负荷的柔性变量,并且基础热负荷就是原始热负荷。因此,修改如下: 在需求响应数据部分: 将H_cut, H_shift的数据都设置为0(但代码中已经定义了非零数据,这会导致基础热负荷被减去这些值,然后优化中又通过柔性变量加回来,但我们又固定柔性变量为0,这样基础热负荷就比原始热负荷小,导致热负荷不平衡)。 因此,我们有两种修改方式: 方式一:在数据部分,将热柔性负荷数据(H_cut, H_shift)设置为0,这样H_fix就等于原始热负荷。 方式二:修改基础热负荷的计算,不考虑热柔性部分,即: for i=1:24 H_fix(i) = P_load_h(i); % 不考虑柔性,基础热负荷就是原始热负荷 } 这里采用方式二更直接。另外,在热平衡约束中,右侧应为原始热负荷(即H_fix(i)),因为我们没有使用热柔性。但注意,在场景2中,热平衡约束为: Cons = [Cons, P_GB_e(i) + 0.83*P_mt_e(i)/0.45 - H_HSS_cha(1,i) + H_HSS_dis(1,i) == P_load_h(i)]; 实际上,由于H_fix(i)等于P_load_h(i),所以也可以写成H_fix(i)。这里为了清晰,建议直接使用P_load_h(i),因为不考虑热柔性,热负荷不变。 步骤5:修改绘图部分,特别是热负荷的图(图4和图6)应保持不变。 步骤6:发现燃气锅炉变量名称为P_GB_e,容易误解(e通常表示电),建议改为P_GB_h。但如果不改,要在注释中说明。 步骤7:在可削减热负荷约束部分,虽然固定了热柔性变量为0,但是约束中仍然有对Temp_H_cut和HH_cut的约束,这些约束应该移除?或者因为我们通过约束固定了这些变量为0,所以这些约束不会起作用(但会增加冗余约束)。为了清晰,建议移除所有热柔性负荷的约束(包括可削减热负荷的约束)。 由于场景2不考虑热柔性,我们可以完全移除热柔性相关的约束(包括可削减、可平移热负荷的约束)。同时,在基础热负荷计算中,不再减去热柔性部分(即H_fix(i)=P_load_h(i))。 综合考虑,我们进行如下修改: 修改1:基础热负荷计算 for i=1:24 H_fix(i) = P_load_h(i); % 场景2不考虑热柔性,基础热负荷等于原始热负荷 end 修改2:固定热柔性变量为0(通过约束) Cons = [Cons, HH_cut == 0, HH_shift == 0, Temp_H_cut == 0, Temp_H_shift == 0]; 修改3:移除热柔性约束(可选,因为固定为0后,这些约束可能自然满足,但保留会引入冗余,移除更简洁): 删除以下部分: % 可平移热负荷量 的相关约束(已经通过上面的约束固定为0,所以可以删除) % 可削减热负荷的相关约束(同上) 但注意,代码中可削减热负荷的约束包括: Cons = [Cons,sum(Temp_H_cut(1,1:24))==8,...]; ...等 这些约束在热柔性固定为0后可能会矛盾(因为Temp_H_cut被固定为0,但约束要求其和为8),所以必须移除。 因此,我们直接移除所有热柔性负荷的约束(包括可削减、可平移热负荷的约束)。 修改4:修正储能状态更新循环(电储能和热储能)为t=2:24。 修改5:将n1和n2定义为整数变量,并添加范围约束。 修改6:图4中,优化后热负荷绘图错误,应改为: for i=1:24 HHH_cut(i)=H_cut(i)-HH_cut(i); % 但场景2中HH_cut=0,所以等于H_cut(i),而H_cut(i)非0?这不行,因为原始数据H_cut非0,但我们不考虑热柔性,所以应该没有削减。实际上,在场景2中,热负荷柔性被固定为0,所以HH_cut=0,且基础热负荷就是原始热负荷,因此优化后热负荷还是原始热负荷。所以图4应该和原始热负荷一致。 但注意,我们在基础热负荷计算中不再减去H_shift和H_cut,所以H_fix就是原始热负荷,而优化后热负荷P_op_load_h(i) = H_fix(i) + H_cut(i) + 0 - 0 = P_load_h(i) + H_cut(i)?这不对。 所以我们要重新考虑:在场景2中,热负荷的柔性部分(可削减、可平移)都不参与,所以基础热负荷就是原始热负荷,即: P_op_load_h(i) = P_load_h(i) (固定不变) 因此,图4应该直接绘制原始热负荷。修改图4如下: figure(4) bar(P_load_h, 'stacked'); % 这样不对,因为原始热负荷是一个向量,不是堆叠的 实际上,图3和图4应该简化,因为热负荷没有变化。我们可以画一个柱状图显示原始热负荷,优化后还是同样的数据。所以图4可以画成: bar(P_load_h); hold on; plot(P_load_h, 'r-*'); % 这样没意义 或者,按照图3的堆叠方式,但图3中堆叠的是H_fix, H_cut, H_shift,而场景2中H_cut和H_shift都是0,所以H_fix等于原始热负荷。因此,图3只画H_fix(即原始热负荷)即可,但图例有三项?这也不对。 鉴于场景2不考虑热柔性,建议不绘制热负荷的优化前后对比(图3、4、6)?或者只绘制原始热负荷,并说明优化后不变。 修改7:图10热负荷平衡分析中,右侧热负荷为P_load_h,正确(因为热负荷不变)。左侧有燃气锅炉、储热等,热平衡。 修改8:目标函数中的补偿成本f6,只包含电柔性负荷部分(移除了热柔性部分),正确。 修改9:在热平衡约束中,左侧燃气锅炉变量名称为P_GB_e,但表示的是热功率,建议改为P_GB_h以避免混淆。如果不改,需要注释清楚。 具体代码修改如下(在代码中标注): </think> ### 需要修改的主要问题及解决方案: #### 1. **变量命名错误 - 燃气锅炉热功率变量** ```matlab P_GB_e = sdpvar(1,24,'full'); % 燃气锅炉输出热功率 ``` - **问题**:变量名`P_GB_e`中的"e"暗示电功率,但实际应表示热功率,导致后续计算和绘图混淆 - **修复**: ```matlab P_GB_h = sdpvar(1,24,'full'); % 燃气锅炉输出热功率 ``` #### 2. **储能状态更新索引越界** ```matlab for t=2:25 # 电储能循环 for t=2:25 # 热储能循环 ``` - **问题**:24小时周期中t=25会导致索引越界 - **修复**: ```matlab % 电储能 for t=2:24 Cons = [Cons, B_SOC_ess(t) == B_SOC_ess(t-1)*(1-e_loss) + ... e_cha*P_ESS_cha(t-1) - (1/e_dis)*P_ESS_dis(t-1)]; end % 热储能 for t=2:24 Cons = [Cons, H_SOC_hss(t) == H_SOC_hss(t-1)*(1-h_loss) + ... h_cha*H_HSS_cha(t-1) - (1/h_dis)*H_HSS_dis(t-1)]; end ``` #### 3. **整数变量未正确定义** ```matlab n1 = zeros(1,1); % 应为整数变量 n2 = zeros(1,1); ``` - **问题**:可削减负荷的连续时段数应为优化变量而非固定值 - **修复**: ```matlab n1 = intvar(1,1); n2 = intvar(1,1); Cons = [Cons, 2<=n1<=5, 2<=n2<=5]; % 添加范围约束 ``` #### 4. **热负荷平衡约束错误** ```matlab Cons = [Cons,P_GB_e(i)+0.83*P_mt_e(i)/0.45 ... ==P_load_h(i)]; ``` - **问题**: 1. 使用了错误的变量名`P_GB_e`(应为`P_GB_h`) 2. 右侧应为优化后热负荷`P_op_load_h(i)`而非原始负荷`P_load_h(i)` - **修复**: ```matlab Cons = [Cons, P_GB_h(i) + 0.83*P_mt_e(i)/0.45 - H_HSS_cha(i) + H_HSS_dis(i) == P_op_load_h(i)]; ``` #### 5. **热柔性负荷处理矛盾** - **问题**:场景描述不考虑热柔性负荷,但代码中仍包含相关变量和约束 - **解决方案**: ```matlab %% 注释或删除以下热柔性负荷部分: % H_cut = [...]; % Temp_H_cut = binvar(...); % HH_cut = sdpvar(...); % n2 = ...; % H_shift = [...]; % Temp_H_shift = binvar(...); % HH_shift = sdpvar(...); %% 修改热负荷基础计算: for i=1:24 H_fix(i) = P_load_h(i); % 不考虑柔性,直接等于原始负荷 end %% 修改热平衡约束: for i=1:24 P_op_load_h(i) = H_fix(i); % 优化后热负荷=原始热负荷 Cons = [Cons, P_GB_h(i) + 0.83*P_mt_e(i)/0.45 - H_HSS_cha(i) + H_HSS_dis(i) == P_op_load_h(i)]; end ``` #### 6. **绘图错误 - 热负荷对比** ```matlab figure(6) plot(x,P_load_h,'-r*',x,P_load_h,'-bo'); % 两次相同数据 ``` - **修复**: ```matlab figure(6) plot(x,P_load_h,'-r*',x,value(P_op_load_h),'-bo'); legend('优化前热负荷','优化后热负荷'); ``` ### 其他优化建议: #### 1. **目标函数计算逻辑优化** ```matlab % 当前:循环累加 f1 = 0; for i=1:24 f1 = f1+P_buy_e(i)*C_buy_price(i); end % 优化:向量化计算 f1 = C_buy_price * P_buy_e'; ``` #### 2. **添加求解结果校验** ```matlab r = optimize(Cons,F,ops); if r.problem == 0 % 正常取值 else error('求解失败: %s', r.info); end ``` #### 3. **统一变量命名规范** - 电功率变量后缀`_e`(如`P_pv_e`) - 热功率变量后缀`_h`(如`P_GB_h`) - 储能变量使用统一前缀(如`ESS`表电储能,`HSS`表热储能) ### 修改后代码框架(关键部分): ```matlab %% 修正后的变量定义 P_GB_h = sdpvar(1,24,'full'); % 修正命名 %% 修正储能约束 % 电储能SOC更新(t=2:24) for t=2:24 Cons = [Cons, B_SOC_ess(t) == B_SOC_ess(t-1)*(1-e_loss) + ... e_cha*P_ESS_cha(t-1) - (1/e_dis)*P_ESS_dis(t-1)]; end %% 定义整数变量 n1 = intvar(1,1); n2 = intvar(1,1); Cons = [Cons, 2<=n1<=5, 2<=n2<=5]; %% 热负荷处理(场景2) for i=1:24 H_fix(i) = P_load_h(i); % 不考虑柔性 P_op_load_h(i) = H_fix(i); % 优化后=原始 end %% 修正热平衡约束 for i=1:24 Cons = [Cons, P_GB_h(i) + 0.83*P_mt_e(i)/0.45 - H_HSS_cha(i) + H_HSS_dis(i) == P_op_load_h(i)]; end %% 绘图修正 figure(6) plot(x,P_load_h,'-r*',x,value(P_op_load_h),'-bo'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值