Расчет уличного освещения, страница 3


Ход решения контрольного примера по алгоритму

Рассмотрим решение задачи нахождения максимального расстояния между светильниками.

Возьмем следующие данные: fl=5600, enom=0.5, kz=1.5, a=10, h=8.

Получим e=4.286.

При значении i=29  перестанет выполнятся условие edhs[i].e<e. edhs[29].e=4.951.

Найдем значение d. edhs[i].dh=1.818; d=14.554.

Условие d<=a не выполняется.

Рассчитав l, получили значение 21.12 м.

Рассмотрим решение задачи подбора лампы.

Возьмем следующие данные: enom=0.5, kz=1.5, a=10, h=8, l=21.

Получим d=14,5; d/h=1.8125

При значении i=29 перестанет выполнятся условие edhs[i].dh<dh. Получили: edhs[29].dh=1.818. edhs[29].e=9.902.

Рассчитав fl, получим значение 4848.

Отсортируем массив lamps по возрастанию мощности ламп.

При значении i=3 выполняется условие edhs[i].fl<fl. edhs[i].fl=5600.

Выбрана лампа ДРЛ-125.


Ограничения при решении задач по разработанному алгоритму

1.  Алгоритм разработан для расчета одного ряда светильников.

2.  При решении задачи нахождения максимального расстояния между светильниками алгоритм не сможет найти расстояние если будет выполнятся условие d<a.

3.  При подборе лампы алгоритм не найдет решения если ни одна из ламп не сможет обеспечить необходимый поток.

4.  Расчет ведется только для светильников СВ и СВР.

5.  Подбор ламп осуществляется из ограниченного числа ЛН и ДРЛ.

6.  Зависимость e=f(d/h) задана для 32-х точек.


Текст программы

program ligth;

type lamp=record

      name:string; {name - название лампы}

      fl:real; {fl - поток лампы}

      p:integer; {p - мощность лампы}

     end;

     edh=record

      e:real; {относительная освещенность}

      dh:real; {отношение d/h}

     end;

const edhc=32; {количество точек, снятых с графика e=f(d/h)}

      lampsc=13;

var e,enom,kz,fl,a,d,l,h:real;

{e - относительная освещенность;

enom - освещенность дорожного полотна;

kz - коэффициэнт запаса;

fl - поток;

a - расстояние от оси опор до точек с минимальной освещенностью;

d - расстояние от опоры до точки с минимальной освещенностью;

l - расстояние между опорами;

h - высота опоры}

    lamps:array[1..lampsc] of lamp;

    edhs:array[1..edhc] of edh;

    f:text;

    s,s1,s2:string;    {\временные }

    i,j,t,t1,act:word;  {/переменные}

    lampt:lamp;

procedure vvod;

begin

 assign(f,'edh.txt');

 reset(f);

 for i:=1 to edhc do begin

  readln(f,s); {чтение строки из файла}

  j:=0;

  while s[j]<>';' do inc(j); {определение позиции ";" в строке}

  s1:=copy(s,0,j-1); {то, что до ";" копируем в строку s1}

  val(s1,t,t1); {преобразуем в числовой формат}

  edhs[i].dh:=t/1000;

  s1:=copy(s,j+1,length(s)-j); {то, что после ";" в s2}

  val(s1,t,t1);

  edhs[i].e:=t/1000;

 end;

 close(f);

 assign(f,'lamps.txt');

 reset(f);

 for i:=1 to lampsc do begin

  readln(f,s); {чтение строки из файла}

  j:=0;

  while s[j]<>';' do inc(j); {определение позиции ";" в строке}

  s1:=copy(s,0,j-1); {то, что до ";" копируем в строку s1}

  val(s1,t,t1);

  lamps[i].p:=t;

  t:=j;

  inc(j);

  while s[j]<>';' do inc(j);

  s1:=copy(s,t+1,j-t-1);

  val(s1,t,t1);

  lamps[i].fl:=t;

  lamps[i].name:=copy(s,j+1,length(s)-j);

 end;

 case act of

 1: begin

   write('Введите поток (лм): ');                {                }

   readln(fl);                                   {                }

   write('Введите освещенность дороги (лк): ');  {      ВВОД      }