Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

2LP Priručnik


Osnovni elementi i koncepti

Naredbe

Naredba je ograničavanje , testiranje zadatka , pozivanje procedure , blok izgrađen od drugih naredbi koristeći zagrade , jedne od kontrolnih naredbi continue ,break , return ili složena naredba izgrađena sa jednim od drugih programskih konstrukata 2LP. Naredba u 2LP ili uspe ili ne uspe.

Spone i Blokovi

Naredbe u 2LP mogu se svrstati u jedan blok za naredbe ograđivanjem zagradama. Naredbe unutar bloka pozivaju se ​​kao celina.

Procedure

Procedura ima oblik>
Glavna procedura mora biti pozvana 2lp_main ()

Tipovi

2LP jezik podržava četiri tipa: int , double, string , i continuous.Tipovi double i int su isti kao u C i C + +, odnosno int je celobrojan tip a double je decimalan tip. Typestring je analogan karakteru * u C. Nizovi varijabli svakog od četiri osnovna tipa mogu biti otvoreni.

Izrazi

Afina izraz i njegov tip definisani su indukcijom. Većina osnovnih afina izraza su identifikatori i konstante, koje imaju svoje tipove. To je osnovni slučaj indukcije. Afina izraz se tada definiše kao identifikator, konstanta, ili složeno izražavanje izgrađeno od jednostavnijih afinih izraza. Složeni izraz nasljeđuje njegov tip iz njegovih činilaca. Pogledajmo neke primere:

Izrazi i Tipovi
Izrazi Tipovi
a int or double
b int or double
X continuous
X + a continuous
(X + a) continuous
b*(X + a) continuous
floor(b*(X+a)) double
Y - floor(b*(X + a)) continuous

Formalnije, složeni izrazi su sastavljeni podrazumevajući konstrukcije:
Za složene uslove nastale primenom funkcije, nastali afina izraz imaj tip koji se vraća funkcijom.. Stavljanje zagrade oko izraza stvara novi izraz istog tipa; slično, stavljanjem prefiksa plus ili minus stvara se novi izraz istog tipa.

U kombinovanim izrazima pomoću binarnih znakova tip continous dominira nad double tipom i tipovi double i continous dominiraju nad tipom int .Postoje dva ograničenja. U formiranju složenog afina izraza, ako je binarni znak operacije *, onda argument leve ruke ne može biti continous tipa;. Ako je znak operacije /, nijedan argument ne može biti tipa continous.

Dakle, osnovno pravilo je da se afina izraz continous tipa ne može koristiti kao preostali argument množenja ili kao argument deljenja. The 2LP parser proverava da složeni izrazi doprinose linearnim ograničenjima potvrđivanjem da je ovo pravilo zapaženo. Tako, na primer, linija koda
ne može biti raščlanjena uspešno, jer se izraz (X + 1) koristi kao koeficijent.

Lokalne i globalne varijable.

Lokalne i globalne varijable svih tipova mogu biti deklarisane. Lokalne varijable continous tipa su klase statičkog skladištenja. To znači da svaki put kad se postupak poziva njegova lokalna continous varijabla označava iste varijable kao u prethodnim pozivima. Ograničenja izgrađena sa tim varijablama ostaju na snazi ​​nakon što je procedura izvršena uspešno.

Odgovarajući Znakovi Računske Radnje

Znakovi računske radnje su ==, <=,> =,! =, <, I>. Prva tri su nazvani zatvorenim relacijskim znakovima, druga tri su nazvana oštrim relacijskim znakovima. Oštri relacijski znakovi ! =,>, I < mogu se koristiti samo u testovima, a ne u ograničenjima.

Ograničenja.

Ograničenje je deklarativna naredba koja sprovodi izveštaje na kontinualne varijable. Formalno navedeno, ograničenje je naredba oblika.
gdje barem jedan od afinih izraza tipa continous. Zatvoreni relacijski znak može biti ==, <=, ili> =. Kada ograničenje uspe, to je u skladu je sa oblašću dopustivih rešenja koja su do sada definisana i dodata ograničenjima u definisanoj oblasti. Međutim, ako je novo ograničenje dodato i bez razloga se nalazi u trenutnoj oblasti rešenja , onda novo ograničenje ne uspeva..

Testovi

Test uspoređuje dve naredbe koji su tipa double ili int.Formalno, test je izraz u obliku
gdje afina izrazi nisu tipa continous .Kao i sa constraints,ispitivanja ili uspevaju ili ne. Međutim, za razliku od ograničenja, testovi neće uticati na trenutnu oblast rešenja ili witness point .Strogi znakovi ! =,>, I < mogu se koristiti samo u testovima, ali ne u ograničenjima. Izrazi tipa string se ne mogu koristiti u testovima.

Raspodela

Osnovna operacija sa varijablama tipa int i double je operacija raspodele.Ona ima oblik
gde su varijabla i afina izraz obe tipa int ili double.

Osnovna operacija sa varijablama tipa string je takođe operacija raspodele. Ona ima oblik
Gdje su identifikatori varijabli i konstanti istog tipa string

Za razliku od constraints i tests naredbi, naredba raspodela uvek uspeva.

Witness Point

Tačka u uglu poliegra zove se teme.Simpleks zasnovan na ograničenju Solver održava trenutnu dopustivu oblast rešenja zajedno sa istaknutim temenom. O vo teme se zove se witness point.

Tip Konverzije

Kada je varijabla tipa continuous korišćena u pozivanju ugrađene funkcije, i tip parameta je double onda je vrednost witness point upotrebljena. Ako je varijabla ili izraz tipa korišćena u ugrađenoj funkciji ili postupku ili korisnički definisanih procedura u kojoj je celobrojna vrednost očekivana,vrednost je skraćena; ako varijabla ili izraz tipa int korišćena, tamo gde se očekuje double , vrednost je prisiljena na tip double.
_______________________________________________________________________________________________________________________________

Refernce jezika

Loop Varijabla

Loop varijable su uvedene u zaglavljima and petlje, or petlje, i c_or petlje. Na primer, varijable i, j i k su loop varijable u segmentima koda u nastavku.
Za and petlje, or petlje i c_or petlje, varijable koje su uvedene kao kontrola loop varijable ne mogu biti dodeljene telu petlje i mogu samo biti preneti vrednošću na poziv procedure koji se javlja u telu petlje. Ako se unatražno odvija na choice point koja je u sklopu tela petlje, kontrola loop varijable se vraća na svoju vrednost u stvaranju choice point. Opseg kontrolne loop varijable je ograničen na telo petlje. Imajte na umu da je ovo drugačije od ANSI C i C++ konvencija gde loop varijabla ostaje dostupna do kraja obuhvaćenog postupka.

Naredba inkrementiranja i++ može se koristiti samo u koraku zadatka u zaglavlju petlje, na drugom mestu mora se koristiti i=i+1. Slična primedba važi i za dekremente jedinica.

Konjunkcija

Konjunkcija može se izraziti na dva načina. Prvi je jednostavna juxta pozicija:
Drugi način je pomoću and petlje. Ključna riječ and započinje petlju i praćena je zaglavljem petlje. Opšti oblik zaglavlja petlje je
Početni zadatak kreira i inicijalizuje novu varijablu, pozvajući loop control variable.Sledeći korak zadatka dodeljuje novu vrednost loop controle variable. Ovo omogućava širok raspon načina ažuriranja loop varijable.

Zaglavlje and petlje sledi izjavu koja se zove telo petlje. Kao i svaka petlja konstruisana u 2LP, loop controle varijabla u and petlji može samo biti dodeljena u zaglavlju petlje, a ne unutar tela petlje, niti može njena vrednost da se dodeli nakon izvršenja petlje.

Sigma Loops

Ključna reč Sigma počinje petlju i sledi ga zaglavlje petlje koja ima oblik
gde je afina izraz type int ili double. Relacijski znak može biti <=,> =, ==, <,>, ili! =.

Vrednost kontrolne varijable se menja nakon svakog prolaza kroz petlju korakom assignement koji dodeljuje vrednost kontrolnoj varijabli. Napominjemo da ova forma dopušta promenu na kontrolnoj varijablij u inkrementima osim u jediničnim inkrementima. Na primer, da bi sumirali parne elemente niza od 10 elemenata nazvanog b, jedan će pisati.
Kada koristimo jedinične inkremente, možemo zameniti i++ naredbom i = i 1. Isto tako, za jedinične dekremente, koristimo i=i-1 ili i--.

Opseg sigma petlje je deo sume koji odmah sledi zaglavlje petlje, a izraz sigma loop ima isti tip kao ovaj pojam. Otuda
je kontinualnog tipa i
tipa int. Još jedna stvar: ako test u petlji nikada uspe, onda se petlja vraća sa 0. Na primer, izraz
se procenjuje prema 0 jer test 0 <0 ne uspeva.

Trajna Disjunkcija

Trajna disjunkcija je izražena either/or konstrukcijom. Sintaksa je:
Izjave se izvode sve dok jedna od njih uspe ili sve ne propadnu. Ako ni jedna od njih ne uspe, izjava either/or sama po sebi propada. Ako je prva naredba koja će uspeti where ichoice point je kreiran. To znači da ako kasnija naredba izvan opsega ovog either/or propada i kontrola se vraća na either/or naredbu, proces ponovno počinje sa .

Trajna disjunkcija takođe može biti izražena sa or loop konstrukcijom. Sintaksa je:

      or(<initial assignment>; <loop condition>; <step assignment>)
      <statement>

Varijabla u početnoj dodeli naziva se loop varijabla ili loop controle varijabla.Njegov opseg je. se naziva telom petlje.
Semantika ove petlje je kako sledi: loop varijabla je inicijalizovana, je izvršena, a ako to ne uspe petlja je izvršena neuspešno. Ako uspe, petlja se nastavlja. Akouspe, petlja će se izvršiti uspešno i choice point će biti snimljen, a ako se taj choice point aktivira kasnije neuspehom, loop varijabla se ažurira pomoću vrednosti koje je imala kada je petlja poslednji izvršena uspešno. Ako je break izjava izvršena unutar tela petlje, petlja će se neuspešno izvršiti i choice point nec biti stvoren. Ako je continue naredba izvršena unutar tela petlje, svi choice point stvoreni u telu petlje su uklonjeni; kontrola se vraća na vrh petlje.

Kondicionalna Disjunkcija

Za kondicionalnu disjunkciju kao u C/C + +, 2LP sintaksa je izražena c_either/or konstrukcijomi. Sintaksa je:

      c_either <statement>
      or <statement>
      ...
      or <statement>

Kondicionalna disjunkcija je bliska if/then/else po duhu i semantici. Zapravo,

      c_either <statement>
      or <statement>

je ekvivalentna

      if <statement>
      then ; // Null statement
      else <statement>

Naredbe se izvode sve dok jedna od njih uspe ili sve ne propadnu. Ako ni jedna od njih ne uspe, izjava c_either/or sama po sebi propada. Ako je prva naredba koja će uspeti where ichoice point neće biti kreiran.. To znači da ako kasnija naredba ne uspe, kontrola se ne vraća na c_either/or izjavu.

Kondicionalna disjunkcija takođe može biti izražena sa c_or loop konstrukcijom. Sintaksa je:

    c_or(<initial assignment>; <loop condition>; <step assignment>)
    <statement>

Varijabla u početnoj dodeli naziva se loop varijabla ili loop controle varijabla.Njegov opseg . se naziva telom petlje. Semantika ove petlje je kako sledi: loop varijabla je inicijalizovana, je izvršena, a ako to ne uspe petlja je izvršena neuspešno. Ako uspe, petlja se nastavlja. Ako uspe, petlja će se izvršiti uspešno i choice point će biti snimljen, a ako se taj choice point aktivira kasnije neuspehom, loop varijabla se ažurira pomoću vrednosti koje je imala kada je petlja posljednji izvršena uspešno. Ako je break naredba izvršena unutar tela petlje, petlja će se neuspešno izvršiti i choice point nec biti stvoren. Ako je continue naredba izvršena unutar tela petlje, svi choice point stvoren u telu petlje su uklonjeni; kontrola se vraća na vrh petlje.

Implikacija i Kondicionalne Naredbe

Sintaksa implikacione naredbe u 2LP je

      if <statement>
      then <statement>

Ako prethodna naredba uspe, sledeća naredba se poziva; ako sledeća naredba ne uspe onda ni naredba if/then neće,inače bi uspela. Ako prethodn naredba ne uspe, onda if/then naredba uspeva bez pozivanja sledeće naredbe. if/then/ else naredba ima sledeću sintaksu:

      if <statement>
      then <statement>
      else <statement>

U ovom konstruktu, ako prethodna ne uspe, poziva se naredba koja sledi else. Cela if/then/else uspeva zavisno od uspeha ili neuspeha naredbe koja sledi else. Prema primeru, razmotrite naredbu

      if X >= Y;
      then Z <= 100;
      else Z >= 150;

Ako je rešenje X> = Y u skladu sa trenutnom oblašću dopustivih rešenja, onda se uslovno smanjuje konjukcijom X> = Y, Z <= 100. Ako rešenje X> = Y nije u skladu sa trenutnom oblašću dopustivih rešenjai, Z <= 100 nije pokrenuto, ali je rešenje Z> = 150 je pokušano, u ovom slučaju, ako to nije moguće, cela if/then/else naredba ne uspeva. Tumačenje implikacija za rešenja generalizuje standardnu programsku semantiku za if /then/else. Kada ograničenja nisu uključena, uslovni konstrukti u 2LP imaju svoj ​​uobičajeni smisao. Tako, na primer, ako su a i b type int ili double,segment koda

      if a > b;
      then printf("Good morning world");
      else printf("Good evening world");

će ispisati "Good morning world" samo ako test a> b uspe; suprotno, ispisuje "Good evening world."

Choice Point.

Choice point je kreiran either/or naredbom ili or loop .Choice point je unutrašnji mehanizam za potporu trajne konjukcije. Nakon neuspeha, kod se vraća do poslednjeg choice point stvorenog dok je još postojalo otvorenih mogućnosti. Ovaj mehanizam je robustan u tome da će choice point biti vraćen čak i nakon što je postupak u kojem je stvoren je izvršen.

Karakteristike Preprocesora.

2LP omogućava preprocesoru lakoću, što je preliminarni korak u kompilaciji. Te dve podržane osobine su #define i #include.

# define karakteristika se koristi zamenu tokena s proizvoljnim redosledom znakova, zamena može biti onemogućena sa #undef. Zamene su namenjene samo za tokene i nije im mesto sa navedenim nizovima. Opšti oblik je:

      #define <identifier> <replacement string>
      #undef <identifier>

Najčešća upotreba #define je da izdvoji dimenzije:

      #define N 10
      continuous X[N];

Još jedna zajednička upotreba pružiti sintaksni sugar. Dva primera su:

      #define do_and_undo not not //double negation
      #define until_break and(;;) //infinite loop
      #define until_success or(;;) //infinite loop

Ova karakteristika preprocesora ne podržava makronaredbe sa argumentima.

# include karakteristika se koristi za inkluziju. Bilo koja izvorna crta forme

      #include filename-in-quotes

može biti upotrebljena. U potrazi za početnom datotekom izvorni program je pronađen. Uključene datoteke mogu sadržaati # include linije.

Ova karakteristika se može koristiti za uređivanje i pokretanje modela koji su preveliki za editor ako grupiisani u jednu datoteku.

Kljucne reci i uslovi

2lp_main ()

Ova ključna riječ mora biti naziv postupka za glavnu proceduru.

absgap

absgap(double)

absgap postupak uspostavlja jaz između zadnje solucije pronađene u find_max ili find_min bloku. Primer:

      find_max: Z;
      subject_to {
      absgap(1.0);
      search();
      }

and

Ova ključna reč se koristi za kodiranje i petlju. Na primer

      and(int i=0;i<N;i++)

Pogledati takođe Konjunkcija.

boolean

Ključna riječ boolean koristi se za stvaranje eksternih funkcija koje ili uspevaju ili ne. Eksterna funkcija bi trebalo da vrati ceo broj. Na primer:

      extern boolean start_empty_job(int,int);

break

Naredba break se koristi za prekidanje bilo and, or petlje ili c_or petlje. Ako se koristi and petlja, petlja i uspeva. Ako se koristi or petlja ili c_or petlja, petlja propada i vraća se bez stvaranja bilo koje choice point.

C_either

Ova ključna riječ označava da je disjunkcija uslovljena, kao u C/C++.

Pogledati takođe Kondicionalna Disjunkcija.

C_or

Ova ključna reč sledi c_either naredbu kada koristite uslovnu disjunkciju ili počinjete konstrukciju c_or petlje.

Pogledati takođe Kondicionalna Disjunkcija.

ceil

      double ceil(double)

Kada je ova funkcija pozvana sa double, vraća se sa sledećom najvećom celobrojnom vrednošću. Kad se poziva sa kontinualnom varijablom, ona se vraća sa sledećom najvećom celobrojnom vrednošću witness point-a te varijable.

continue

Ova ključna reč se koristi u telu and, or i c_or i, ili i c_or petlje. U and petlji je glavni deo izvršen uspešno i kontrola se vraća na čelo petlje. U or petlji glavni deo je izvršen neuspešno i kontrola se vraća na čelo petlje. No choice ukazuje da su stvorene u telu petlje sačuvane

continuous

Ključna reč continous koristi se za stvaranje prostora za čuvanje kontinualnih varijabli. Primer:

      continuous X,Y,Z[10];

Pogledati takođe Tipovi.

double

Ključna reč double koristi se za stvaranje prostora za čuvanje dvostrukih varijabli

      double x,y,a[40];

Pogledati takođe Tipovi

else

Ova ključna reč označava početak drugog dela, if/then/else naredbe.

Pogledajte takođe Implikacija i Kondicionalne Naredbe.

either

Ova ključna riječ se koristi da ukaže na postojeću naredbu. Either konstrukciju sledi jedan ili više konstrukata.

Pogledajte takođe Trajna Disjunkcija.

exit

      exit()

Ovaj postupak završava 2LP kod.

extern

Ova ključna riječ se koristi za saopštavanje 2LP sistemu da su varijable ili postupci koje slede zapravo iskazani u eksternom DLL. Ova ključna riječ mora biti praćena jednim od sedećih tipova: int, double, boolean, ili void.Primer:

      extern int wait_list[QUEUESIZE][JOBS];
      extern boolean goal(int);

fabs

      double fabs(double)

Kada je ova funkcija pozvana sa double, ona vraća apsolutnu vrednost varijable. Kada se pozove sa kontinualnom varijablom, ona vraća apsolutnu vrednost witness point-a te varijable. Primer:

      d = fabs(wp(X));

find_all

find_all ključna riječ mora biti praćena naredbom:

    find_all <statement>

