Szevasztok!
Az lenne a kérdésem, hogy megpróbáltam megcsinálni a 4. kisházit,
elsőre úgy tűnt, hogy jól működik, pl az alábbi esetre:
domain([X,Y,U,Z], 0, 9), X#>=4, Y#>=8, U#>=5, max_lt([X,Y,U], Z).
De ha korlátokat hozok ki a max_lt/2 után akkor, valahogy nem akarja
felébreszteni az én korlátomat amit írtam, pl ennél a példánál:
domain([X,Y,U,Z], 0, 9), max_lt([X,Y,U], Z), X#>=4, Y#>=8, U#>=5.
A programkód-ból egy részlet, ami szerintem felelős a hibáért:
feltmake([],L,L).
feltmake([A|B],E,L) :- C=..[dom,A], E1=[C|E], feltmake(B,E1,L).
max_lt(L,Z):- feltmake(L,[],Flist), fd_global(max_lt(L,Z),L-0,[dom(Z)
|Flist]).
:- multifile clpfd:dispatch_global/4.
:- discontiguous clpfd:dispatch_global/4.
clpfd:dispatch_global(max_lt(_,Z),L0-S0,Ll-S,Actions) :-
fd_max(Z,Zmax), filter(L0,Ll,S0,S,Zmax), length(Ll,Len),
( Len=0 -> Sk is S+1, Actions=[Z in Sk..sup|exit]
; szuk(Ll,Zmax,Szlist), Sk is S+1, Szl=[Z in Sk..sup|Szlist],
Actions=[exit|Szl]
).
Segítségeteket előre is köszönöm!
Üdvözlettel:
Péter
> Hello Lista!
> A 2000-es tavaszi vizsga második feladatát akartam megcsinálni, ami egy
> clpq-s optimalizálási feladat. Megírtam az eljárást, ami szépen fel is vette
> a korlátokat, az azt követõ maximize-nál azonban meghiúsult. Kivettem az
> eljárásból, anélkül mûködött, de se maximize-zal, se suppal együtt már nem.
> Miért van ez? Valahány változó felett már nem mûködik a sup? Ha igen, akkor
> hogyan lehet az ilyen feladatokat megoldani?
>
> Ez itt a probléma:
> | ?- optimum([X,Y,Z],7,[1,5,2],16,[3,8,5],[5/2,7,9/3],P).
> {P=5/2*X+7*Y+3*Z},
> {X+5*Y+2*Z=<7},
> {X+8/3*Y+5/3*Z=<16/3} ? ;
> no
> | ?- optimum([X,Y,Z],7,[1,5,2],16,[3,8,5],[5/2,7,9/3],P),sup(P,Sup).
> no
> | ?- optimum([X,Y,Z],7,[1,5,2],16,[3,8,5],[5/2,7,9/3],P),maximize(P).
> no
>
> Köszönöm
>
Azt hiszem az a baj, hogy nem kotod ki, hogy X, Y, Z >= 0. Enelkul a
nincs maximum, es ezt a maximize ugy jelzi, hogy meghiusul.
Apropo:
Kerdes:
Hany Prolog programozo kell egy villanykorte becsavarasahoz?
Valasz:
no
A leveled nem ment el a listara mert nem a feliratkozott cimedrol
kuldted...
-Peter
Sziasztok!
Meg tudná vki mondani, hogy miért nem lehet clpfdben korlátokat feltételes
szerkezetben használni? Azt szeretném valahogye elérni, hogy bizonyos
korlátokat csak más korlát-feltételekkel vegyen fel a program. Így ha ez
később meghiusuláshoz vezetne, visszalépjen erre a feltételes szerkezetre a
korábban felvett korlátokat semmissé venné és az else ágat választaná ahol
ismét pár korlát feltétellel vennék fel újabb korlátokat. Gyakorlatilag az
történik, hogy nincs visszalépés. Pedig a slideokban valahol mintha ezt
olvastam volna. 1xűen amint oda jutna hogy az adott feltételekkel felvett
korlátok összesége inkonzisztens, akkor meghiusul az egész. Valószeg én nem
értek vmit nagyon... Hogy lehetne ezt a problémát megoldani valahogyan?
Itt 1 részlet a programból, hátha segít:
( SO #\= 0, X #\= 0 ->
( ElE #= 1, ElEE #=< 0 -> E #= 1
; L == [], ElE #= 0 -> E #= 0
; true
)
; E #= 0
),
E a radarkép éppen vizsgált mezejének értéke. Ha 1 akkor felhőrész, ha 0
akkor égrész, -1 ha radarképen kívül van. SO az E sorának maradék
sorösszege, X az E oszlopának maradék oszlopösszege, figyelembe véve az
eddig vizsgált mezőket. ElE az oszlopban egyel feljebb levő mező értéke.
ElEE a 2vel feljebb levőé. L ==[] akkor teljesül, ha az a vizsgált mező az
utolsó az oszlopban.
Tehát azt akartam leírni, hogy ha SO és X sem 0, tehát a vizsgált mező még
lehet 1es is, 0 is, akkor:
1) Ha a mező fölött levő mező 1, a fölötte levő pedig vagy 0, tehát ég, vagy
radarképen kívüli, akkor a vizsgált mezőnknek mindenképp 1nek kell lennie,
hogy legalább 2x2es felhők legyenek.
2) Ha nem ez a helyzet áll fenn, akkor az else ágra lép, ahol L ==[], tehát
az utolsó mezőn vagyunk, és az előző mező EiE 0, akkor ennek a mezőnek is
0nak kell lennie.
Ha vagy SO vagy X már 0, akkor E mindeképp 0 kell legyen.
Ez így működhet? Mindenképp vizsgálni szeretném a környező mezőket, de mivel
azok mind fd változók lesznek, csak így tudtam megoldani.
Köszönöm a válaszokat!
Csaba
u.i.: bocsi ha 2x ment el a mail :(
Szevasztok!
A nagyházi feladat dokumentációját ugye szintén a beadószkript
segítségével kell beadni, úgy hogy a könyvtárba a felhok.pl mellé
odateszem a doksit?
Bye
Üdv mindenkinek!
Nekem a kedd tökéletesesn megfelel, például reggel 8-45/9-től 11ig,
mivel valaki írta, hogy ő 11 körültől már nem ér rá,de ha szerdán lesz,
az sem nagy probléma.
Üdvözlettel:
Péter
Sziasztok!
Két dolog:
1. A tárgy weblapján a gyakorló feladatoknál lévő linkekben túl sok az
oktatas :-) Azaz most nem a kívánt helyre mutatnak.
2. Mikor lesz a héten konzultáció, most hirtelen nem látom sehol kiírva, s
persze mikor?
Krisztián
Sziasztok!
Az elso nhlp vizsga utan beszelgettem valakivel a terem elott a
szakiranyrol, meg a beszedinf. targyrol. Ha magadra ismersz, akkor
legyszi irj, szeretnek par kerdest feltenni!
Adam
Üdv mindenkinek!
Egyik ismerősöm nem tud belépni az ural2-re, ezért az én belépésemen
keresztül próbáltuk elküldeni az ő háziját, de ezt az üzenetet kapta, s
nemigazán tud mit kezdeni vele:
! Existence error in argument 1 of ensure_loaded/1
! file efelhok does not exist
! goal: ensure_loaded(user:efelhok)
SICStus 3.11.2 (x86-linux-glibc2.2): Wed Jun 2 11:43:47 CEST 2004
Licensed to BME DP/NLP
cat: /home/pp/dp/dp-
bhw/rest/homeworks/current/recent/PszotaZsolt___KLC95U/result1.tim.
tmp: No such file or directory
>>>>> Normal program termination: FAILURE
Ez mit jelenthet?
A háziját a keretprogrammal kipróbálva simán lefut a tesztesetekre.
Segítségeteket előre is köszönöm!
Üdvözlettel:
Ekler Péter
Szevasztok!
A nagyházi feladatomat próbáltam beadni a beadószkripttel, de, amikor
megpróbálom elindítani a szkriptet:
bash nlpnhfbe.04a
./nlpnhfbe.04a
mindkét esetbe ezt a választ kapom:
-bash: ./nlpnhfbe.04a: cannot execute binary file
Az ural2-re felcsatlakozva próbáltam elküldeni.
Segítségeteket előre is köszönöm!
Üdvözlettel:
Ekler Péter