Module 6 · Section 7 of 8
Case Study 6.6 - Chiller Plant Performance
Mechanical Engineering
A shopping-mall central plant logs chiller efficiency (kW per ton of refrigeration) against part-load ratio and ambient wet-bulb-ish temperature. Characterise the efficiency surface and find the operating band the plant should target.
np.random.seed(106)
n = 400
load_frac = np.random.uniform(0.30, 1.00, n) # part-load ratio (fraction of capacity)
ambient_c = np.random.uniform(24, 35, n)
# model efficiency: best near ~65% load, worse away from it and at high ambient
kw_per_ton = (0.58
+ 0.9 * (0.65 - load_frac) ** 2 # squared term -> a U-shape around 0.65
+ 0.018 * (ambient_c - 27)
+ np.random.normal(0, 0.025, n))
plant = pd.DataFrame({"load_frac": load_frac, "ambient_c": ambient_c.round(1),
"kw_per_ton": kw_per_ton.round(3)})
# pd.cut() slices load_frac into the given intervals; groupby then averages within each
plant["load_band"] = pd.cut(plant["load_frac"], [0.3, 0.5, 0.7, 0.9, 1.0])
band_eff = plant.groupby("load_band", observed=True)["kw_per_ton"].mean()
print("Mean kW/ton by part-load band:")
print(band_eff.round(3))
best_band = band_eff.idxmin() # the band with the LOWEST kW/ton = most efficient
print(f"\nMost efficient band: {best_band} ({band_eff.min():.3f} kW/ton)")
print(f"Sensitivity to ambient: about +{0.018:.3f} kW/ton per degree C")
fig, ax = plt.subplots(figsize=(7, 5))
# colour each point by ambient temperature to show the second effect on the same plot
sc = ax.scatter(plant["load_frac"], plant["kw_per_ton"], c=plant["ambient_c"], cmap="coolwarm", alpha=0.7)
ax.set_xlabel("Part-load ratio"); ax.set_ylabel("kW / ton")
ax.set_title("Chiller Efficiency vs Load (color = ambient C)")
plt.colorbar(sc, label="Ambient (C)")
plt.tight_layout(); plt.show()
Key Takeaways
- Chillers are least efficient at very low part-load; sequencing controls should keep running machines loaded in their sweet spot rather than running many lightly loaded.
- Ambient (condenser-side) temperature has a clear, quantifiable penalty - condenser- water reset and clean tubes pay back directly in kW/ton.
- Binning is a fast, transparent alternative to a full regression when you just need "which operating band to target."
62 / 63 sections · Course home · Join the coaching cohort