Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8

Програмка для реализации нечеткой логики

20.06.2010, 18:40. Показов 3136. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
здравствуйте! не сочтите за нахальство, но горит последний раздел магистерской. у меня тема об использовании нечеткой логики для программирования промышленных контролеров (ADAM-4000). каркас проги есть, рабочая. но не получается представлять данные графически. я хочу, чтоб выводилась хоть какая-то функция в реальном времени (идет регулирование температуры)
как могли понять, что программист из меня никудышний, так что буду рада любым советам

Добавлено через 4 часа 20 минут
худо-бедно прогу написала. теперь остался совсем махонький вопрос - как отображать шкалу на PictureBox О_о
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2010, 18:40
Ответы с готовыми решениями:

Библиотека для нечеткой логики
Подскажите библиотеку python для работы с нечёткой логикой.

Программа по теории нечеткой логики
Ребят, у кого нибудь есть что то ПОХОЖЕЕ на эту программку?Буду очень благодарен!

Управления зарядкой батареи с нечеткой логики
class Napryagenie { int TRICKLE_CHARGE; //charge=заряд 0 int FAST_CHARGE; // 1 public int ChargeMode; int...

16
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 19:55
Выложите свои наработки, или распишите поподробней, что именно вам нужно и на каком языке.
Посмотрим - поможем))
Александр shuv_aa@mail.ru ICQ 373-628-456.
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 19:56  [ТС]
Александр_ФФ, спасибо! уже слепила из того, что было осталось именно сама шкала. знаю, что можно такое сделать, но как не знаю
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 20:04
Рискну предположить (так как кода и ЯП я не видел), что речь про сетку на графике и подписи осей.
Сетка рисуется набором вертикальных и горизонтальных линий (в циклах) с нужным вам шагом.
Подписи координат - надо знать, что за язык, чтобы помочь вам. Для многих подойдёт функция:
function TextOut(DC: HDC; X, Y: Integer; Str: PChar; Count: Integer): Bool;
Вывод строки str в место x,y на рисунке.
0
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 20:06  [ТС]
пишу на Visual Basic сетки не надо, просто подписи осей
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 20:11
Наконец-то))
Написать буковку "x" в месте с координатами 300,200 можно так:
Visual Basic
1
2
3
Picture1.currentX = 300
Picture1.currentY = 200
Picture1.print "х"
Добавлено через 1 минуту
Конечно, для PictereBox параметр ScaleMode - в пикселях
0
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 20:12  [ТС]
такое пробовала) а чтоб цыфирки по осях были проставлены?
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 20:22
Visual Basic
1
2
3
4
5
6
7
Picture1.AutoRedraw = True
Picture1.ScaleMode = 3
For i = 0 To 500 Step 50
  Picture1.CurrentX = i
  Picture1.CurrentY = 200
  Picture1.Print i * 0.1
Next i
0
 Аватар для Abu
1161 / 288 / 23
Регистрация: 28.09.2008
Сообщений: 553
20.06.2010, 20:33
Ну если нужен график, то можно выводить по значениям с помощью таких операторов как
Picture1.Line(x1,y1)-(x2,y2) - линия
Picture1.PSet(x,y) если не ошибаюсь в параметрах - точка
Picture1.Print "текст" - текст
Только нужно помнить, что в Picture ось Y идёт сверху вниз, а не снизу вверх. Т.е. максимальное значение будет внизу, а не вверху.
Вот корявый пример
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Form_Load()
Picture1.Width = 3675
Picture1.Height = 2835
End Sub
 
Private Sub Command1_Click()
Const n As Integer = 300
Dim arr(10) As Integer
Dim p As Integer
p = n
Randomize
For i = 1 To 10
    arr(i) = Int(Rnd * 1000) + 100
    Picture1.Line (p, arr(i - 1))-(p + n, arr(i))
    Picture1.PSet (p, arr(i - 1))
    Picture1.Circle (p, arr(i - 1)), 20, vbRed
    Picture1.Print arr(i - 1)
    p = p + n
Next i
Picture1.PSet (p, arr(i - 1))
Picture1.Circle (p, arr(i - 1)), 20, vbRed
Picture1.Print arr(i - 1)
End Sub
Добавлено через 1 минуту
Блин, не успела...
1
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 20:37
Цитата Сообщение от Abu Посмотреть сообщение
Блин, не успела...
Ничего страшного)))

Но так текст выводится на том месте, где был нарисован последний элемент
Visual Basic
1
2
    Picture1.Circle (p, arr(i - 1)), 20, vbRed
    Picture1.Print arr(i - 1)
а это не всегда удобно. Если требуется просто вывести надпись в любом месте- то через Current
0
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 20:39  [ТС]
Александр_ФФ, спасибки за помощь. но по этому коду получается, что оси подписаны, а самого графика уже не видно) ой, чувствую спасать опять будет старый добрый пейнт

Добавлено через 1 минуту

вот так выглядит мой графффффик
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 20:49
Значит у вас scalemode не пиксель было...
Выложите код весь, там понятней будет
если стесняетесь, можете на почту shuv_aa@mail.ru
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 20:51  [ТС]
да чего стесняться - незнания разве только
Visual Basic
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
Private Sub Command1_Click()
Dim Instring As String
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.PortOpen = True
 
 
End Sub
 
Private Sub Command2_Click()
MSComm1.Output = "#021301" & Chr$(13)
Do
  Tzad = Text2.Text
  Tzad = strtoint(Tzad)
  DoEvents
  MSComm1.Output = "#01" & Chr$(13)
  Buffer$ = Buffer$ & MSComm1.Input
  t = (Buffer$ + 0.25) / 0.0569
  Text1.Text = t
Loop Until InStr(Buffer$, vbCr)
 
End Sub
 
Private Sub Command3_Click()
MSComm1.PortOpen = False
 
End Sub
 
Private Sub Command4_Click()
 
Open "data.dat" For Append As #1
Do
  Tzad = Text2.Text
  Tzad = strtoint(Tzad)
  DoEvents
  MSComm1.Output = "#01" & Chr$(13)
  Buffer$ = Buffer$ & MSComm1.Input
  t = (Buffer$ + 0.25) / 0.0569
  Text1.Text = t
  
  If t >= 13 And t <= 20 Then
   Begin
    terma = "õîëîäíà1"
    Text3.Text = terma
    MSComm1.Output = "#021301" & Chr$(13)
   End
   
  If t > 20 And t <= 33 Then
   Begin
    terma = "õîëîäíà2"
    Text3.Text = terma
    MSComm1.Output = "#021302" & Chr$(13)
   End
   
  If t > 33 And t <= 46 Then
   Begin
    terma = "òåïëà1"
    Text3.Text = terma
    MSComm1.Output = "#021303" & Chr$(13)
   End
  
  If t > 46 And t <= 59 Then
   Begin
     terma = "òåïëà2"
     Text3.Text = terma
     MSComm1.Output = "#021304" & Chr$(13)
   End
   
 
  If t > 59 And t <= 73 Then
   Begin
     terma = "ãàðÿ÷à1"
     Text3.Text = terma
     MSComm1.Output = "#021305" & Chr$(13)
   End
  
  If t > 73 And t <= 79 Then
  Begin
     terma = "ãàðÿ÷à2"
     Text3.Text = terma
     MSComm1.Output = "#021306" & Chr$(13)
   End
t1 = Time
Print #1, t; " "; t1 '
Loop Until InStr(Buffer$, vbCr)
Close #1
End Sub
 
Private Sub Command5_Click()
MSComm1.Output = "#021300" & Chr$(13)
End Sub
 
End Sub
 
Private Sub Command6_Click()
X = t
Dim sigma As Single, c As Single, i As Single
sigma = 6: c = 0
Picture1.Scale (-1, 1)-(10, -0.1)
Picture1.Line (0, 0)-(20, 0)
Picture1.Line (0, 2)-(0, 0)
Picture1.CurrentX = 10
Picture1.CurrentY = 10
'Picture1.AutoRedraw = True
'Picture1.ScaleMode = 2
'For i = 0 To 500 Step 50
 ' Picture1.CurrentX = i
  'Picture1.CurrentY = 200
  'Picture1.Print i * 0.1
'Next i
 
'Picture1.Print ""
For X = 0 To 100 Step 0.01
   Picture1.PSet (X, Exp(-(X - c) ^ 2 / sigma ^ 2)), vbRed
Next
End Sub
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 21:10
t = (Buffer$ + 0.25) / 0.0569
Вот так нехорошо делать. складывать строку с числом. сделайте так - надёжнее будет :
t = (val(Buffer$) + 0.25) / 0.0569

Visual Basic
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
Dim sigma As Single, c As Single, i As Single, xc As Integer, yc As Integer
sigma = 6: c = 0
xc = 30
yc = 300
 
Form1.ScaleMode = 3
Picture1.ScaleMode = 3
Picture1.Height = 350
Picture1.Width = 350
Picture1.AutoRedraw = True
Picture1.Line (xc, yc)-(xc + 300, yc)
Picture1.Line (xc, yc)-(xc, 0)
 
For X = 0 To 100 Step 0.01
   Picture1.PSet (X * 20 + xc, yc - 200 * Exp(-(X - c) ^ 2 / sigma ^ 2)), vbRed
Next
 
For i = 0 To 200 Step 20
  Picture1.CurrentX = 5
  Picture1.CurrentY = yc - i - 10
  Picture1.Print i / 200
Next
  Picture1.CurrentX = 5
  Picture1.CurrentY = yc - 230
  Picture1.Print "y"
 
For i = 0 To 300 Step 50
  Picture1.CurrentX = i + xc
  Picture1.CurrentY = yc
  Picture1.Print i / 20
Next
  Picture1.CurrentX = xc + 300
  Picture1.CurrentY = yc + 20
  Picture1.Print "x"
 
 
End Sub
1
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 21:14  [ТС]
Александр_ФФ, Вы просто не представляете какой Вы волшебник! спасиииииииибо!
0
10 / 10 / 0
Регистрация: 22.02.2010
Сообщений: 53
20.06.2010, 21:16
Рад, что помог, если что - обращайтесь
0
0 / 0 / 0
Регистрация: 20.06.2010
Сообщений: 8
20.06.2010, 21:21  [ТС]
Цитата Сообщение от Александр_ФФ Посмотреть сообщение
Рад, что помог, если что - обращайтесь
ооой, надеюсь после защиты диплома не придется такую ахинею писать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.06.2010, 21:21
Помогаю со студенческими работами здесь

Работающий исходник приложения используещего Servlet для реализации бизнес логики
Помогите! (Для не очень жадных) Нужен реально работающий (либо однозначно передающий суть дела) исходник (описание, документация)...

Как написать back propagation для нечеткой нейронной сети?
Приветсвую,начал писать нечеткую нейронную сеть для прогнозирования футбольных матчей. Сделал forward propogation,но когда дошел до...

Определить сетку разбиения для нечеткой модели на основе алгоритма кластеризации Густавсона-Кесселя
Помогите пожалуйста с заданием: Нужно определить сетку разбиения для нечеткой модели на основе алгоритма кластеризации Густавсона-Кесселя

Програмка для расчета градусов
на самом деле это кусок программки, остальное есть, нужна программка которая будет считать значения углов косинуса и синуса, скажем от 0 до...

Програмка для скачивания картинок с демотивации
Нужно написать програмку которая периодически, каждую минуту заходила на demotivatio.me и скачивала первую картинку, если она новая, а то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru