Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2012, 09:04   #1
ИгорьСупер
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 10
По умолчанию Головоломка зависимость Топлива от Времени!Это Интересно

Задание определить идет ли заправка или неровная дорога
Т.е. данная программа не учитывает неровную дорогу или колебания бензина(и принимает все как заправку)
Подсказка взять 3 –точки (см скриншот результата) например если -5 15 10(следовательно неровная дорога т.е. идут колебания)
а если результат идет по возрастанию 10 20 30 и т.д. то это заправка
Т.е.перед тем как вычислить сколько было залито должна идти проверка заправка ли это или просто неровная дорога.
Ну а потом также вычислить в какой период и кол-во заправленных литров не забывает учесть полный бак(т.е. когда он будет полный эффект бездонной бочки нам не нужен)

Код:
1
2
3
4
5
6
7
8
9
10
11
12

	

declare @t table ( id int, time datetime, val int )
insert into @t
values ( 1, '20120921 00:00', 20 )
, ( 2, '20120921 01:00', 15 )
, ( 3, '20120921 02:00', 30 )
, ( 4, '20120921 03:00', 40 )
, ( 5, '20120921 04:00', 60 )
 
select t1.*, t2.val - t1.val as diff_val 
from @t t1
left join @t t2
on t1.id = t2.id - 1
это все хорошо
но есть еще одна проблема
надо добавить ф-цию заправка топлива
т.е зависимость топлива от времени
как в предыдущей теме..но там так и не реализовали
все определили время работы есть
а что если я хочу подсчитать сколько залито топлива было и в какой период времени

при учете движения авто неровностей поверхности и т.д.(не берем глобальные переворот авто наклон в гору и т.п)а просто отличить заправку от неровной поверхности
код такой но не учитывает неровную поверхность и заправку
алгоритм таков

1)определить зависимость топлива от времени
2)1 и 2 производная для ф-ции под номером 1(зависимости топлива от времени)
3)находим разность м-у соседними экстремумами-это и будет кол-во заправленного-потраченого топлива
Изображения
Тип файла: jpg 121188.jpg (20.5 Кб, 63 просмотров)
ИгорьСупер вне форума Ответить с цитированием
Старый 28.09.2012, 09:34   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

ммм, fuzzy logic ...да, задачка интересная. Однако вопрос:
Цитата:
а просто отличить заправку от неровной поверхности
поясните? Как это связано с расходом топлива?

Что касаемо определения неровностей дороги, то есть америкосовский патент на такие измерения, поищите в сети.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 28.09.2012, 10:14   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А как с расходом топлива на работу движка? Попробовать график уровня аппроксимировать полиномом и плясать от его экстремумов?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.09.2012, 10:22   #4
ИгорьСупер
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 10
По умолчанию сообщение

переворот авто и подьем в гору НЕ беРЕБЕМ...нам это не надо

Машина едет по условной горизонтальной плоскости с имеющимися небольшими неровностями что приводит к колебаниями объема измеряемого топлива не более чем на X единиц.
Исходя из этой постановки
если абсолютное значение(текущее показание - предыдущее показание)>X то в зависимости от знака разности принимаем эти данные за расход или пополнение.....как то так...
впринципе накидал програмку...работает по не так как надо...есть идеи?
ИгорьСупер вне форума Ответить с цитированием
Старый 28.09.2012, 10:26   #5
ИгорьСупер
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 10
По умолчанию предложения

думал еще как то так

Любым известным тебе способом восстанавливаешь функцию кривой (зависимость кол-ва топлива от времени). Далее, ищешь первую и вторую производную для этой функции, чтобы определить локальные минимумы и максимумы.
А дальше - так вообще все просто. Находишь разность между соседними экстремумами, что и будет кол-вом заправленного / потраченного топлива.

незнаю как будет лучше и надежнее програмка...и как бы это все представить в виде кода..посоветуйте что лучше и как будет выглядеть...просто что я написал впринципе хорошо читаемо...ну незнаю..предложите идеи...есть?
ИгорьСупер вне форума Ответить с цитированием
Старый 28.09.2012, 14:37   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
и как бы это все представить в виде кода..посоветуйте что лучше и как будет выглядеть
Если решитесь на аппроксимацию, то примеров с кодами предостаточно. Вот например http://www.alexeypetrov.narod.ru/C/sqr_less_about.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.09.2012, 15:18   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
Машина едет по условной горизонтальной плоскости с имеющимися небольшими неровностями что приводит к колебаниями объема измеряемого топлива не более чем на X единиц.
Исходя из этой постановки
если абсолютное значение(текущее показание - предыдущее показание)>X то в зависимости от знака разности принимаем эти данные за расход или пополнение.....как то так...
достаточно накопления и отбрасывания слишком резких значений, т.е. сглаживания. Полиномы регрессии.

Однако, вы не ответили на вопрос.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 30.09.2012, 13:41   #8
ИгорьСупер
Пользователь
 
Регистрация: 24.09.2012
Сообщений: 10
По умолчанию

Код:
declare @t table ( id int, time datetime, val int )
insert into @t
values  ( 1, '20120921 00:00', 20 )
	  , ( 2, '20120921 01:00', 15 )
      , ( 3, '20120921 02:00', 30 )
      , ( 4, '20120921 03:00', 40 )
      , ( 5, '20120921 04:00', 60 )
      , ( 6, '20120921 02:00', 30 )
      , ( 7, '20120921 03:00', 40 )
      , ( 8, '20120921 04:00', 60 )
     
    DECLARE		@id		    int
	DECLARE		@time		datetime
	DECLARE		@val	    int
	declare		@diff_vall	int
	declare		@start	int
	declare		@pointstart	int
	declare		@pointend	int
	declare		@k	int


	DECLARE		cursor_checkArea		CURSOR FOR       
		select t1.*, t2.val - t1.val as diff_val 
			from @t t1
		left join @t t2
      on t1.id = t2.id - 1	                                                                           
                                                                                                            
	OPEN cursor_checkArea                                                         
	FETCH NEXT FROM cursor_checkArea                                                                           
	INTO		@id,
				@time,
				@val,
				@diff_vall
	SET		@start  =   0		                                                                         
                                                                                                            
	WHILE( @@FETCH_STATUS = 0 )                                                                             
	BEGIN 
		
		
		IF  (@diff_vall>0 )
			begin 
				if(@start=0)set @pointstart=@id
				set @start=@start+@diff_vall 
				set @k=@k+1
			end
		else
			begin
				if (@k>3 OR @start>20)
					begin
						set @pointend = @id
						select @start, @pointstart,@pointend
					end
				set @start=0
				set @k=0	
			end
					 
		FETCH NEXT FROM cursor_checkArea
		INTO	@id,
				@time,
				@val,
				@diff_vall
	END

	CLOSE cursor_checkArea
	DEALLOCATE cursor_checkArea
сделал так оцените...
хотелось бы результат покрасивее оформить

что то со временой таблицой проблемки есть

надо чтоб во временной таблице отображалось время т.е. период заправки и кол - во литров спс а сейчас по id
например 2012.09.21 01:00-2012.09.21 04:00| 45
Изображения
Тип файла: jpg 1.JPG (10.8 Кб, 14 просмотров)

Последний раз редактировалось ИгорьСупер; 30.09.2012 в 13:49.
ИгорьСупер вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вертикальное боковое меню для wordpress. Это интересно rezzov WordPress и другие CMS 1 26.07.2012 15:04
Зависимость времени поиска от типов данных и ключа Luxоr Помощь студентам 0 02.06.2011 21:45
Зависимость от времени Helen09 JavaScript, Ajax 2 29.10.2010 12:38
Интересно, что это за треугольнички в микросхеме. Levsha100 Свободное общение 3 16.02.2010 21:33
Pascal ABC - это просто головоломка! Mr_Liahkim Фриланс 9 03.02.2010 19:22