Ñîñòàâëÿåì òàáëèöó â êîòîðîé áóäóò ïðèâåäåíû îñòàòêè îò ðàñêðîÿ íà çàêàç ïðè ðàçëè÷íûõ âàðèàíòàõ ðàñêðîÿ.
Íàïðèìåð ïî óñëîâèþ â ñîîòâåòñòâèè ñ âàðèàíòîì ñòàíäàðòíàÿ äëèíà ðàñêðîÿ ðàâíà 28 ìåòðîâ,
ò.å. ïåðâûé âàðèàíò ðàñêðîÿ áóäåò ñîñîòàâëÿòü 0 ðóëîí äëÿíîé 4 ì, 0 ðóëîíîâ äëèíîé 6ì è 4 ðóëîíà äëèíîé 9 ì, ðóëîíîâ äëèíîé 11 ì. íå áóäåò, ÷òî â ñóììå äàñò 27, ñëåäîâàòåëüíî îòõîäû áóäóò ñîñòàâëÿòü 1 ìåòð. Âòîðîé âàðèàíò êîãäà 1 ðóëîí ïî 6 ì è äâà ïî 11 ì, â ýòîì ñëó÷àå îñòàòêîâ íå áóäåò è ò.ä. Âñåãî ïîëó÷àåòñÿ 19 âàðèàíòîâ ðàñêðîÿ.
 ïðîãðàììå ýòî áóäåò âûãëÿäåòü òàêèì îáðàçîì:
l = 28
a1 = 4: a2 = 6
a3 = 9: a4 = 11
r = 4
m = Application.Min(a1, a2, a3, a4)
t = Application.Floor(l / m, 1)
For i1 = 0 To t
For i2 = 0 To t
For i3 = 0 To t
For i4 = 0 To t
s = 28 - a1 * i1 - a2 * i2 - a3 * i3 - a4 * i4
If s >= 0 And s < m Then
Cells(r, 1).Value = r - 3
Cells(r, 2).Value = i1
Cells(r, 3).Value = i2
Cells(r, 4).Value = i3
Cells(r, 5).Value = i4
Cells(r, 6).Value = s
r = r + 1
End If
Next i4
Next i3
Next i2
Next i1
Íà ëèñòå ýòî áóäåò âûãëÿäåòü òàê:
Ä ë è í û ð ó ë î í î â í à ç à ê à ç | |||||
Âàðèàíòû | Îñòàòîê | ||||
ðàñêðîéêè | 4 | 6 | 9 | 11 | îò ðàñêòîÿ |
1 | 0 | 0 | 3 | 0 | 1 |
2 | 0 | 1 | 0 | 2 | 0 |
3 | 0 | 1 | 1 | 1 | 2 |
4 | 0 | 3 | 1 | 0 | 1 |
5 | 1 | 0 | 0 | 2 | 2 |
6 | 1 | 1 | 2 | 0 | 0 |
7 | 1 | 2 | 0 | 1 | 1 |
8 | 1 | 2 | 1 | 0 | 3 |
9 | 1 | 4 | 0 | 0 | 0 |
10 | 2 | 0 | 1 | 1 | 0 |
11 | 2 | 0 | 2 | 0 | 2 |
12 | 2 | 1 | 0 | 1 | 3 |
13 | 2 | 3 | 0 | 0 | 2 |
14 | 3 | 1 | 1 | 0 | 1 |
15 | 4 | 0 | 0 | 1 | 1 |
16 | 4 | 0 | 1 | 0 | 3 |
17 | 4 | 2 | 0 | 0 | 0 |
18 | 5 | 1 | 0 | 0 | 2 |
19 | 7 | 0 | 0 | 0 | 0 |
Ïóñòü Xj – êîë-âî ñòàíäàðòíûõ ðóëîíîâ, ðàçðåçàííûõ ïî âàðèàíòó j, ãäå j[1..19]. Îãðàíè÷åíèÿ íàëàãàåìûå íà ïåðåìåííûå Xj ñâÿçàíû ñ òðåáîâàíèåì îáåñïå÷èòü èçãîòîâëåíèå çàêàçàííîãî êîë-âà íåñòàíäàðòíûõ ðóëîíîâ. Ô-öèÿ öåëè ó÷èòûâàåò ñóììàðíûå îòõîäû, ïîëó÷àåìûå ïðè âûïîëíåíèè çàêàçà. Òàêèì îáðàçîì èìååì ñëåäóþùóþ ìàò. ìîäåëü:
Ìèíèìèçèðîâàòü:
Z=x1+2x3+x4+2x5+x7+3x8+2x11+2x12+2x13+x14+x15+3x16+
+2x18 + 4(x5+x6+x7+x8+x9+2x10+2x11+2x12+2x13+3x14+4x15+4x16+4x17+5÷18+7x19-220)+ 6(...-210)+9(...-350)+
+11(...-380)
Îòâåäåì äèàïàçîí ÿ÷ååê (i4:i22) ïîä ïåðåìåííûå . Ââåäåì â äèàïàçîí ÿ÷ååê (j3:m3) ëåâûå ÷àñòè îãðàíè÷åíèé, îïðåäåëåííûå ñëåæóþùèìè ôîðìóëàìè:
=ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;B4:B22)
=ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;c4:c22)
=ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;d4:d22)
=ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;e4:e22)
 ÿ÷åéêó N4 ââåäåì ô-öèþ öåëè:
=ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;F4:F22)+B3*(ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;B4:B22)-J3)+C3*(ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;C4:C22)-K3)+D3*(ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;D4:D22)-L3)+E3*(ÑÓÌÌÏÐÎÈÇÂ($I$4:$I$22;E4:E22)-M3)
ãäå â ÿ÷åéêè B3:E3 ââåäåíû äëèíû, à â ÿ÷åéêè J3:M3 – êîë-âà çàêàçàííûõ ðóëîíîâ
Âûáåðåì êîìàíäó ñåðâèñ – Ïîèñê ðåøåíèÿ è çàïîëíèì îòêðûâøååñÿ äèàëîãîâîå îêíî Ïîèñê ðåøåíèÿ (Solver):
- Óñòàíîâèì öåëåâóþ ÿ÷åéêó – N4
- Èçìåíÿÿ ÿ÷åéêè I4:I22
- Îãðàíè÷åíèÿ $I$4:$I$22=öåëîå
$I$4:$I$22>=0
$j$4:$m$4>=$j$3:$m$3
- Ô-öèÿ = ìèíèìèçàöèÿ
Ê î ë - â à ç à ê à ç à í í û õ ð ó ë î í î â | ||||
220 | 210 | 350 | 380 | Îòõîäû |
220 | 210 | 350 | 380 | 49,99996 |
2.3.7 Áàçà äàííûõ
Ñîçäàäèì ïîëÿ áàçû äàííûõ, è çàíåñåì èõ â òàáëèöó. Áàçà äàííûõ áóäåò çàïîëíÿòüñÿ ïðîãðàììîé, ïðîãðàììå íå òðåáóþòñÿ íàçâàíèÿ ïîëåé, íî äëÿ îáëåã÷åíèÿ îðèåíòàöèè â ïåðâîé ñòðîêå ââåäåì äàííûå ñîîòâåòñòâóþùèå ïîëÿì ÁÄ
Ñîçäàäèì êíîïêó “Äîáàâëåíèå” äëÿ äîáàâëåíèÿ çàïèñåé â ÁÄ, äåëàåòñÿ ýòî òàê: Âûçûâàåì ïàíåëü èíñòðóìåíòîâ íà êîòîðîé ðàñïîëîæåíû ïðèìèòèâû, ò.å. îêíà ââîäà, êíîïêè è ò.ä. Ñîçäàåì íà ôîðìå êíîïêó, è ñïîìîùüþ ñâ-âà Caption ïðèñâàèâàåì åé íàçâàíèå “Äîáàâëåíèå”
Ñîçäàäèì ìàêðîñ êîòîðûé áóäåò îòâå÷àòü çà îáðàáîòêó ñîáûòèé ïî íàæàòèþ ýòîé êíîïêè. Ïåðåéäåì â ñðåäó Visual Basic for Application è â ìåíþ «Âñòàâêà» âûáåðåì UserForm, íà ýòó ôîðìó è ïîìåñòèì âñå îáüåêòû îãîâîðåííûå â óñëîâèè(m ðàñêðûâàþùèõñÿ ñïèñêîâ, n ïîëåé ââîäà, ...).