TransWikia.com

Understanding Illumination Optimisation Problem

Computational Science Asked by Supremum on February 27, 2021

I am a newbie to convex optimisation and I am learning with the aid of CVXPY. I am requesting for clarity on the illumination problem as described in Boyd & Vandenberghe lecture 1 slides here. I have adapted the code from here and tried to visualise what the illuminance from within a room would look like. I have inserted my code and I hope it’s not too cumbersome to look at.

I am using four lamps and I have two detectors (patches) labeled Rx0 and Rx1 as seen on the attached image. I desire to have an illuminance of 450 lux at both of these detectors but in my many attempts, none of the detectors is at 450 lux. Rx0 is around 380 lux while Rx1 is around 510. I only get somewhat the exact desired value for one of the detectors if I place one of the detectors at the centre of the room.

  1. Is the objective of this problem to have equal illuminance at all patches or a particular illuminance at just one of the patches? I am not fully understanding here, my thinking is that we are aiming to have equal (desired) illuminance at all patches using the minimum possible power.
  2. I am curious to know if the solutions from CVXPY are approximate or my code is wrong.
  3. Can I formulate the problem so that I end up having two varying illuminance levels at each patch? As in having like two beams from one of the transmitters to two patches? Something more like beamforming? If so, what would be the best approach?

With the definition of illuminance on surface $mathsf{s}$ as

begin{equation}
mathcal{E}_{textsf{s}}^{textsf{tx}} = underbrace{frac{mathcal{I}_{N_{l,u}}cos^{m_{1}}left(phiright)}{d_{l,u}^{2}cosleft(psiright)}}_{mathcal{E}_{textsf{TX}}} + underbrace{sum_{jin mathcal{L}backslashlbrace lrbrace}frac{mathcal{I}_{N_{j,u}}cos^{m_{1}}left(phiright)}{d_{j,u}^{2}cosleft(psiright)}}_{mathcal{E}_{textsf{nTX}}},
end{equation}

where $mathcal{I}_{N_{l,u}}$ is the luminous intensity (normal to surface) of one of the four LED arrays, $phi$ is the irradiance angle, $psi$ is the incidence angle, $d$ is the distance between the lamp and the surface/patch, $mathcal{I}_{N_{j,u}}$ is the luminous intensity (normal to surface) of the other three LED arrays, $mathcal{E}_textsf{s}^{textsf{tx}}$ is the illuminance due to all four LED arrays and $mathcal{E}_{textsf{r}_u}$ is the required illuminance at patch $u$.

I have formulated my problem as follows;

begin{align}
underset{mathcal{I}_{N_{l,u}}> 0,~mathcal{I}_{N_{j,u}}geq 0}{mathtt{minimise}} quad& mathtt{max}_{textsf{s}}fleft(mathcal{E}_textsf{s}^{textsf{tx}}/mathcal{E}_{textsf{r}_{u}}right), &label{equ:objectiv2}
% mathtt{subject~to} quad& mathcal{I}_{N_{l,u}} leq mathcal{I}_{N_{l,u}}^{max}, &
mathtt{subject~to} quad& mathcal{I}_{N_{l,u}} leq mathcal{I}_{N_{l,u}}^{textsf{csk}}, &
& mathcal{I}_{N_{j,u}} leq mathcal{I}_{N_{j,u}}^{max}, &
& mathcal{E}_textsf{s}^{textsf{tx}} geq mathcal{E}_{textsf{r}_u}, &
end{align}

where $fleft(xright) = maxleftlbrace x, 1/xrightrbrace$.

What I am trying to achieve is to have a particular illuminance level at patch $u$. However, the code I have written only gives me the desired illuminance when the patch is at the centre.

Basically, the luminous intensity of one of the LED arrays is being modulated through the use of colour shift keying in visible light communication to transmit some data. In the end I would like to end up having a constraint makes the intensity of the transmitting LED array dominant amongst all four but for now, I need to be able to get the desired illuminance at the two patches labelled $Rx_{0}$ and $Rx_{1}$.

enter image description here

import cvxpy as cp
import matplotlib.pyplot as plt
import numpy as np

np.set_printoptions(precision=3, suppress=True)
plt.rcParams.update({'font.size': 16})
plt.rcParams['text.latex.preamble'] = [r'usepackage{amsmath}']  # for text command
plt.rc('font', **{'family': 'serif', 'serif': ['Palatino']})
plt.rc('text', usetex=True)

tx_array_max_int = 1465  # max_intensity of transmitting array

nttx_array_max_int = 2743  # max_intensity of non-transmitting array

desired_illuminance = 450  # In lux

txrx_geo = np.array(([0.163265306122449, 0.06201550387596899, 0.163265306122449, 0.06201550387596899],
                    [0.0761904761904762, 0.17777777777777778, 0.0761904761904762, 0.17777777777777778]))


n, m = txrx_geo.shape

lamp_intensity = cp.Variable(m)

objective = cp.Minimize(cp.max(cp.maximum((txrx_geo * lamp_intensity) / desired_illuminance,
                                          cp.inv_pos((txrx_geo * lamp_intensity) / desired_illuminance))))

constraints = [lamp_intensity[0] <= tx_array_max_int,
               lamp_intensity >= 0,
               lamp_intensity <= nttx_array_max_int,
               desired_illuminance <= txrx_geo * lamp_intensity]

problem = cp.Problem(objective, constraints)

print(problem.solve())

print("Our solution is: ", problem.status)
print("--------------------------------------------------------------------------------------------")

optimal_intensities = np.ravel(lamp_intensity.value)
print("The optimal intensities (per transmitter array) are: ", optimal_intensities)

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP