Tuesday, 5 December 2017

Proc optmodel binära alternativ


PROC OPTMODEL-uttalande PROC OPTMODEL-förklaringen åberopar OPTMODEL-proceduren. Du kan ange alternativ för att kontrollera hur optimeringsmodellen behandlas och hur resultaten visas. Detta är syntaxen: Följande alternativ kan visas i PROC OPTMODEL-satsen (dessa alternativ kan också anges av RESET-satsen). CDIGITS num anger det förväntade antalet decimala siffror för noggrannhet för olinjära begränsningar. Värdet kan vara fraktionellt. PROC OPTMODEL använder det här alternativet för att välja en steglängd när numeriska derivat approximationer krävs för att utvärdera Jacobs av olinjära begränsningar. Standardvärdet beror på din arbetsmiljö. Det antas att begränsningsvärdena är korrekta mot gränserna för maskinens precision. Se avsnittet Automatisk differentiering för mer information om approximativa numeriska derivat. FDFORWARDCENTRAL väljer den metod som används för att approximera numeriska derivat när analytiska derivat är otillgängliga. De flesta lösare kräver derivaten av målet och begränsningarna. De tillgängliga metoderna är följande: FDFORWARD använda valutaterminer FDCENTRAL använder centrala skillnader Standardvärdet är FORWARD. Se avsnittet Automatisk differentiering för mer information om approximativa numeriska derivat. FDIGITS num anger det förväntade antalet decimala siffror för noggrannhet för objektivfunktionen. Värdet kan vara fraktionellt. PROC OPTMODEL använder värdet för att välja en steglängd när numeriska derivat krävs. Standardvärdet beror på din arbetsmiljö. Det antas att objektiva funktionsvärden är exakta mot gränserna för maskinens precision. Se avsnittet Automatisk differentiering för mer information om approximativa numeriska derivat. INITVAR NOINITVAR väljer huruvida de ursprungliga värdena för variabler ska övergå till lösaren när SOLVE-satsen utförs. INITVAR gör att nuvarande variabelvärden kan överföras. NOINITVAR orsakar att lösaren åberopas utan några specifika initialvärden för variabler. Alternativet INITVAR är standardvärdet. Observera att LP och QP-lösningarna alltid ignorerar de ursprungliga värdena. NLPU, NLPC, SQP och IPNLP-lösare försöker använda angivna initialvärden. MILP-lösaren använder endast ursprungliga värden om PRIMALIN-alternativet är angivet. INTFUZZ num anger toleransen för avrundning av gränserna på heltal och binära variabler till heltalvärden. Bound som skiljer sig från ett heltal med högst num är avrundade till det heltalet. I övrigt rundas nedre gränser upp till nästa större heltal och övre gränser rundas ner till nästa mindre heltal. Värdet på num kan variera mellan 0 och 0,5. Standardvärdet är 0.00001. MAXLABLEN num anger maximal längd för MPS rad och kolumn etiketter. Det tillåtna intervallet är 8 till 256, med 32 som standard. Det här alternativet kan också användas för att styra längden på rad - och kolumnnamn som visas av solver, som de som hittades i LP-solver iterationsloggen. MISSCHECK NOMISSCHECK möjliggör detaljerad kontroll av saknade värden i uttryck. MISSCHECK begär att ett meddelande ska produceras varje gång PROC OPTMODEL utvärderar en aritmetisk operation eller inbyggd funktion som saknar värdeoperander (utom när funktionen eller funktionen specifikt stöder saknade värden). MISSCHECK-alternativet kan öka behandlingstiden. NOMISSCHECK stänger av den här detaljerade rapporteringen. NOMISSCHECK är standard. PDIGITS num begär att PRINT-förteckningen visar num-signifikanta siffror för numeriska kolumner för vilka inget format anges. Värdet kan variera från 1 till 9. Standardvärdet är 5. PMATRIX num justerar densitetsutvärderingen av en tvådimensionell matris för att påverka hur den visas. Värdet num skala det totala antalet nonempty array-element och används av PRINT-satsen för att utvärdera huruvida en tvådimensionell array är gles eller tät. Tabeller som innehåller en enda tvådimensionell array skrivs ut i listform om de är glesa och i matrisform om de är täta. Eventuella icke-negativa värden kan tilldelas num som standardvärdet är 1. Att ange värden för PMATRIX-alternativet mindre än 1 medför att listformen används i flera fall, medan specificering av värden som är större än 1 orsakar att matrisformen används i flera fall . Om värdet är 0, används listformen alltid. Se avsnittet PRINT-förklaring för mer information. PRESOLVER-alternativet PRESOLVER num anger ett presolve-alternativ eller motsvarande värde num. som anges i tabell 6.6. Tabell 6.6: Värden för PRESOLVER-alternativet Använd den högsta nivån för presolve-bearbetningen. OPTMODEL-presolveren skärper variabla gränser och eliminerar överflödiga begränsningar. I allmänhet förbättras prestanda för alla lösare. Alternativet AUTOMATISK är mellanliggande mellan nivåerna MODERATE och AGGRESSIVE. PRESTOL num ger en tolerans så att OPTMODEL-presolveren kan eliminera lite otänkbara begränsningar. Om storheten av oupphörligheten inte är större än, där X är värdet av det ursprungliga bundna, avlägsnas den tomma begränsningen från det uppställda problemet. OPTMODELs presolver skriver inte ut meddelanden om oöverskridliga begränsningar och variabla gränser när olyckan ligger inom PRESTOL-toleransen. Värdet på PRESTOL kan variera mellan 0 och 0,1. Standardvärdet är 1E-12. PRINTLEVEL num styr nivån på listningsutmatningen under ett SOLVE-kommando. Tabellerna för Output Delivery System (ODS) som skrivs ut på varje nivå anges i tabell 6.7. Vissa lösare kan producera ytterligare tabeller, se kapitlen för enskilda solver för mer information. Tabell 6.7: Värden för PRINTLEVEL-alternativet Avaktivera alla tabeller. Skriv ut Problem Sammanfattning och lösning Sammanfattning. Skriv ut Problem Sammanfattning, Lösningsöversikt, Metoder för Derivativ Beräkning (för NLP-lösare), Solver Options, Optimeringsstatistik och Lösningsspecifika ODS-tabeller. För mer information om ODS-tabellerna som produceras av PROC OPTMODEL, se avsnittet ODS-tabell och variabla namn. PWIDTH num anger bredden som används av PRINT-satsen för att visa numeriska kolumner när inget format anges. Det minsta värdet num kan ta är värdet på PDIGITS-alternativet plus 7 det största värdet num kan ta är 16. Standardvärdet är lika med värdet för PDIGITS-alternativet plus 7. VARFUZZ num anger den minsta skillnaden som tillåts av OPTMODEL presolver mellan de övre och nedre gränserna för en oförändrad variabel. Om skillnaden är mindre än num. då fixeras variabeln till medelvärdet av de övre och nedre gränserna innan det presenteras för lösaren. Eventuella icke-negativa värden kan tilldelas num som standardvärdet är 0. Deklarationsdeklarationen definierar parametrar, variabler, begränsningar och mål som beskriver en PROC OPTMODEL optimeringsmodell. Förklaringar i PROC OPTMODEL-ingången sparas för senare användning. Till skillnad från programmeringsansökningar kan deklarationer inte nästas i andra uttalanden. Deklaration uttalanden avslutas av en semikolon. Många deklarationsattribut, såsom variabla gränser, definieras med hjälp av uttryck. Uttrycken i deklarationer hanteras symboliskt och löses efter behov. I synnerhet omprövas uttryck i allmänhet när ett av de parametervärden de använder har ändrats. CONSTRAINT-förklaring CONSTRAINT-begränsning. begränsa CON-begränsning. begränsning Begränsningsdeklarationen definierar en eller flera begränsningar på uttryck i termer av optimeringsvariablerna. Du kan ange flera begränsningsdeklarationsdeklarationer. Begränsningar kan ha en övre gräns, en nedre gräns eller båda gränserna. De tillåtna formerna är följande: namn. uttryck uttryck uttrycker en jämställdhetsbegränsning eller, när en index-uppsättning anges, en familj av jämställdhetsbegränsningar. Lösaren försöker att tilldela värden till optimeringsvariablerna för att göra de två uttrycken lika. namn . uttrycksrelation uttryck uttrycker en ojämlikhet begränsning som har en enda övre eller nedre gränsen. När en index-uppsättning anges, förklarar detta en familj av ojämlikhetsbegränsningar. Förhållande är lt eller operatören. Lösaren försöker att tilldela optimeringsvariabelvärden så att det vänstra uttrycket har ett värde som är mindre än eller lika med (respektive större än eller lika med) det rätta uttrycksvärdet. namn . bunden relation kroppsrelation bunden förklarar en ojämlikhetsbegränsning som är begränsad på båda sidor eller avståndsbegränsning. När en index-uppsättning anges, förklarar detta en familj av intervallbegränsningar. Förhållande är lt eller operatören. Samma operatör måste användas i båda lägena. Det första bundna uttrycket definierar den nedre gränsen (respektive övre gränsen). Det andra bundna uttrycket definierar övre gränsen (respektive nedre gränsen). Lösaren försöker tilldela optimeringsvariabler så att värdet av kroppsuttrycket ligger i intervallet mellan de övre och nedre gränserna. Namnet definierar namnet på begränsningen. Använd namnet för att referera till begränsningsattribut, till exempel gränserna, någon annanstans i PROC OPTMODEL-modellen. Om inget namn tillhandahålls skapas ett standardnamn av formuläret ACON. var är ett heltal Se avsnittet Begränsningar för mer information. Här är ett enkelt exempel som definierar en begränsning med en lägre gräns: Följande exempel lägger till en övre gräns: Indexerade familjer med begränsningar kan definieras genom att ange en index-uppsättning efter namnet. Eventuella parametrar som deklareras i indexuppsättningen kan hänvisas till i de uttryck som definierar begränsningen. En viss medlem i en indexerad familj kan specificeras genom att använda ett identifieringsuttryck med en konsolerad indexlista, på samma sätt som arrayparametrar och variabler. Till exempel skapar följande uttalanden en indexerad familj av begränsningar med namnet incr. CON-steget i exemplet skapar begränsningar incr1 till incr 1. Begreppsuttryck kan inte definieras med funktioner som returnerar olika värden varje gång de kallas. Se avsnittet Indexering för detaljer. IMPVAR-förklaring IMPVAR impvar-decl. impvar-decl IMPVAR-deklarationen förklarar ett eller flera namn som refererar till optimeringsuttryck i modellen. Det deklarerade namnet heter en implicit variabel. En implicit variabel är användbar för strukturering av modeller så att komplexa uttryck inte behöver upprepas varje gång de används. Värdet av en implicit variabel behöver bara beräknas en gång i stället för på varje plats där det ursprungliga uttrycket används, vilket bidrar till att minska beräkningsutgifterna. Implicita variabler utvärderas utan ingripande från lösaren. Flera IMPVAR-satser är tillåtna. Namnen på implicita variabler måste skilja sig från andra modelldeklarationer, såsom variabler och begränsningar. Implikta variabler kan användas i modelluttryck på samma ställen där vanliga variabler är tillåtna. Detta är syntaxen för en impvar-decl. Varje impvar-decl deklarerar ett namn för en implicit variabel. Namnet kan följas av en index-set-specifikation för att deklarera en familj av implicita variabler. Det uttryck som refereras av namnet följer. Dummy-parametrar som anges i indexuppsättningsspecifikationen kan användas i uttrycket. Uttrycket kan referera till andra modellkomponenter, inklusive variabler och andra implicita variabler. Som ett exempel används i de följande modelluppsättningarna den implicita variabla totalvikten i flera begränsningar för att ange en gräns för olika produktkvantiteter, representerade av platser i array x. MAX och MIN Objektivdeklarationer MAX-namnuttryck MIN-namnuttryck MAX - eller MIN-deklarationen anger ett mål för lösaren. Namnet heter objektivfunktionen för senare referens. Lösaren maximerar ett mål som anges med MAX-sökordet och minimerar ett mål som anges med MIN-sökordet. Ett mål får inte ha samma namn som en parameter eller variabel. Flera mål är tillåtna, men lösaren behandlar endast ett mål åt gången. Uttryck anger den numeriska funktionen för att maximera eller minimera när det gäller optimeringsvariablerna. Ange en index-uppsättning för att deklarera en familj av mål. Dummy-parametrar som anges i indexuppsättningsspecifikationen kan användas i följande uttryck. Mål kan också användas som implicita variabler. När det används i ett uttryck, refererar ett objektivt namn till det aktuella värdet av den angivna objektivfunktionen. Värdet på ett otillåtet objektnamn kan bero på värdet av optimeringsvariablerna, så objektiva namn kan inte användas i konstanta uttryck, såsom variabla gränser. Du kan referera till objektiva namn i objektiva eller begränsade uttryck. Till exempel deklarerar följande uttalanden två objektiva namn, q och l. som omedelbart hänvisas till i den objektiva förklaringen av z och deklarationerna om begränsningarna. Mål kan inte definieras med funktioner som returnerar olika värden varje gång de kallas. Se avsnittet Indexering för detaljer. NUMBER, STRING och SET Parameterdeklarationer NUMBER parameter-decl. parameter-decl STRING parameter-decl. parameter-decl SET ltscalar-typ. skalar-typ parameter-decl. Parametrar-decl Parametrar ger namnen på konstanter. Parametrarna deklareras genom att ange parametertypen följt av en lista med parameternamn. Deklarationer av parametrar som har NUMBER eller STRING-typer börjar med en skalar-typspecifikation: NUMBER NUM STRING STR NUM och STR-nyckelord är förkortningar för respektive NUMBER respektive STRING-nyckelord. Deklarationen av en parameter som har den inställda typen börjar med en uppsättning specifikation: SET ltscalar-typ. skalar-typ I en uppsättning av uppsättningstyp följer SET-sökordet en lista med objekt av skalärtyp som anger medlemstypen. En uppsättning med skalärmedlemmar specificeras med en enda skalar-typ. En uppsättning med tuple-medlemmar har en skalar-typ för varje tupelement. Skalartypen anger typen av elementen vid varje tupelposition. Om SET-sökordet inte följs av en lista med objekt i skalärtyp bestäms uppsättningstypen från typen av initialiseringsuttrycket. Den deklarerade typen standard till SETltNUMBER om inget initialiseringsuttryck ges eller om uttryckstypen inte kan bestämmas. För alla parametertyper följs typdeklarationen av en lista med parametrar-decl-objekt som anger namnen på parametrarna för att deklarera. I ett parameter-decl-objekt kan parameterns namn följas av en valfri indexspecifikation och eventuella nödvändiga alternativ, enligt följande: Parameternamnet och indexuppsättningen kan följas av en lista med parameteralternativ. Dummyparametrar som anges i indexuppsättningen kan användas i parameteralternativen. Parameteralternativen kan anges med följande former: Detta alternativ ger ett explicit värde för varje parameterplats. I detta fall fungerar parametern som ett alias för expressionsvärdet. Det här alternativet anger ett standardvärde som används när ett parametervärde krävs men inget annat värde har levererats. Till exempel: PROC OPTMODEL utvärderar uttrycket för varje parameterplats första gången parametern behöver lösas. Uttrycket används inte när parametern redan har ett värde. Detta alternativ ger ett kompakt sätt att definiera värdena för en array, där varje array-positionsvärde kan anges individuellt av initieringsmedlen. Detta alternativ ger ett kompakt sätt att definiera flera standardvärden för en array. Varje array-positionsvärde kan anges individuellt av initierarna. Med detta alternativ kan arrayvärdena ändå uppdateras utanför deklarationen. Alternativet expression parameter definierar ett parametervärde med hjälp av en formel. Formeln kan hänvisa till andra parametrar. Parametervärdet uppdateras när de refererade parametrarna ändras. Följande exempel visar effekterna av uppdateringen: I det föregående exemplet löses värdet på set s för varje användning av array a som har ett index. För första användningen av a7. värdet 7 är inte en del av satsen s. Värdet 7 är emellertid en del av s vid den andra användningen av a7. Alternativet INIT-uttrycksparametrar anger ett standardvärde för en parameter. Följande exempel visar användningen av det här alternativet: När värdet på en parameter behövs men inget annat värde har levererats används standardvärdet som anges av INIT-uttryck, vilket visas i Figur 8.8. Figur 8.8 INIT Alternativ: Utgång Varje initialiserare tar följande form: Värdet specificerar värdet på en array-plats och kan vara en numerisk eller strängkonstant, en uppsättning bokstavlig. eller ett uttryck som bifogas inom parentes. I arrayinitialiserare kan strängkonstanter anges med citerade strängar. När strängtexten följer reglerna för ett SAS-namn kan texten också anges utan anteckningsmärken. Strängkonstanter som börjar med en siffra, innehåller ämnen, eller innehåller andra specialtecken måste anges med en citerad sträng. Som exempel definierar följande kod en matrisparameter som kan användas för att kartlägga numeriska dagar i veckan till textsträngar: Det frivilliga indexet i kvadrat parentes anger indexet för matrisplatsen som initialiseras. Indexet anger en eller flera numeriska eller strängabonnenter. Prenumerationerna tillåter samma syntaktiska former som värdesposter. Komma kan användas för att separera indexabonnemang. Till exempel kan plats a1, abc i en array a specificeras med indexet 1 abc. Följande exempel initierar bara diagonala platser i en kvadratisk array: Ett index behöver inte ange alla prenumerationer på en array-plats. Om indexet börjar med ett komma, måste bara de högsta prenumerationerna på indexet anges. De föregående prenumerationerna levereras från indexet som användes av föregående initialiserare. Detta kan förenkla initialiseringen av arrayer som indexeras av flera prenumerationer. Du kan till exempel lägga till nya poster i matrisen i föregående exempel genom att använda följande påståenden: Avståndet visar layouten för exempellistan. Det föregående exemplet uppdaterades genom initiering av två mer värden vid m1,3 och m2,3. Om ett index utelämnas initieras nästa plats i ordningsföljden för array-indexet. Om indexuppsättningen har flera indexinställningar. sedan uppdateras de högsta indexerna innan index till vänster uppdateras. I början av initialiseringslistan är det högra indexet den första medlemmen av indexuppsättningen. Index-uppsättningen måste använda ett intervalluttryck för att undvika oförutsägbara resultat när ett indexvärde utelämnas. Initialiserarna kan följas av kommatecken. Användningen av kommatecken har ingen inverkan på initialiseringen. Kommunen kan användas för att klargöra layouten. Kommunen kan till exempel skilja rader i en matris. Inte varje matrisplats behöver initialiseras. Platser utan en explicit initialiserare ställs in på noll för numeriska arrays, inställda på en tom sträng för strängarrayer och ställs till en tom uppsättning för uppsatta arrays. Obs! En array-plats får inte initieras mer än en gång under bearbetningen av initieringslistan. PROBLEM-förklaring Problemen deklareras med PROBLEM-deklarationen. Problemdeklarationer spåra ett mål, en uppsättning medföljande variabler och begränsningar och viss statusinformation som är associerad med variablerna och begränsningarna. Problemnamnet kan eventuellt följas av ett index-set för att skapa en familj av problem. När ett problem används först (via USE PROBLEM-satsen), skapar specifikationerna från valfria FRÅN OCH INKLUSIVE-klausuler den ursprungliga uppsättningen med inkluderade variabler, begränsningar och problemmålen. Ett tomt problem skapas om ingen klausul anges. Klausulerna tillämpas endast när problemet används först med användningsproblemet. FRA-klausulen anger ett befintligt problem för att kopiera de medföljande symbolerna. Problem-id är ett identifieringsuttryck. Den tappade och fixade statusen för dessa symboler i det angivna problemet kopieras också. INCLUDE-klausulen anger en lista över variabler, begränsningar och mål som ingår i problemet. Dessa poster ingår i standardstatus (frikopplad och obefriad) som överstyrar statusen från FROM-klausulen, om den existerar. Varje objekt anges med ett av följande formulär: innehåller de angivna objekten i problemet. Identifieringsuttrycket kan vara ett symbolnamn eller en gruppsymbol med explicit index. Om en array-symbol används utan ett index ingår alla matriselement. innehåller den angivna delmängden av objekt i problemet. Objektet som anges av identifieringsuttrycket läggs till i problemet för varje medlem i indexuppsättningen. Dummyparametrarna från indexuppsättningen kan användas vid indexering av identifieringsuttrycket. Om identifieringsuttrycket är en gruppsymbol utan indexering, ger index-index indexen för de inkluderade platserna. Följande uttalanden anger några problem med en variabel x och olika mål för att illustrera några av sätten att inkludera modellkomponenter. Observera att deklarationerna använder det förutbestämda problemet START för att undvika att återställa målet i prob2 när målet z3 är deklarerat. Se avsnittet Flera delproblem för mer information om problemhantering. VAR-deklaration VAR var-decl. var-decl VAR-satsen förklarar en eller flera optimeringsvariabler. Flera VAR-uttalanden är tillåtna. En variabel får inte ha samma namn som en parameter eller begränsning. Varje var-decl anger ett variabelt namn. Namnet kan följas av en array index-set specifikation och sedan variabla alternativ. Dummy-parametrar som anges i indexuppsättningsspecifikationen kan användas i följande variabla alternativ. Här är syntaxen för en var-decl. Till exempel deklarerar följande kod en grupp med 100 variabler, x1 x100. Här är tillgängliga variabla alternativ: anger ett initialvärde för variabeln. Uttrycket används endast första gången värdet krävs. Om inget initialvärde anges, används 0 som standard. ställer in en lägre gräns för det variabla värdet. Standard nedre gränsen är. anger en övre gräns för det variabla värdet. Standard övre gränsen är. begär att lösaren tilldelar variabeln ett heltal värde. begär att lösaren tilldelar variabeln ett värde på antingen 0 eller 1. Exempelvis deklarerar följande kod en variabel som har ett initialvärde på 0,5. Variabeln är bunden mellan 0 och 1: Gränsvärdena kan bestämmas senare med hjälp av suffixerade referenser till variabeln. Till exempel kan den övre gränsen för variabel x betecknas som x. ub. Dessutom kan gränsvärdena överskridas genom explicit tilldelning till suffixet variabelnamn. Suffixer beskrivs vidare i avsnittet Suffixes. När det används i ett uttryck, avser ett osuffixerat variabelt namn det aktuella värdet av variabeln. Ouffufferade variabler är inte tillåtna i uttrycken för alternativ som definierar variabla gränser eller initialvärden. Sådana uttryck har värden som måste fastställas under solverens utförande. Varje driftsmiljö har sin egen typ av registeravgränsare i externa filer. Registreringsavgränsningarna är inkompatibla mellan operativmiljöer. Därför läggs registreringsavgränsare som är lämpliga för målmiljön till den kopierade filen med NEDLADDNING-proceduren. CMS - och OS390-värdar använder EBCDIC-teckenuppsättningen andra operativmiljöer använder en ASCII-teckenuppsättning. Om filer hämtas från CMS eller OS390 till ett ASCII-baserat system utan någon karaktärsöversättning, kan de nedladdade filerna inte tolkas av målmiljön. SASCONNECT löser problemet EBCDICASCII genom att konvertera filer automatiskt. DOWNLOAD-proceduren konverterar text till lokala värdens format. Det finns tillfällen då dessa filkonverteringar inte är önskvärda. Till exempel kan du behöva ladda upp körbara filer från den lokala värd till fjärrvärden och ladda dem senare till samma eller en annan lokal värd. Du kanske vill göra det för säkerhetskopiering eller att skicka filer till andra användare. När du inte vill att en fil som är översatt till en annan teckenuppsättning eller inspelningsavgränsare är inlagd, kan du använda alternativet BINARY för att förhindra automatisk konvertering. När du anger alternativet BINARY i ett PROC DOWNLOAD-meddelande, överför SASCONNECT filen i binär bildformat (följaktligen sökordet BINARY). Exempel på BINARY-alternativet Detta exempel använder ett PROC DOWNLOAD-meddelande för att ladda ner en extern fil från fjärrvärden till den lokala värd. Observera att alternativet BINARY är inkluderat för att undertrycka teckenuppsättning och förhindra inmatning av inspelningsavgränsare:

No comments:

Post a Comment