-
1. Data: 2010-05-07 17:35:31
Temat: [programowanie matematyczne]
Od: "Karol_tom" <K...@w...pl>
Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
Mosel),
to na pewno siedzą tu ścisłe mózgi i może podpowiedzą mi, gdzie ten cholerny
błąd siedzi, bo
już z dwie godziny próbuję coś zmieniać w kodzie i nic nie wychodzi (ciągle
dostaje komunikat, że typy zmiennych są niekompatybilne):
model ModelName
uses "mmxprs";
parameters
!liczba oczyszczalni N
N=3
M=3
! liczba wariantów
v=6
end-parameters
declarations
oczyszczalnie=1..N
przekroje=1..M
warianty=1..v
! czy w danej oczyszczalni używamy danego wariantu?
y:array(oczyszczalnie, warianty) of mpvar
BZT:array(przekroje) of linctr
x:array(oczyszczalnie) of real
xwar:array(warianty) of real
q:array(oczyszczalnie) of real
Q:array(przekroje) of real
p:array(przekroje) of real
B:array(przekroje) of real
u:array(oczyszczalnie) of real
k:array(przekroje,przekroje) of real
kb:array(przekroje,przekroje) of real
c:array(oczyszczalnie) of real
cwar:array(warianty) of real
sumy:array(oczyszczalnie) of integer
t:array(przekroje,przekroje) of real
end-declarations
!
!
Q::[15, 18, 25]
q::[0.8, 0.7, 0.5]
p::[220, 250, 265]
B::[4, 4, 3]
xwar::[0.6, 0.7, 0.75, 0.8, 0.9, 0.95]
cwar::[10, 12, 13, 16, 22, 30]
!u to xmax
u::[0.85, 0.9, 0.9]
t::[0, 1, 3,
0, 0, 2,
0, 0, 0]
kb::[0, 0.25, 0.25,
0, 0, 0.27,
0, 0, 0]
forall (j in oczyszczalnie, z in warianty)
y(j,z)=0 or y(j,z)=1
!tylko w jednym miejscu dla danej oczyszczalnie jedynka, dlatego:
forall (j in oczyszczalnie) do
b(j):=(sum(z in warianty) y(j,z))
b(j)=1
end-do
j:=1
while j<=v do
x(j):=(sum(z in warianty) y(j,z)*xwar(z))
!wartości C
c(j):=(sum(z in warianty) y(j,z)*cwar(z))
end-do
forall (i in przekroje, j in przekroje)
k(i,j):=exp(-kb(i,j)*t(i,j))
!ograniczenia
forall (i in przekroje) do
BZT(i):=(sum(j in 1..i) (1-x(j))*p(j)*q(j)*k(j,i))/(Q(i)+sum(j in 1..i)
q(j))
BZT(i)<=B(i)
BZT(i)>=0
end-do
!ograniczenia dot. zakresu stopnia redukcji zanieczyszczen
forall (j in oczyszczalnie) do
x(j)>=0
x(j)<=u(j)
end-do
!Funkcja celu:
z:=sum(j in oczyszczalnie) c(j)*x(j)
minimize(z)
writeln("Niezbędne środki wynoszą: ", getobjval)
forall (i in przekroje) do
writeln(" Stopień redukcji w oczyszczalni nr (",i,") wynosi
",getsol(x(i)))
writeln(" BZT (",i,") wynosi ",getsol(BZT(i)))
end-do
end-model
-
2. Data: 2010-05-07 18:58:22
Temat: Re: [programowanie matematyczne]
Od: "Karol_tom" <K...@w...pl>
Już sobie zadeklarowałem c i x jako linctr.
Kolejny problem, który się pojawił, że nie można dwóch tego typów zmiennych
mnożyć przez siebie.
Dodałem do uses kolejny element i ...niby działa, ale wychodzą głupoty
-
3. Data: 2010-05-09 21:35:28
Temat: Re: [programowanie matematyczne]
Od: Mariusz Marszałkowski <m...@g...com>
On 7 Maj, 19:35, "Karol_tom" <K...@w...pl> wrote:
> Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
> Mosel),
Dobry i ambitny temat na tą grupę. Niestety nie pomogę, nie znam ani
tego narzędzia,
ani języka. Za to mam pytanie, jakie to ma możliwości przy bardzo
dużej ilości
danych (miliony rekordów) i parametrów (dziewiątki tysięcy) ?
Pozdrawiam
-
4. Data: 2010-05-10 09:42:45
Temat: Re: [programowanie matematyczne]
Od: p...@p...onet.pl
> On 7 Maj, 19:35, "Karol_tom" <K...@w...pl> wrote:
> > Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
> > Mosel),
> Dobry i ambitny temat na tą grupę. Niestety nie pomogę, nie znam ani
> tego narzędzia,
> ani języka. Za to mam pytanie, jakie to ma możliwości przy bardzo
> dużej ilości
> danych (miliony rekordów) i parametrów (dziewiątki tysięcy) ?
> Pozdrawiam
a ze spytam z ciekawosci czym ty sie zajmujesz? nie musisz mowic nazwy
miasta firmy czy uczelni tylko ciekaw jestem co ty tam przetwazasz
fir
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
-
5. Data: 2010-05-10 15:32:32
Temat: Re: [programowanie matematyczne]
Od: Wit Jakuczun <w...@g...com>
W dniu 2010-05-07 20:58, Karol_tom pisze:
> Już sobie zadeklarowałem c i x jako linctr.
> Kolejny problem, który się pojawił, że nie można dwóch tego typów
> zmiennych mnożyć przez siebie.
XPress Mosel służy do rozwiązywania problemów programowania liniowego
lub całkowitoliczbowego oraz mieszanych. Jak sama nazwa wskazuje nie
można mówić o iloczynach zmiennych (jakiegokolwiek typu). Iloczyny można
modelować przy pomocy równań liniowych ale nie wszystkie i nie jest to
bardzo proste.
Wydaje mi się (piszę z panmięci), że jest też wersja do programowania
kwadratowego i ta wersja obsługuje iloczyny zmiennych. Nie pamiętam
tylko czy obsługuje iloczyny w ograniczeniach czy tylko w funkcji celu.
> Dodałem do uses kolejny element i ...niby działa, ale wychodzą głupoty
Co konkretnie dodałeś do uses? I co za głupoty wychodzą?
Pozdrawiam,
Wit Jakuczun
-
6. Data: 2010-05-10 15:33:55
Temat: Re: [programowanie matematyczne]
Od: Wit Jakuczun <w...@g...com>
W dniu 2010-05-09 23:35, Mariusz Marszałkowski pisze:
> On 7 Maj, 19:35, "Karol_tom"<K...@w...pl> wrote:
>> Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
>> Mosel),
> Dobry i ambitny temat na tą grupę. Niestety nie pomogę, nie znam ani
> tego narzędzia,
> ani języka. Za to mam pytanie, jakie to ma możliwości przy bardzo
> dużej ilości
> danych (miliony rekordów) i parametrów (dziewiątki tysięcy) ?
>
Żeby mówić o możliwościach trzeba wiedzieć o co się pytasz? Co XPress
miałby zrobić z tymi milionami rekordów?
XPress to solver do programowania liniowego oraz całkowito-liczbowego.
Jest bardzo w tym dobry.
Pozdrawiam,
Wit Jakuczun
-
7. Data: 2010-05-10 18:55:30
Temat: Re: [programowanie matematyczne]
Od: Mariusz Marszałkowski <m...@g...com>
On 10 Maj, 17:33, Wit Jakuczun <w...@g...com> wrote:
> W dniu 2010-05-09 23:35, Mariusz Marszałkowski pisze:> On 7 Maj, 19:35,
"Karol_tom"<K...@w...pl> wrote:
> >> Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
> >> Mosel),
> > Dobry i ambitny temat na tą grupę. Niestety nie pomogę, nie znam ani
> > tego narzędzia,
> > ani języka. Za to mam pytanie, jakie to ma możliwości przy bardzo
> > dużej ilości
> > danych (miliony rekordów) i parametrów (dziewiątki tysięcy) ?
>
> Żeby mówić o możliwościach trzeba wiedzieć o co się pytasz? Co XPress
> miałby zrobić z tymi milionami rekordów?
>
> XPress to solver do programowania liniowego oraz całkowito-liczbowego.
> Jest bardzo w tym dobry.
Właśnie takiej ogólnej rekomendacji potrzebowałem.
Dziękuję
-
8. Data: 2010-05-10 19:15:28
Temat: Re: [programowanie matematyczne]
Od: Mariusz Marszałkowski <m...@g...com>
On 10 Maj, 11:42, p...@p...onet.pl wrote:
> > On 7 Maj, 19:35, "Karol_tom" <K...@w...pl> wrote:
> > > Witam, choć to może mało związane z takim prawdziwym programowaniem (Xpress
> > > Mosel),
> > Dobry i ambitny temat na tą grupę. Niestety nie pomogę, nie znam ani
> > tego narzędzia,
> > ani języka. Za to mam pytanie, jakie to ma możliwości przy bardzo
> > dużej ilości
> > danych (miliony rekordów) i parametrów (dziewiątki tysięcy) ?
> > Pozdrawiam
>
> a ze spytam z ciekawosci czym ty sie zajmujesz? nie musisz mowic nazwy
> miasta firmy czy uczelni tylko ciekaw jestem co ty tam przetwazasz
Różne rzeczy... czasami rozpoznawanie obrazu, czasami przewidywanie
zapotrzebowania na produkty, czasami uogólnienia/kompresję końcówek
szachowych, a ostatnio klient nie zdradził mi co reprezentują dane i
nie
wiem za bardzo co liczyłem, jakieś heurystyki do przyspieszenia
algorytmów.
Pozdrawiam
-
9. Data: 2010-05-11 07:29:47
Temat: Re: [programowanie matematyczne]
Od: Wit Jakuczun <w...@g...com>
W dniu 2010-05-10 20:55, Mariusz Marszałkowski pisze:
>> Żeby mówić o możliwościach trzeba wiedzieć o co się pytasz? Co XPress
>> miałby zrobić z tymi milionami rekordów?
>>
>> XPress to solver do programowania liniowego oraz całkowito-liczbowego.
>> Jest bardzo w tym dobry.
>
> Właśnie takiej ogólnej rekomendacji potrzebowałem.
> Dziękuję
Są jeszcze inne produkty: Gurobi oraz Cplex. Gurobi aktualnei wydaje się
być najlepszy i ma dość ciekawą licencję (płaci się za czas używania
solvera).
Pozdrawiam,
Wit Jakuczun
-
10. Data: 2010-05-11 14:29:18
Temat: Re: [programowanie matematyczne]
Od: Mariusz Marszałkowski <m...@g...com>
On 11 Maj, 09:29, Wit Jakuczun <w...@g...com> wrote:
> W dniu 2010-05-10 20:55, Mariusz Marszałkowski pisze:
>
> >> Żeby mówić o możliwościach trzeba wiedzieć o co się pytasz? Co XPress
> >> miałby zrobić z tymi milionami rekordów?
>
> >> XPress to solver do programowania liniowego oraz całkowito-liczbowego.
> >> Jest bardzo w tym dobry.
>
> > Właśnie takiej ogólnej rekomendacji potrzebowałem.
> > Dziękuję
>
> Są jeszcze inne produkty: Gurobi oraz Cplex. Gurobi aktualnei wydaje się
> być najlepszy i ma dość ciekawą licencję (płaci się za czas używania
> solvera).
Dziękuję, będę musiał się w zainteresować tymi pakietami.
Pozdrawiam