, dolazi do traganja unazad i traženja sledećeg rešenja za . Ovaj proces se nastavlja sve dok sva rešenja ne budu pronađena. Kada više nema mogućih rešenja, find_all se izvršava uspešno bez promene prvobitne dopustive oblasti rešenja. Zatim,ako nikad sama ne uspeva, onda find_all takođe ne uspeva. Primer:

      find_all {
      solve_salt_and_mustard();
      count = count + 1;
      }

find_max

find_min ključna reč koristi se sa subject_to ključnom reči za upotrebu dela i veze pretrage za pronalaženje maksimalne vrednosti varijable ili izraza (objektivna funkcija) pod uslovima subject_to bloka. Ovaj konstrukcija prisiljava kod da ograniči objektivnu funkciju kako bi bila jednako dobra kao i prethodna rešenja. find_min konstrukcija ne uspeva ako naredba subject_to ne uspe.Na izlazu find_min konstrukcija skuplja oblast dopustivih rešenja u jednu tačku, a to je najbolje nađeno rešenje. Primer:

      find_max: Return;
      subject_to

        new_central_loop();

find_min

find_min ključna reč koristi se sa subject_to ključnom reči za upotrebu dela i veze pretrage za pronalaženje minimalne vrednosti varijable ili izraza (objektivna funkcija) pod uslovima subject_to bloka. Ovaj konstrukcija prisiljava kod da ograniči objektivnu funkciju kako bi bila jednako dobra kao i prethodna rešenja. find_min konstrukcija ne uspeva ako izjava subject_to ne uspe. Na izlazu find_min konstrukcija skuplja oblast dopustivih rešenja u jednu tačku, a to je najbolje nađeno rešenje. Primer:

      find_min: Cost; subject_to

        and(int i=0;i<ITEMS;i++)

          Serving[i] == k;

floor

      double floor( double )

Ova funkcija, kada je pozvana sa double vraća se sa najbližim celim brojem manjim od ili jednakim sebi. Kada je pozvana sa kontinualnom varijablom, ona se vraća na najbliži ceo broj manji ili jednak negovoj witness point.

if

Ključna reč za prvi deo if/ then/else naredbe.

Pogledati takođe Implikacija i Kondicionalne Naredbe.

Int

Koristi se za stvaranje skladišta za celobrojne varijable. Primer:

      int i,j,k[40];

Pogledati takođe Tipovi.

integral

      integral( continuous )

Ova integralna funkcija uspeva,ako je parametar celobrojna vrednost. Primer:

      no_injuries()
      {

        and(int i=0;i<N;i++)

          integral(X[i]);

      }

lb

      double lb( continuous )

Ova funkcija vraća trenutnu donju zagradu kontinualne varijable prenete na njega kao parametar. Trenutna donja zagrada je donja zagrada koju jednostavni solver ima za ovu varijablu. Primer:

      check_bound(continuous R, int dir, double limit)

      {

        if dir == 1;
        then ub(R) >= limit;
        else lb(R) <= limit;

      }

Pogledati takođe ub.

max

      max: <affine expression>

Ovaj znak pomera witness point do temena oblasti dopustivih rešenja za koju affine expression ima najveću moguću vrednost.

Pogledati takođe min:

min

      min: <affine expression>

Ovaj znak pomera witness point do temena oblasti dopustivih rešenja za koju affine expression ima najmanju moguću vrednost..

Pogledati takođe max

nint

      double nint( double )

Kada se ova funkcija pozove sa double, vraća celobrojnu vrednosti najbliže sebi. Kada se poziva sa kontinualnom varijablom, ona se vraća na najbliži ceo broj na njegovom ​​witness point.

not

      not <statement>

Ključna reč nepraćena naredbom uspeva ako propadne i obrnuto, negacija propada ako uspe. Oblast dopustivih rešenja je vraćena u stanje koje prethodi konstruisanju, bez obzira na njegov uspeh ili neuspeh.

      if not X <= Y;
      then printf("The constraint would fail\n");
      else printf("The constraint would succeed\n");

      if not p();
      then printf("A call to p() can be successful\n");
      else printf("A call to p() can not be successful\n");

