qin
2024-09-28 e358beb08f5be49703009b64f058ecfbcfeefbd9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
SQLite format 3@   7N/E 7.WHû    û &ç&5%ž11GlobalConfig{"ModelFilePath":"D:\\Desktop\\D_Production\\工具项目\\水力试算软件\\bin\\Debug\\model\\anytown_test2023.inp","ModelObjectID":"simulate","ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[],"PrintScreenDelayTime":2,"ISencryption":false,"ShowTaskBar":true,"ExtJson":"{\"ChildSolutionArr\":[],\"TimeStep\":0,\"TimeDuration\":0,\"PeriodCount\":0,\"populationNum\":1000,\"iterationNum\":2,\"populationNum_full\":1,\"iterationNum_full\":1,\"iterationNum_Min\":1,\"MaxThread\":4,\"MultiTimes\":0,\"ShowOnlyBest\":false,\"是否优选方案\":true,\"启用数据库存储\":false,\"启用内存存储\":false,\"是否新版本保存\":false,\"是否新版本读取\":false,\"是否枚举\":false,\"isWaterModelCalc\":false,\"isQualityCalc\":false,\"显示详细日志\":true,\"输出运行情况\":false,\"自动发送指令\":false,\"OrderUrl\":\"\",\"AlarmUrl\":\"\",\"方案择优\":false,\"waterdistribute\":false,\"wa>%Style7界面主题˜
æïæ    Style%GlobalConfig  •ãĦ•!RemoteHost_=_RemoteHost_old_202106205A_RemoteHost_old_20210616_1=_RemoteHost_old_20210616  ?Ï’í‚|AA…table_RemoteHost_old_20210616_1_RemoteHost_old_20210616_1CREATE TABLE "_RemoteHost_old_20210616_1" (
  "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  "Name" TEXT,
  "CalcType" TEXT,
  "IndicatorType" TEXT,
  "ModelObjectID" TEXT,
  "Sort" integer,
  "ExpressionType" INTEGER,
  "ParentId" INTEGER,
  "Expression" TEXT,
  "ExtJson" TEXT NOT NULL DEFAULT ''
)‚X==„Ctable_RemoteHost_old_20210616_RemoteHost_old_20210616CREATE TABLE "_RemoteHost_old_20210616" (
  "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  "Name" TEXT,
  "Address" TEXT,
  "Port" TEXT,
  "User" TEXT,
  "Pwd" TEXT,
  "Sort" INTEGER,
  "ParentId" INTEGER,
  "RemoteProgram" TEXT,
  "ExtJson" TEXT NOT NULL DEFAULT ''
)P++Ytablesqlite_sequencesqlite_sequenceCREATE TABLE sqlite_sequence(name,seq) mtableMyConfigMyConfigCREATE TABLE "MyConfig" (
  "FKey" TEXT NOT NULL,
  "FValue" TEXT,
  "FNote" TEXT,
  PRIMARY KEY ("FKey")
)/Cindexsqlite_autoindex_MyConfig_1MyConfigö ûöñ§(¡?܁     )%    2#出水压力试算参数压力67108866∈5.39,9.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} )%    1#进水压力约束条件压力134217732∈ 5.39,9.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}} )%2#进水流量已知条件用水量134217731= 0{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} )%    1#进水压力目标函数压力134217732接近 7.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} )%1#进水流量已知条件用水量134217732= 3032.69{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} % 长兴水厂水厂
)%a %   ——已知条件{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}   说明 )%    !1#出水压力试算参数压力67108865∈7.82,11.82{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}% %% 长兴泵ç1 
 /¯¯¤§‚}==… table_RemoteHost_old_20210620_RemoteHost_old_20210620CREATE TABLE "_RemoteHost_old_20210620" (
  "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  "Name" TEXT,
  "CalcType" TEXT,
  "IndicatorType" TEXT,
  "ModelObjectID" TEXT,
  "Sort" integer,
  "ExpressionType" text,
  "ParentId" INTEGER,
  "Expression" TEXT,
  "ExtJson" TEXT NOT NULL DEFAULT ''
, VPN BLOB)u‚Y!!„}tableRemoteHostRemoteHost CREATE TABLE "RemoteHost" (
  "Id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  "Name" TEXT,
  "LogicType" TEXT,
  "IndicatorType" TEXT,
  "ModelObjectID" TEXT,
  "Sort" integer,
  "ExpressionType" text,
  "ParentId" INTEGER,
  "Expression" TEXT,
  "ExtJson" TEXT NOT NULL DEFAULT '',
  "VPN" BLOB
) ¡¿S²,§(?Ӂ     )%    2#出水压力试算参数压力67108866∈5.39,9.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}æ)%    1#进水压力% %% 长兴泵站取水泵站Óÿÿÿÿÿÿ   说æÿÿÿÿÿÿÿÿÿ % 说明取水泵站} )%2#进水流量已知条件用水量134217731= 0{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} )%    1#进水压力目标函数压力134217732接近 7.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} )%1#进水流量已知条件用水量134217732= 3032.69{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} %     长兴水厂水厂ـ+%   已知的内容已知条件{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}   说明 )%    !1#出水压力试算参数压力67108865∈7.82,11.82{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}'%% 长兴泵站取水泵站- ßIó[ÈIvzì} A% 自动试算的自
变量试算参数∈ÿ40,50{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} e% 自动筛选去除
不满足约束的结果约束条件∈ÿ20,30{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} S% 已知的内容
数值为确定值已知条件=ÿ30{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}z )%    1#进水压力约束条件压力134217732∈ 5.39,9.39{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}Ÿ   其他变量{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}%   —— )%+    1#水泵频率试算参数水[    其他变量ÿ{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} Y%  优化的目标,例如
能耗最小目标函数最小ÿ{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]} Ø{ˆŒr˜m1 +% 最高压力点约束条件<.40{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}x0 +% 平均压力点约束条件压力∈.20,30{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}s/ +% 最低压力点约束条件压力>.16{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}[+    其他变量{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}£À)%+    1#水泵频率试算参数水泵转速比67108866∈40,50{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}&)%+    4#水泵频率试算参数水泵转速l4 +% 低压点数量约束条件<25{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}j3 %% 最低压力约束条件>220{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}2   区域1 . %  预设参数
]   其他变量ÿ{"ConnectSession0":false,"ShareAllDisk":false,"ShareDiskList":[]}£6?ØÓûÝÝããõ‘‹…ysmgaOIC=7¹³­§¡›•ûõï×ÑÅ¿é1+%UË [͏L‚@K‚?J‚>I‚<H‚;G‚:F‚8‚7‚NN‚M9‚Y'‚I3‚FPm‚O6‚D7‚C:‚BM‚A‚0;‚ZA‚UD‚T1‚S0‚R2‚Q&‚P‚6‚5‚3.‚2E‚1C‚X%‚\‚ #‚
*‚    !‚$‚(‚+‚‚‚)‚,é*ḱiéhé fée"nP ‚^M"{c-}| rr³³C?%   „Q水泵状态{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管网","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true‚6ÿÿÿÿÿÿÿÿÿ    „Q说明 {"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"说明","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true}‚J 7%  „?初始状态的设定初始条件ÿ30{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true} WW§XóE1      „?作为观察对象变量ÿ123{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true}‚M 1%     „?可以加入约束约束条件∈ÿ20,30{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true}‚V C%     „?设置枚举范围和精度试算参数∈ÿ40,50{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true} XX¸S C?%   „Q已知条件{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管网","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true}‚B 1      „?作为观察对象变量ÿ123{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true}‚` U%     „?优化的目标,例如能耗最小目标函数最小ÿ123{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true} °bbb· )% 5!…W6#扬程曲线变量节点压力模式系数(接ås %+ „u6#频率试算参数‚J‚0  „{4#æ³µ{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}P  „6#æ³µ{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":false,"Visible":false} ŒEŒƒ5‚5 )% 5!…[4#功率曲线变量节点压力
模式系数(接口)0key_4#GLQX{"accurary":"-0.0357829317936509,0.94221414794797,0.834121873283663","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}ƒ5‚4 )% 5!…[4#扬程曲线变量节点压力    æ¨¡å¼ç³»æ•°(接口)0key_4#YCQX{"accurary":"-0.320595230993792,-0.331227070446209,189.358875139198","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ‚o‚ %+ „u2#频率试算参数水泵转速比∈ú32,50{"accurary":"0.25","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 88·D‚N)%‰++ „q1#实际流量表达式管线流量if ({1#状态}==0) return 0;
var arr  = {1#扬程曲线[]};
var n    = {1#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{实际扬程输出}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x;表达式计算{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} X³X,HC%%/ƒ_立新水厂清水池水位初始条件已知压力67108866
基准值(界面)_0{"accurary":"0.01","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"已知压åŠ! C%        5„q立新水厂1#泵状态_OUT变量水泵开关– C E+    !„m立新水厂5#æ³µ_转速_Out变量æ‚WM %„{目标已知压力{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}‚JD 1+  „?下阶段的设定下阶段条件ÿ30{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true} ŽŽ.…S‚%…Y+ „m3#扬程表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {3#计算流量};
var arr           = {3#扬程曲线[]};
var n             = {3#频率}/50.0;
if ({3#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (w ‚n‚7 %+ „s4#频率试算参数水泵转速比∈040,50{"accurary":"0.5","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ““²†iP%%ˆ     „m目标目标函数节点压力    double demand = {泵站出水量需求};
 
    double Sum_q = {当前总出水};
 
    double Sum_power = {当前总功率};
 
    double flowLoss = 0;
    if (demand-Sum_q>20)
    {
        flowLoss = 500+(demand-Sum_q)*50;
    }
    else if (demand-Sum_q>5)
    {
        flowLoss = 60+(demand-Sum_q)*25;
    }
    else if (demand-Sum_q>0)
    {
        flowLoss = 10+(demand-Sum_q)*10;
    }
    
    double OptLoss = {水泵操作损失函数};
 
    return Sum_power+flowLoss+OptLoss;
 
 
最小Í{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 11‡K‚ )%‰7+ „s1#计算流量表达式管线流量if ({1#状态}==0) return 0;
var arr  = {1#扬程曲线[]};
var n    = {1#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{泵站出水扬程需求}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x; 表达式计算{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ((…T‚6%…Y+ „o4#功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {4#计算流量};
var arr           = {4#功率曲线[]};
var n             = {4#频率}/50.0;
if ({4#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress; 表达式计算0{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ••x % /‚g| %% „o2#状态试算参数水泵开关∈ú0,1{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 11‡K‚)%‰7+ „s2#计算流量表达式管线流量if ({2#状态}==0) return 0;
var arr  = {2#扬程曲线[]};
var n    = {2#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{泵站出水扬程需求}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x;表达式计算ú{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ((…T‚3%…Y+ „o4#扬程表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {4#计算流量};
var arr           = {4#扬程曲线[]};
var n             = {4#频率}/50.0;
if ({4#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 2 - i));
}
 
return upperPress;表达式计算0{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}4    var s   = list_s[i];
    if (s==0) continue;
 
 
    double a               = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
    double b               = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
    double c               = arr[2]*Math.Pow(n,2); // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
    double delta           = b * b - 4 * a * c;    
    double minExtremePoint = -b / (2 * a);    // è®¡ç®—导函数的零点
    double maxValue        = 0;
    if (a < 0)
 
        maxValue = -delta / (4 * a) + c;
    else
    {
        continue;
    }
 
    if (maxValue<min_H) min_H=maxValue;
}
 
List<double> list_x=new List<double>();
List<double> list_y=new List<double>();
 
//将范围分隔为100份
for (int k=100;k>=0;k--)
{
    double step = min_H / 100;
    double H    = step*k;
    double Q    = 0 ;
    for (int i=1;i<=4;i++)
    {
        var arr = list_arr[i];
        var n   = list_n[i];
        var s   = list_s[i];
        if (s==0)continue;
 
 
        double a     = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
ÞÞoƒ l 7+ /-„q泵站出水量需求变量节点需水量基准值(接口)Íoutlet_demand_in{"accurary":"30","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}ƒ m =% /+„q泵站出水扬程需求变量节点压力基准值(接口)Íoutlet_press_in{"accurary":"83","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ##…Y‚O)%…Y+ „m1#实际功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {1#实际流量};
var arr           = {1#功率曲线[]};
var n             = {1#频率}/50.0;
if ({1#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress;表达式计算{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} T*TƒR‚^)+)+'„o4#状态输出表达式水泵转速比if( {4#状态}==1)
{
    return {4#频率}/50;
}
else
{
    return 0;
}表达式计算0pump4#_ZT_out{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}ƒR‚])+)+'„o3#状态输出表达式水泵转速比if( {3#状态}==1)
{
    return {3#频率}/50;
}
else
{
    return 0;
}表达式计算9pump3#_ZT_out{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ‘K‘ƒ6‚ )% 5!…]1#功率曲线变量节点压力
模式系数(接口)key_1#GLQX{"accurary":"-0.00690426817330002,0.73690856237635,0.170542009429896","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}ƒ1‚ )% 5!…S1#扬程曲线变量节点压力    æ¨¡å¼ç³»æ•°(接口)key_1#YCQX{"accurary":"-0.11038836385023,1.4171514984008,174.002273881262","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} 8²8È)%‰++ „q5#计算流量表达式管线流量if ({5#状态}==0) return 0;
var arr  = {5#扬程曲线[]};
var n    = {5#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Ma‚v{ %     /„u2#流量变量管线流量基准值(接口)úkey_2#LL{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":false,"Visible":false}‚Jz  „{2#æ³µ    {"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ‰‰‚s‚
+ /„s1#频率变量水泵转速比基准值(界面)50{"accurary":"0.5","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ((…T‚%…Y+ „o1#扬程表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {1#计算流量};
var arr           = {1#扬程曲线[]};
var n             = {1#频率}/50.0;
if ({1#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 2 - i));
}
 
return upperPress;表达式计算{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} T*TƒR‚\)+)+'„o2#状态输出表达式水泵转速比if( {2#状态}==1)
{
    return {2#频率}/50;
}
else
{
    return 0;
}表达式计算úpump2#_ZT_out{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}ƒR‚[)+)+'„o1#状态输出表达式水泵转速比if( {1#状态}==1)
{
    return {1#频率}/50;
}
else
{
    return 0;
}表达式计算pump1#_ZT_out{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 88‡D‚P)%‰++ „q2#实际流量表达式管线流量if ({2#状态}==0) return 0;
var arr  = {2#扬程曲线[]};
var n    = {2#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{实际扬程输出}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x;表达式计算ú{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} JĴ~‚G )% /%„o4#初始状态变量水泵开关基准值(接口)0pump4#_ZT_in{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}’$‚I=%ž=+%„s水泵操作损失函数表达式节点压力
    double[] pumpScada = new double[]
    {
        0,
        {1#初始状态},
        {2#初始状态},
        {3#初始状态},
        {4#初始状态},
 
    };
    List<double> pumps = new List<double>()
    {
        0, 8 ~~‚~‚ )% /%„o1#初始状态变量水泵开关基准值(接口)pump1#_ZT_in{"accurary":"0","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ((…T‚%…Y+ „o2#功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {2#计算流量};
var arr           = {2#功率曲线[]};
var n             = {2#频率}/50.0;
if ({2#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress;表达式计算ú{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ((…T‚    %…Y+ „o1#功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {1#计算流量};
var arr           = {1#功率曲线[]};
var n             = {1#频率}/50.0;
if ({1#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress; 表达式计算{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} 8²8‚v‚ %     /„u1#流量变量管线流量基准值(接口)key_1#LL{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":false,"Visible":false}‚J‚  „{1#æ³µ
{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ŠCŠƒ5 )% 5!…[2#功率曲线变量节点压力模式系数(接口)úkey_2#GLQX{"accurary":"-0.0172799703522052,0.454089082447247,7.27476151698422","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}ƒ5~ )% 5!…[2#扬程曲线变量节点压力模式系数(接口)úkey_2#YCQX{"accurary":"-0.110394337087376,-0.348912194963679,153.572696852591","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ((…T}%…Y+ „o2#扬程表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {2#计算流量};
var arr           = {2#扬程曲线[]};
var n             = {2#频率}/50.0;
if ({2#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 2 - i));
}
 
return upperPress;表达式计算ú{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ••x % /‚g‚2 %% „o4#状态试算参数水泵开关∈00,1{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}@B=<> %BCAD102&&4on_TotalDemand\":25.0,\"isDistributionStepCalc\":true,\"DistributionCalcStep\":1.0,\"Distribution_OverAvgFactor\":2.0,\"Distribution_UnitDemands\":[0.36,0.54,0.72]}","Ext":{"ChildSolutionArr":[],"TimeStep":0,"TimeDuration":0,"PeriodCount":0,"populationNum":60,"iterationNum":1,"populationNum_full":1,"iterationNum_full":1,"iterationNum_Min":1,"MaxThread":1,"MultiTimes":0,"ShowOnlyBest":false,"是否优选方案":true,"启用数据库存储":false,"启用内存存储":false,"是否枚举":false,"isWaterModelCalc":false,"isQualityCalc":false,"显示详细日志":true,"输出运行情况":false,"自动发送指令":false,"OrderUrl":"","AlarmUrl":"","方案择优":false,"waterdistribute":false,"waterdistributeMode":0,"Distribution_TotalDemand":25.0,"isDistributionStepCalc":true,"DistributionCalcStep":1.0,"Distribution_OverAvgFactor":2.0,"Distribution_UnitDemands":[0.36,0.54,0.72]},"saveSettings":{}}全局默认配置 88‡D‚R)%‰++ „q4#实际流量表达式管线流量if ({4#状态}==0) return 0;
var arr  = {4#扬程曲线[]};
var n    = {4#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{实际扬程输出}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x;表达式计算0{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ##…Y‚S)%…Y+ „m2#实际功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {2#实际流量};
var arr           = {2#功率曲线[]};
var n             = {2#频率}/50.0;
if ({2#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress;表达式计算ú{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 88‡D‚Q)%‰++ „q3#实际流量表达式管线流量if ({3#状态}==0) return 0;
var arr  = {3#扬程曲线[]};
var n    = {3#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{实际扬程输出}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x;表达式计算9{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} û}û‚~‚F )% /%„o3#初始状态变量水泵开关基准值(接口)9pump3#_ZT_in{"accurary":"0","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}‚~‚E )% /%„o2#初始状态变量水泵开关 基准值(接口)úpump2#_ZT_in{"accurary":"0","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}        double b     = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
        double c     = arr[2]*Math.Pow(n,2) - H; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
        double delta = b * b - 4 * a * c ;    
        if (delta<0)continue;
        double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
        double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
        // å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
        double x = (x2 >= x1) ? x2 : x1;
        Q += x;
    }
    list_x.Add(Q);
    list_y.Add(H);
}
 
double Demand = {泵站出水量需求};
double H_new  = LinearInterpolation(list_x,list_y,Demand);
return H_new;
表达式计算Voutlet_press_out{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}1,1)) 
            OptFlag=1;
        if (isMR(P_Lit,1,-1) && isMR(P_Big,1,1)) 
            OptFlag=1;
        else 
            OptFlag=-1;
    }
    else
    {
        OptFlag=-1;
        //不符合调度
        
    }
    if (OptFlag>=0)
    {
        OptLoss=OptFlag*2;
    }
    else
    {
        OptLoss=100;
    }
    
    return OptLoss;
}
 
bool isMR(double[] arr, int num, double value)
{
    int count = 0;
    foreach (double d in arr)
    {
        if (d == value)
        {
            count++;
            if (count > num)
            {
                return false;
            }
        }
    }
    return count == num;
 
 
表达式计算ÍSum_Opt_Loss{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ddµ+%„i+%„s当前…‚D+%„7+%„s当前总出水表达式节点压力double demand = {泵站出水量需求};
List<double> List_q=new List<double>();
List_q.Add({1#计算流量});
List_q.Add({2#计算流量});
List_q.Add({3#计算流量});
List_q.Add({4#计算流量});
double Sum_q = 0;
foreach(double q in List_q)Sum_q+=q;
return Sum_q;表达式计算ÍSum_Flow_out{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} œ+%„5+'„s当前总åŠ+%ƒ{„o‚C+%ƒ{+ „u当前总功率表达式节点压力List<double> List_power=new List<double>();
List_power.Add({1#功率});
List_power.Add({2#功率});
List_power.Add({3#功率});
List_power.Add({4#功率});
double Sum_power = 0;
foreach(double p in List_power)Sum_power+=p;
return Sum_power;表达式计算Í{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}5
        {1#状态},
        {2#状态},
        {3#状态},
        {4#状态}
    };
    List<double> pumpOpt = new List<double>()
    {
        0,
        pumps[1]-pumpScada[1],
        pumps[2]-pumpScada[2],
        pumps[3]-pumpScada[3],
        pumps[4]-pumpScada[4],
    };
    //大泵的变化量
    double[] P_Big = new double[] { pumpOpt[1], pumpOpt[2] };
    //小泵的变化量
    double[] P_Lit = new double[] { pumpOpt[3], pumpOpt[4] };
    
    int sumOpt = 0;
    int sumChange = 0;
    for (int i = 1; i < pumpOpt.Count; i++)
    {
        sumOpt += (int)(Math.Abs(pumpOpt[i]));
        sumChange += (int)pumpOpt[i];
    }
    
    double OptLoss=0;
    
    
    //增开:1、小切大1、减开2、大切小2,不变 0 , å…¶ä»–-1
    int OptFlag = 0;
    
    if (sumOpt==0 )
    {
        OptFlag=0;
    }
    else if (sumOpt==1 )
    {
        OptFlag=1;
    }
    else if (sumOpt==2 && sumChange==0)
    {
        if (isMR(P_Big,1,-1) && isMR(P_Lit, tt–|‚Y1%§s    +-„s实际扬程输出表达式节点压力List<double[]> list_arr=new List<double[]>{ new double[1] };
List<double> list_n=new List<double>{ 0 };
List<double> list_s=new List<double>{ 0 };
 
 
var arr1 = {1#扬程曲线[]};
var n1   = {1#频率}/50.0;
var s1   = {1#状态};
 
 
var arr2 = {2#扬程曲线[]};
var n2   = {2#频率}/50.0;
var s2   = {2#状态};
 
 
var arr3 = {3#扬程曲线[]};
var n3   = {3#频率}/50.0;
var s3   = {3#状态};
 
 
 
var arr4 = {4#扬程曲线[]};
var n4   = {4#频率}/50.0;
var s4   = {4#状态};
 
list_arr.Add(arr1);
list_arr.Add(arr2);
list_arr.Add(arr3);
list_arr.Add(arr4);
 
list_n.Add(n1);
list_n.Add(n2);
list_n.Add(n3);
list_n.Add(n4);
 
list_s.Add(s1);
list_s.Add(s2);
list_s.Add(s3);
list_s.Add(s4);
 
double min_H = 999999;
 
 
for (int i=1;i<=4;i++)
{
 
    var arr = list_arr[i];
    var n   = list_n[i];
 •• ‰ 1% /'„s泵站出水扬程变量节点压力基准值(接口)Íkey_press_out{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}‚g‚B %% „o1#状态试算参数水泵开关∈0,1{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ff…‚Z+%„++-„s实际总功率表达式节点压力List<double> List_power=new List<double>();
List_power.Add({1#实际功率});
List_power.Add({2#实际功率});
List_power.Add({3#实际功率});
List_power.Add({4#实际功率});
double Sum_power = 0;
foreach(double p in List_power)Sum_power+=p;
return Sum_power;表达式计算Voutlet_power_out{"accurary":"180","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}erdistributeMode\":0,\"Distribution_TotalDemand\":25.0,\"isDistributionStepCalc\":true,\"DistributionCalcStep\":1.0,\"Distribution_OverAvgFactor\":2.0,\"Distribution_UnitDemands\":[0.36,0.54,0.72]}","Ext":{"ChildSolutionArr":[],"TimeStep":0,"TimeDuration":0,"PeriodCount":0,"populationNum":2000,"iterationNum":10,"populationNum_full":1,"iterationNum_full":1,"iterationNum_Min":1,"MaxThread":4,"MultiTimes":0,"ShowOnlyBest":false,"是否优选方案":true,"启用数据库存储":false,"启用内存存储":false,"是否新版本保存":false,"是否新版本读取":false,"是否枚举":false,"isWaterModelCalc":false,"isQualityCalc":false,"显示详细日志":true,"输出运行情况":false,"自动发送指令":false,"OrderUrl":"","AlarmUrl":"","方案择优":false,"waterdistribute":false,"waterdistributeMode":0,"Distribution_TotalDemand":25.0,"isDistributionStepCalc":true,"DistributionCalcStep":1.0,"Distribution_OverAvgFactor":2.0,"Distribution_UnitDemands":[0.36,0.54,0.72]},"saveSettings":{}}全局默认配置<n[i];
    var s   = list_s[i];
    if (s==0) continue;
 
 
    double a               = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
    double b               = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
    double c               = arr[2]*Math.Pow(n,2); // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
    double delta           = b * b - 4 * a * c;    
    double minExtremePoint = -b / (2 * a);    // è®¡ç®—导函数的零点
    double maxValue        = 0;
    if (a < 0)
 
        maxValue = -delta / (4 * a) + c;
    else
    {
        continue;
    }
 
    if (maxValue<min_H) min_H=maxValue;
}
 
List<double> list_x=new List<double>();
List<double> list_y=new List<double>();
 
//将范围分隔为100份
for (int k=100;k>=0;k--)
{
    double step = min_H / 100;
    double H    = step*k;
    double Q    = 0 ;
    for (int i=1;i<=4;i++)
    {
        var arr = list_arr[i];
        var n   = list_n[i];
        var s   = list_s[i];
        if (s==0)continue;
 
 
        double a     = arr[0]; // äºŒæ¬¡é¡¹çterdistributeMode\":0,\"Distribution_TotalDemand\":25.0,\"isDistributionStepCalc\":true,\"DistributionCalcStep\":1.0,\"Distribution_OverAvgFactor\":2.0,\"Distribution_UnitDemands\":[0.36,0.54,0.72]}","Ext":{"ChildSolutionArr":[],"TimeStep":0,"TimeDuration":0,"PeriodCount":0,"populationNum":1000,"iterationNum":2,"populationNum_full":1,"iterationNum_full":1,"iterationNum_Min":1,"MaxThread":4,"MultiTimes":0,"ShowOnlyBest":false,"是否优选方案":true,"启用数据库存储":false,"启用内存存储":false,"是否新版本保存":false,"是否新版本读取":false,"是否枚举":false,"isWaterModelCalc":false,"isQualityCalc":false,"显示详细日志":true,"输出运行情况":false,"自动发送指令":false,"OrderUrl":"","AlarmUrl":"","方案择优":false,"waterdistribute":false,"waterdistributeMode":0,"Distribution_TotalDemand":25.0,"isDistributionStepCalc":true,"DistributionCalcStep":1.0,"Distribution_OverAvgFactor":2.0,"Distribution_UnitDemands":[0.36,0.54,0.72]},"saveSettings":{}}全局默认配置 IIƒ3‚_++7  „a增加依赖项预处理插件初始及运行传参gParam.Dependencies = new List<int>(){-1,-1,2,-1,-1,4};
return null;Í{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}terdistributeMode\":0,\"Distribution_TotalDemand\":25.0,\"isDistributionStepCalc\":true,\"DistributionCalcStep\":1.0,\"Distribution_OverAvgFactor\":2.0,\"Distribution_UnitDemands\":[0.36,0.54,0.72]}","Ext":{"ChildSolutionArr":[],"TimeStep":0,"TimeDuration":0,"PeriodCount":0,"populationNum":200,"iterationNum":10,"populationNum_full":1,"iterationNum_full":1,"iterationNum_Min":1,"MaxThread":4,"MultiTimes":0,"ShowOnlyBest":false,"是否优选方案":true,"启用数据库存储":false,"启用内存存储":false,"是否新版本保存":false,"是否新版本读取":false,"是否枚举":false,"isWaterModelCalc":false,"isQualityCalc":false,"显示详细日志":true,"输出运行情况":false,"自动发送指令":false,"OrderUrl":"","AlarmUrl":"","方案择优":false,"waterdistribute":false,"waterdistributeMode":0,"Distribution_TotalDemand":25.0,"isDistributionStepCalc":true,"DistributionCalcStep":1.0,"Distribution_OverAvgFactor":2.0,"Distribution_UnitDemands":[0.36,0.54,0.72]},"saveSettings":{}}全局默认配置 ##…Y‚U)%…Y+ „m4#实际功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {4#实际流量};
var arr           = {4#功率曲线[]};
var n             = {4#频率}/50.0;
if ({4#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress;表达式计算0{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}@[i];
    var s   = list_s[i];
    if (s==0) continue;
 
 
    double a               = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
    double b               = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
    double c               = arr[2]*Math.Pow(n,2); // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
    double delta           = b * b - 4 * a * c;    
    double minExtremePoint = -b / (2 * a);    // è®¡ç®—导函数的零点
    double maxValue        = 0;
    if (a < 0)
 
        maxValue = -delta / (4 * a) + c;
    else
    {
        continue;
    }
 
    if (maxValue<min_H) min_H=maxValue;
}
 
List<double> list_x=new List<double>();
List<double> list_y=new List<double>();
 
//将范围分隔为100份
for (int k=100;k>=0;k--)
{
    double step = min_H / 100;
    double H    = step*k;
    double Q    = 0 ;
    for (int i=1;i<=4;i++)
    {
        var arr = list_arr[i];
        var n   = list_n[i];
        var s   = list_s[i];
        if (s==0)continue;
 
 
        double a     = arr[0]; // äºŒæ¬¡é¡¹ç³ ©©3v %% / „1初始条件已知压力基准值(界面)V{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"已知压力点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true}‚S‚V %„o输出量已知压力{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管网","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ##…Y‚T)%…Y+ „m3#实际功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {3#实际流量};
var arr           = {3#功率曲线[]};
var n             = {3#频率}/50.0;
if ({3#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress;表达式计算9{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ††É)%‰++ „s4#计算流量表达式管线流量if ({4#状态}==0) return 0;
var arr  = {4#扬程曲线[]};
var n    = {4#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{泵站出水扬程}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来ç‚v‚1 %     /„u4#流量变量管线流量基准值(接口)0key_4#LL{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":false,"Visible":false} 11‡K‚8)%‰7+ „s4#计算流量表达式管线流量if ({4#状态}==0) return 0;
var arr  = {4#扬程曲线[]};
var n    = {4#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{泵站出水扬程需求}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x; 表达式计算0{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} 8²8‚v‚: %     /„u3#流量变量管线流量基准值(接口)9key_3#LL{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":false,"Visible":false}‚J‚9  „{3#æ³µ{"accurary":"0.1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"取水泵站","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":"","MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ••x % /‚g‚; %% „o3#状态试算参数水泵开关∈90,1{"accurary":"1","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} ((…T‚<%…Y+ „o3#扬程表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {3#计算流量};
var arr           = {3#扬程曲线[]};
var n             = {3#频率}/50.0;
if ({3#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 2 - i));
}
 
return upperPress;表达式计算9{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ŒFŒƒ6‚> )% 5!…]3#功率曲线变量节点压力
模式系数(接口)9key_3#GLQX{"accurary":"-0.0231681846319237,0.849241296491773,0.448399478846897","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}ƒ5‚= )% 5!…[3#扬程曲线变量节点压力    æ¨¡å¼ç³»æ•°(接口)9key_3#YCQX{"accurary":"-0.320595230993792,-0.331227070446209,189.358875139198","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ((…T‚?%…Y+ „o3#功率表达式节点压力double power1     = 0;
double upperPress = 0;
double Q          = {3#计算流量};
var arr           = {3#功率曲线[]};
var n             = {3#频率}/50.0;
if ({3#状态}==0) return 0;
for (int i=0;i<arr.Length;i++)
{
    int j = arr.Length-1-i;
    upperPress += arr[j] * Math.Pow(Q, i) * (n==0?0: Math.Pow(n, 3 - i));
}
 
return upperPress; 表达式计算9{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ‰‰‚s‚@ + /„s3#频率变量水泵转速比基准值(界面)950{"accurary":"0.5","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"æ°´æ³µ","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":true} 11‡K‚A)%‰7+ „s3#计算流量表达式管线流量if ({3#状态}==0) return 0;
var arr  = {3#扬程曲线[]};
var n    = {3#频率}/50.0;
double a = arr[0]; // äºŒæ¬¡é¡¹ç³»æ•°
double b = arr[1]*Math.Pow(n,1); // ä¸€æ¬¡é¡¹ç³»æ•°
double c = arr[2]*Math.Pow(n,2)-{泵站出水扬程需求}; // å¸¸æ•°é¡¹ç³»æ•°å‡åŽ»ç»™å®šçš„ y å€¼
// æ±‚解二次方程 ax^2 + bx + c = 0
double delta = b * b - 4 * a * c;
double x1    = (-b + Math.Sqrt(delta)) / (2 * a);
double x2    = (-b - Math.Sqrt(delta)) / (2 * a);
// å–两个解中符合实际情况的那个(可以根据具体应用场景来确定)
double x = (x2 >= x1) ? x2 : x1;
return x; 表达式计算9{"accurary":"28","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"管线","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false} ÔÔÂ1%¨k+„s优化扬程输出表达式节点压力Lis†1%§s+„s实际扬程输出表达式节点压力List<double[]> list_arr=new List<†(‚M%%†y+ „o插值方法表达式节点压力    return 0;
}
public double LinearInterpolation(List<double> list_x, List<double> list_y, double x0)
{
    int n = list_x.Count;
    double y0 = 0;
 
    for (int i = 0; i < n - 1; i++)
    {
        if ((x0 >= list_x[i]) && (x0 <= list_x[i + 1]))
        {
            y0 = list_y[i] + ((x0 - list_x[i]) / (list_x[i + 1] - list_x[i])) * (list_y[i + 1] - list_y[i]);
            break;
        }
    }
 
    return y0;
 
表达式计算Í{"accurary":"","ShareAllDisk":false,"ShareDiskList":[],"ObjectType":"节点","Result_Arr":null,"小数位数":3,"childSolution":"","childTag":"","childType":"传入","isSave":"","SaveRange":"","SaveAcc":"","isMemSave":null,"MemSaveRange":"","MemSaveAcc":"","MemSaveIndex":"","Enable":true,"Visible":false}