objcdn

      double objcdn( continuous )

Ova funkcija vraća istinitu ili konzervativnu procena koliko koeficijent kontinualne varijable može biti umanjen, bez potrebe za promenu witness point-a koji donosi optimalno rješenje.

Pogledati takođe objcup.

objcup

      double objcup( continuous )

Ova funkcija vraća istinitu ili konzervativnu procenu koliko koeficijent kontinualne varijable može biti povećan, bez potrebe za promenu witness point-a koji donosi optimalno rešenje.

Pogledati takođe objcdown.

or

Ova ključna reč se koristi nakon obe izjave ili za kodiranje jedne ili za programsku petlju. Na primer:

      or(int i=0;i<N;i++)

        X[j] == i;

Pogledati takođe Trajna Disjunkcija.

printf

Ova ključna riječ ima istu sintaksu kao u C. Ona podržava ANSI C opcije standardnih formata kao što je navedeno u C programskom jeziku,B. Kerniigenn i D. Riči, Prentice Hall

random

      double random()

Ova ugrađena funkcija vraća decimalni broj u interval (0,1). Uzastopni pozivi produkuju pseudo-slučajnih niz. Temeljni pseudo-slučajni generator broja je seed-ovan pozivom na seed

range

      double range ( continuous );

Ova ugrađena funkcija vraća ocenu količine zagrada na varijabli koja se može menjati bez promene smanjenja troškova. Ova procena će biti tačna ili konzervativna; u ovom rasponu smanjena cena je jednaka maksimalnoj ceni(kontinualno).

RC

      double rc( continuous );

Ova ugrađena funkcija vraća redukovane troškove kontinualnih varijabli

return

Ova naredba izvršava trenutni postupak i vraća do pozivajućeg postupka. Primer:

      if k==0
      then {

        a = 15;
        return;

      }

seed

      void seed(int)

pozivanje ovog postupka uzrokuje generisanje ugrađenih i pseudo-nasumičnih brojeva. Pseudo-slučajne sekvence su stvorene pozivom na random.

sigma

To je ključna reč za pisanje ograničenja u notaciji slična običnoj matematičkoj upotrebi za jednačine

Na primer, 2LP izraz je

      sigma(int i=0;i<100;i=i+1) a[i]*X[i] == b;

string

ključna reč string se koristi za stvaranje prostora za čuvanje znakova . Primer:

      string s,t,u[12];

subject_to

Ova ključna reč se koristi sa find_min i find_max ključnim rečima. Primer:

      find_min: Z;
      subject_to
      search();

then

Ova ključna reč se koristi kao deo jedne if/then/else naredbe .

Pogledati takođe Implikacija i Kondicionalne Naredbe

ub

      double ub( continuous )

Ova funkcija vraća trenutnu gornju granicu kontinuiranih varijabli koje su prošle do njega kao parametar. Trenutna gornja granica je gornja granica koju jednostavniji solver koristi za ovu varijablu. Primer:

      check_bound(continuous R, int dir, double limit)
      {

        if dir == 1;

        then ub(R) >= limit;

        else lb(R) <= limit;

      }

pogledati takođe lb

void

Ključna riječ void koristi se deklarisanje spoljašnje funkcije koje su pozvane iz 2LP modela i interpretirane kao procedura koja uvek uspe. Primer:

      extern void insert_states(int);

wp

      double wp(continuous):

WP funkcija vraća trenutnu vrednost koju whitness point daje izrazu koji prolazi kao parametar. Parametar ove funkcije mora biti afina izraz kontinualnog tipa.



Published (Last edited): 28-09-2012 , source: http://www.sci.brooklyn.cuny.edu/~lbslab/2lphelp.html