Notesæt til Optimering i Microsoft Excel

Størrelse: px
Starte visningen fra side:

Download "Notesæt til Optimering i Microsoft Excel"

Transkript

1 Tor Beltov - Side 1/44 Syddansk Universitet, Odense Universitet Institut for Organisation og Ledelse Notesæt til Optimering i Microsoft Excel

2 Tor Beltov - Side 2/44 Optimering i Microsoft Excel 97/2000 Dette afsnit introducerer nogle af de principper som løseren i Microsoft Excel er bygget på: Typer af problemer der kan løses, typiske applikationer, hvorledes løsningsmodeller konstrueres, og praktiske hints så løseren anvendes effektivt. Hvad kan løseren? Problemløseren i Microsoft Excel kan anvendes til egentlig lignings-løsning, også kaldet goalseeking eller back-solving, og funktionsoptimering med bibetingelser. Metoderne til at løse optimeringsproblemer med bibetingelser er lineær programmering, ikke-lineær programmering og heltallig programmering. Lignings-løsning. I en normal what-if operation i et regneark, indtastes eller ændres input værdier, og regnearket udregner output værdierne, f.eks. forskellige formelværdier som afhænger direkte af indtastede inputs. Løseren kan betragtes som en metode til at udføre en modsat what-if analyse. Hvis output værdierne for forskellige formler specificeres, kan løseren bestemme de inputværdier som netop giver de output værdier som blev specificeret. Når løseren anvendes til at finde inputværdierne som resulterer i en specificeret formelværdi, løses en ligning i flere ubekendte. Dette kaldes også goalseeking eller backsolving. Løseren i Microsoft Excel kan løse en mængde af simultane ligninger i flere ubekendte på én gang. De ubekendte er regnearkets input celler ( hvilket også kaldes de redigerbare celler i den danske version af Excel) og ligningerne har formen A1 = B1 hvor A1 og B1 indeholder formler som indeholder de ubekendte. Optimering under bibetingelser. Man kan anvende løseren til at finde en mængde af inputværdier som opfylder en mængde af simultane ligninger og uligheder. Når dette forsøges, eksisterer der typisk mere end et sæt af brugbare input værdier. Løseren kan derfor anvendes til at finde den bedste mængde af inputværdier som enten minimerer eller maksimerer en bestemt målfunktion som specificeres. Løseren kan sagtens maksimere eller minimere en formel uden at der skal være bibetingelser

3 Tor Beltov - Side 3/44 tilstede. Hvis løseren anvendes til at finde A1 sådan at (A1/2-1)^2 minimeres, vil løseren finde A1=2, hvor formlen er lig 0. Input værdierne som løseren skal finde kaldes beslutningsvariablene, og disse repræsenteres i Excel som celler indeholdende tal. Ligningerne repræsenteres i Excel ved dels en celle som udregner en formel, dels en relation (=, >=, <=), og en anden celle som udregner en formel. Målfunktionen /objektivfunktionen, som enten skal maksimeres eller minimeres, er simpelthen en anden celle indeholdende en formel. Formulering af en model. For at formulere en optimeringsmodel i et regneark, skal følgende trin følges: 1. Reserver en celle til at holde værdien af hver beslutningsvariabel 2. Vælg en celle til at repræsentere objektfunktionen, og indtast formlen som udregner objektivfunktionsværdien i denne celle. 3. Vælg andre celler og anvend dem til at indtaste formlerne som udregner venstresiderne af ligningerne 4. Højresiderne kan indtastes som tal i andre celler, eller indtastes direkte i løserens tilføj ligning dialog boks. Indenfor denne struktur er der stor fleksibilitet for layout-valg og formatering af celler, som repræsentere variable og ligninger, og hvilke formler og indbyggede funktioner der anvendes. For eksempel kan alle formler i et lineært programmeringsproblem altid formuleres ved hjælp af SUMPRODUCT (SUMPRODUKT i den danske versione) funktionen. Et varesammensætningseksempel I Excel findes et antal eksempelfiler som dette afsnit vil trække på. Disse ligger som regel under.\samples kataloget i Microsoft Office hovedkataloget. Eksempel filen SOLVAMP.XLS indeholder blandt andet et Product mix problem (Product mix problemet i eksempelfilen er en smule mere komplex, idet problemet er ikke-lineært.). I Produkt mix eksemplet skal der for et firma som producerer TV-apparater, stereoanlæg og højttalersystemer ved at samle enkeltkomponenter som strømforsyninger, højttalere m.v., bestemmes den mest rentable varesammensætning.

4 Tor Beltov - Side 4/44 For at samle et TV skal der anvendes et kabinet, et billedrør, to højtalerenheder, en strømforsyning og to elektronikdele. For at samle et stereoanlæg skal der anvendes et kabinet, to højtalerenheder, en strømforsyning og en elektronikdel. For at samle en højtaler skal der anvendes en højtalerenhed og en elektronikdel. Profitten ved at sælge TV-apparater er på $75 per enhed, $50 per stereo-anlæg og $35 per højtaler. På lageret er der pt. 450 kabinetter, 250 billedrør, 800 højtalerenheder, 450 strømforsyninger og 600 elektronikdele. Før oplysningerne indtastes i et regneark, skal den matematiske formulering af problemet lige formuleres. Lad x 1 være antallet af TV-apparater, x 2 antallet af stereo-anlæg og x 3 antallet af højtalere. Profitten kan formuleres som: Profit: Max 75x + 50x + 35x For at samle hvert produkt, skal et bestemt antal halvfabrikata anvendes, og dette formulerer vi som: 1x + 1x + 0x 450 ( kabinetter) x + 0x + 0x 250 ( billedrør) x + 2x + 1x 800 ( højtalerenheder) x + 1x + 0x 450 ( strømforsyninger) x + 1x + 1x 600 ( elektronikdele) Og da antallet af hver produkt ikke kan være negativt indfører vi ligeledes ligningerne at: x1, x 2, x 3 0 I Excel vil ovenstående problem se således ud:

5 Tor Beltov - Side 5/44 Det næste skridt er at lavet et regneark hvor formlerne for objektivfunktionen og bibetingelserne udregnes. I det ovenstående regneark, er cellerne D9, E9 og F9 reserveret til at holde vores beslutningsvariable x 1, x 2 og x 3. Læg ligeledes mærke til at cellerne D17, E17 og F17 holder profitten for varerne. Disse informationer tillader dermed at objektivfunktionsværdien i celle D18 kan udregnes som: SUMPRODUKT(D17:F17;D9:F9) eller SUMPRODUCT(...) i den engelske version I tableauet D11:F15 indtastes koefficientmatricen, altså de tal som beskriver antallet af delelementer der skal anvendes til at lave et givet produkt. For eksempel udsiger tallet 2 i celle D13 at vi skal anvende 2 højtalerenheder for at samle et TV-apparat. Som det ses, er disse tal de samme som dem der er givet i den matematiske model ovenfor. Disse informationer tillader dermed at bibetingelserne formuleres. F.eks vil den første bibetingelse i celle C11 se således ud: SUMPRODUKT(D11:F11;$D$9:$F$9)

6 Tor Beltov - Side 6/44 Bemærk her $-tegnene som jo angiver at cellereferencen er fast. Kopiering af formlen til de fire nedenstående celler C12:C15 er dermed mulig. I cellerne B15:F15 indtastes vores højresider, altså de mængder af delelementer vi pt. har på lager. Disse informationer tillader dermed at vi kan specificere vores bibetingelser vist tidligere som: C11:C15 <= B11:B15 Som er short hand for C11 <= B11, C12 <= B12,..., C15 <= B15. Denne form kan indtastes direkte i Løser-dialog boxen, hvor vi ligeledes indtaster ligningerne: D9:F9 >= 0 for at sikre at vores beslutningsvariable forbliver positive. Brug af Løser Dialog bokse For at give løseren informationer om hvilke celler i regnearket som repræsenterer beslutningsvariablene, ligningerne og objektivfunktionen, vælges Funktioner Problemløser i Excel, som får en løserens dialogboks til at springe op. I Angiv målcelle boksen, skal objektivfunktionen dvs. celle D18 indtastes eller vælges med musen. I Ved redigering af cellerne boksen skal cellerne D9:F9 indtastes eller vælges med musen. For at tilføje bibetingelserne skal der vælges Tilføj og indtastes i Cellereference boksen C11:C15, og B11:B15 i Betingelse boksen. Default relationen <= er OK.

7 Tor Beltov - Side 7/44 Dernæst vælges tilføj igen og ikke-negativitetsbetingelserne for beslutningsvariablene defineres. Alle informationer til løseren er nu stede, og Problemløserparametre boksen ser nu således ud: Løsning af problemet For at finde den optimale løsning, skal Løs knappen trykkes! Efter et stykke tid returnerer løseren den optimale løsning: 200 i celle D9 og E9, og 0 i celle F9. Oversat vil det sige, at der skal samles 200 TV-apparater, 200 Stereo-anlæg og ingen højtalere, for at tjene en profit på $25000 (vist i celle D18). Ligeledes springer Problemløserresultat boksen op, som ser således ud:

8 Tor Beltov - Side 8/44 Hvis der klikkes på Svar i Rapporter listboksen bliver der produceret en svarrapport. Rapporten, som er listet herunder viser the oprindelige og endelige værdier for objektfunktionen, beslutningsvariablene samt status for hver bibetingelse i den optimale løsning. Bemærk, at ligningerne for højtalerenheder og elektroniskdele er bindende og derfor har en slack værdi (overskydende) på 0. Alt hvad der er på lager af disse to delprodukter anvendes, hvorimod der er overskydende varer på lager for de andre delprodukter. På kort sigt kan det konkluderes, at der kan samles yderligere produkter og derfor genereres yderligere profit, hvis ekstra højtalerenheder og elektronikdele fremskaffes. Hvis man er interesseret i at vide hvor meget man i så fald er villig til at betale for disse to delelementer, skal vi have fat i følsomhedsanalyse rapporten. Modellen skal da løses igen (hvis man da ikke valgte at generere denne rapport fra begyndelsen). Når rapporten er genereret vil den i dette tilfælde se således ud:

9 Tor Beltov - Side 9/44 Som det kan ses i afsnittet for betingelserne, er skyggeprisen for netop højtalerenheder og elektronikdele strengt positive, og angiver groft sagt hvor meget man er villig til at betale for en enhed af hver. I rapporten angives endvidere hvor stor det tilladelige fald og hvor stor den tilladelige forøgelse må være, for hver højreside, uden at den optimale løsning ændres. Hvis du er kommet frem til det samme resultat, ved du nu hvordan man løser LP - problemer i Excel!. I det efterfølgende bliver nogle gode råd til hvordan læselige og håndterbare modeller kan genereres i Excel. Gode råd til modelbygning Mange af de problemer der opstår når modeller løses i Excel kan adresseres til den valgte, dårlige, struktur modelbyggeren har konstrueret. Der kan spares mange timers hovedpine ved nøje at overveje hvordan modellen skal tage sig ud. Nedenstående, som igen baserer sig på Product mix eksemplet fra før, giver nogle enkle råd til hvordan man undgår at generere såkaldte spaghetti modeller.

10 Tor Beltov - Side 10/44 Et modeleksempel Betragt igen Product mix eksemplet som herunder er gengivet: Identifikation af indeksmængderne Indeksmængder er et koncept som anvendes i algebraiske modelleringssprog som GAMS og AMPL. Konceptet er også i regnearksregi meget anvendeligt, idet disse mængder, når de er defineret gør det nemmere at bestemme og holde styr på antallet af beslutningsvariable og antallet af ligninger. F.eks. er indeks mængderne i ovenstående Product mix eksempel Produkter ( TVapparater, Stereo-anlæg og højtalere) og delelementer (Kabinetter, Billed rør, Højtalerenheder, Strømforsyninger og Elektronikdele ).

11 Tor Beltov - Side 11/44 Indeksmængde layout i kolonner og rækker. Som illustreret ovenfor, er det en god idé at vælge et layout hvor indeks mængderne okkuperer kolonner og rækker. Normalt skrives indeks medlemmerne som labels over hver kolonne eller til venstre for hver række. Når modellen er defineret over to indeks mængder er det ligeledes en god idé at orientere den ene mængde rækkevis og den anden mængde kolonnevis. Hvis en model er indekseret over tre eller flere mængder, kan man konstruere to-dimensionale tabeller og enten kopiere dem igennem workbook en, dvs. oprette et nyt regneark for hver yderligere medlem af den tredie (eller højere) dimension eller kopiere tabellen ned under i samme regneark. Alloker celler til beslutningsvariablene og ligningerne. Det næste der skal gøres er, at allokere celler i kolonnerne og rækkerne til at holde værdierne af beslutningsvariablene og venstre- og højresiderne for ligningerne. Når det er muligt, skal disse celler placeres ved de labels som repræsenterer indeks mængde medlemmerne. I ovenstående problem, er beslutningsvariablene allokeret i cellerne D9:F9 direkte under produkt labelene. Ligningernes højresider (delelementer på lager) er i cellerne B11:B15, og venstresiderne er i cellerne C11:C15. Med dette layout skal vi udelukkende indsætte en kolonne hvis vi udvider produktionen med en ny vare, eller indsætte en ny række hvis vi får andre delelementer på lager, som skal indgå i produktionen. Allokér celler til koefficientmatricen og andre parametre. I lineær programmering, kan objektfunktionen og ligningerne skrives på følgende form: a x + a x + + a x n n Men istedet for at skrive hele formlen explicit i en celle, er det tilrådeligt at placere koefficienterne dvs. a i erne i deres egne celler og derefter anvende SUMPRODUKT funktionen til at udregne den aktuelle værdi. Husk på, at formlen for celle D18 var: SUMPRODUKT(D17:F17;D9:F9) og for venstresiderne: SUMPRODUKT(D11:F11;$D$9:$F$9)

12 Tor Beltov - Side 12/44 i celle C11, og derefter denne formel kopieret til de efterfølgende fire celler (C12:C15). I ikke-lineære modeller er koefficienterne typisk ikke på samme form, men der vil stadig være parametre som er konstante i en givet iteration. Placer derfor også disse parametre i deres egne celler, det letter arbejdet senere. Anvende fonte, rammer og skyggeeffekter. Som de sidste råd omkring det at lave læsevenlige og administrationsmæssige lette modeller, kan nævnes fonte, rammer og skyggeeffekter. I product mix eksemplet anvendes rammer til at angive beslutningsvariablene, venstresiderne, højresider og objektkoefficienterne i cellerne D17:F17. Kursiveret tekst anvendes til at angive labelene for indeks mængde medlemmerne, så disse afviger fra almindelig tekst og andre labels. Ligeledes kan man ved at anvende diverse skyggeeffekter yderligere fremhæve bestemte dele af modellen. Der er faktisk kun fantasien, som sætter begrænsningerne. Anvend Ranges for variablene og ligningerne. En smart feature i de fleste regnearksprogrammer er muligheden for at navngive de såkaldte ranges. Et range er en sammenhængende liste af celler, som beskriver et eller andet - tænk foreksempel på vektorer og matricer. I product mix eksemplet er ranget D9:F9 produkterne der produceres. Så hvorfor ikke kalde dette range for Produkter? Måden hvorpå dette gøres i Excel er, at markere ranget D9:F9 og vælge Indsæt - Navn og vælge definér. Herefter fås følgende dialogboks:

13 Tor Beltov - Side 13/44 Indskriv Produkter og tryk OK eller Tilføj hvis du vil addere flere. Navnet produkter refererer herefter til ranget $D$9:$F$9 i arket Varesammensætning. Hvis alle ranges nu defineres på tilsvarende måde - dvs. DeleAnvendt = C11:C15, LagerBeh = B11:B15, Profit = D17:F17, og TotalProfit = D18 får Definer navn dialogboksen følgende udseende: Disse Ranges kan nu anvendes med regnearkets GoTo funktion, hvilket gør det lettere at indentificere og manipulere elementerne i modellen. En anden benefit ved at navngive ranges er, at vi i løsningen af modellen nu ikke behøver at huske på de forskellige cellers placering og derfor kan skrive formler som: SUMPRODUKT(Profit; Produkter) for objektfunktionen. Også i problemløserparameter dialogboksen kan dette anvendes. En model udelukkende formuleret vha. ranges vil da se således ud:

14 Tor Beltov - Side 14/44 Hvilket i mange sammenhænge virker mere overskueligt. I Microsoft Excel kan man hvis man f.eks. definerer hele blokken med koefficienter, som Koefficienter = D11:F15 skrive en array formel a la Ax T : {=MMULT(Koefficienter, TRANSPOSE(Produkter))} eller version. {=MPRODUKT(Koefficienter;TRANSPONER(Produkter))} i den danske hvilket udregner alle ligningerne i cellerne C11:C15 - Det er smart! Du opretter matrixformler på samme måde, som du opretter andre formler, bortset fra, at du skal trykke på CTRL+SKIFT+ENTER for at indsætte formlen. Disse definitioner af ranges vil generelt gøre det meget nemmere at udvide en model. I Product mix eksemplet kan produkter eller delelementer adderes uden at man så skal redefinere navnene og uden at man skal hen og respecificere Problemløserparametrene. Ligeledes er ranges et uundværligt stykke værktøj når man ønsker at kontrollere og anvende problemløseren fra VBA, hvilket er emnet for næste afsnit.

15 Tor Beltov - Side 15/44 Kontrol af Problemløseren med VBA Ethvert aspekt af Prolemløserens operationer kan kontrolleres ved hjælp af programmering. Man kan vise eller simpelthen skjule Problemløserens dialogbokse, oprette eller ændre valget af objektivet, variable og ligningerne, checke om den optimale løsning blev fundet og producere rapporter. Alt dette kan gøres ved simple kald til problemløser specifikke funktioner fra et VBA program., som kan programmeres direkte under Excel. Når der er reference til SOLVER.XLA, gives der adgang til en række funktioner som er listet i appendix I. For at få reference til SOLVER.XLA i VBA skal man vælge Tools menuen og derefter References og klikke i solver.xls boksen, når man har defineret sit modul. VBA - editoren laver herefter et ekstra punkt under punktet Modules, kaldet References: I det nedenstående vil de løserspecifikke VBA-funktioner blive eksemplificeret, men det er en god idé at konsultere hjælpe funktionen og få vist den basale syntax for problemløser funktionerne under VBA, inden man kaster sig ud i de helt store modeller. Product mix fra VBA I det første eksempel skal Product mix eksemplet løses ved at anvende en subrutine i VBA. Kald denne subrutine Solve_product_mix. Koden til at løse dette problem er faktisk ligetil og ser i alt sin enkelthed således ud:

16 Tor Beltov - Side 16/44 Sub Solve_Product_Mix() Range("C11:C15").Select Selection.FormulaArray = _ "=MMULT($D$11:$F$15,TRANSPOSE($D$9:$f$9))" SolverOk SetCell:="$D$18", MaxMinVal:=1, ValueOf:="0", ByChange:="$D$9:$F$9" SolverAdd CellRef:="$C$11:$C$15", Relation:=1, FormulaText:="$B$11:$B$15" SolverAdd CellRef:="$D$9:$F$9", Relation:=3, FormulaText:="0" SolverSolve userfinish:=true End Sub Koden trin for trin 1. Range("C11:C15").Select 2. Selection.FormulaArray ="=MMULT($D$11:$F$15,TRANSPOSE($D$9:$f$9))" ad 1) ad 2) Cellerne C11:C15 vælges Selection.FormulaArray betyder blot Lav en matrixformel og placer udtrykket i de celler der er markeret. Udtrykket er vores gamle ven Ax T bare skrevet ud med $?$? i stedet for rangelabelerne - det ser vi på senere. 3. SolverOk SetCell:="$D$18", MaxMinVal:=1, ValueOf:="0", ByChange:="$D$9:$F$9" 4. SolverAdd CellRef:="$C$11:$C$15", Relation:=1, FormulaText:="$B$11:$B$15" 5. SolverAdd CellRef:="$D$9:$F$9", Relation:=3, FormulaText:="0" 6. SolverSolve userfinish:=true ad 3) SolverOk svarer til at vælge problemløseren fra funktioner menuen og specificere forskellige options i problemløserparametre dialogboksene. Dialogboksen bliver ikke vist. SetCell bliver sat lig objektfunktionscellen = $D$18 MaxMinVal:=1 betyder Maksimering ValueOf:="0" bliver ikke anvendt når der maksimeres eller minimeres ByChange:="$D$9:$F$9" angiver beslutningsvariabelcellerne

17 Tor Beltov - Side 17/44 ad 4) SolverAdd svarer til at vælge problemløseren fra funktioner menuen og vælge Tilføj i problemløserparametre dialogboksen. Addere en ligning til problemet. CellRef:="$C$11:$C$15" angiver venstresiden Relation:=1 betyder mindre end ( <= ) FormulaText:="$B$11:$B$15" angiver højresiderne ad 5) Samme, men her er venstresiden lig beslutningsvariablene og højresiden blot angivet med et nul (0) - dvs. ikke-negativitetsbetingelserne. Ad 6) SolverSolve kalder løseren userfinish:=true - betyder at vi ikke vil se resultatboksen, men vi vil blot have løsningen indskrevet i de celler der før er blevet angivet - beslutningsvariabelcellerne. Hvad med Ranges? Hvis koden skal formuleres ved hjælp af de før tildelte ranges, vil den eneste forskel være at alle celle-referencerne nu erstattes med navnene for de enkelte ranges: Sub Solve_Product_Mix_with_ranges() SolverReset Range( DeleAnvendt ).Select Selection.FormulaArray = _ "=MMULT(Koefficienter,TRANSPOSE(Produkter))" SolverOk SetCell:="TotalProfit", MaxMinVal:=1, ValueOf:="0", ByChange:="Produkter" SolverAdd CellRef:="DeleAnvendt", Relation:=1, FormulaText:="LagerBeh" SolverAdd CellRef:="Produkter", Relation:=3, FormulaText:="0" SolverSolve userfinish:=true End Sub Altså ingen ændring - på nær den første linie - SolverReset - som sletter alle informationer vedrørende Problemløserens tidligere parametre.

18 Tor Beltov - Side 18/44 Indlæsning af data Hvis data ikke ligger i et Excel regneark, skal et såkaldt interface programmeres. Alternativt kan filen importeres, men typisk ligger data ikke i et særlig import-venligt format. Programmeringen af et interface er ikke særlig besværligt. En måde at gøre det på er at læse alt informationen ind som tekststrenge og derefter plukke de relevante informationer ud som hele matricen af strenge indeholder. Det vil vi prøve! Antag at vores inputfil har følgende udseende: * Product Mix example * Dimensions 5 3 * Profit coefficiens * Constrains coefficiens order is a11 a12 a13 a21... a * Right hand sides Det er måske ikke lige til at se, men disse data er identiske med de data vi har set på hele tiden. Hvordan læses denne ascii-fil ind i Excel? Det oplagte valg er at programmere en lille rutine sammen i VBA, som formaterer og tilrettelægger data på en ordentlig måde. Hvis ideen fra før skal forfølges, indlæses hele filen i en matrice af streng-typen. Herefter

19 Tor Beltov - Side 19/44 trækkes de værdier ud der er af interesse. En rutine som kan læse en ascii-fil og lægge indholdet ind i en matrice af strenge er listet herunder: (Dele af programmet genbruges senere - heri vil kommenteringen være bedre?) Sub Indlaes() Dim InputStrMat() As String Dim FilNumber As Integer, i As Integer Dim FileName As String FilNumber = FreeFile FileName = ".\Product_mix.inc" Open FileName For Input As #FilNumber i = 0 Do Until EOF(FilNumber) i = i + 1 ReDim Preserve InputStrMat(i) Input #FilNumber, InputStrMat(i) Loop Close #FilNumber End Sub Filens indhold er nu lagt over i matricen InputStrMat. Næste skridt er at få dette indhold over i et Excelregneark. Måden hvorpå dette kan gøres er rimelig mangfoldig, og det følgende er kun én blandt mange muligheder. Det er en god skik at lave et nyt regneark når der skal læses data ind i Excel. Efterfølgende kodelinier genererer et nyt regneark og kalder det Product_Mix. Dim currentbook As Object Set currentbook = Application.ActiveWorkbook currentbook.worksheets.add before:=currentbook.worksheets(1) currentbook.activesheet.name = "Product_Mix" De primære oplysninger i vores vektor af strenge er dimensionerne på vores indeks - her 5 og 3. Product-Mix problemet består som bekendt af 5 ligninger, i, og 3 kolonner, j. For at få disse tal ud og langt over i variablerne i og j kodes følgende linier: i = Val(InputStrMat(3)) j = Val(InputStrMat(4)) Dimensionen er dermed fastlagt, og resten af koden som lægger de indlæste værdier over i et regneark og løser for disse, kan derfor se således ud:

20 Tor Beltov - Side 20/44 Sub Indlaes() ' Variable til input filen Dim FilNumber As Integer Dim FileName As String ' Dynamisk vektor til input Dim InputStrMat() As String ' Forskellige taellervariable Dim i As Integer, j As Integer, j_max As Integer, i_max As Integer ' Range variabel Dim myrange As Range ' Objektvariabel Dim currentbook As Object ' Aaben et nyt regneark Set currentbook = Application.ActiveWorkbook currentbook.worksheets.add before:=currentbook.worksheets(1) currentbook.activesheet.name = "Product_Mix" ' Skriver lidt Set myrange = Range("a1:g4") myrange.borderaround ColorIndex:=5, Weight:=xlMedium Range("a1:a4").Font.Size = 8 Cells(1, 1).Value = "Firmaet fremstiller TV-apparater, stereoanlæg og højttalersystemer ved at samle enkeltkom-" Cells(2, 1).Value = "ponenter som strømforsyninger, højttalere m.v. Firmaet har kun et begrænset antal kompo-" Cells(3, 1).Value = "nenter, så den mest rentable varesammensætning ønskes fundet. Men avancen pr. færdig-" Cells(4, 1).Value = "vare falder med antallet, fordi prisnedsættelser er nødvendige for at sælge flere produkter." ' Tegn nogle rammer Range("a8:f15").BorderAround ColorIndex:=5, Weight:=xlMedium Range("b11:c15").BorderAround ColorIndex:=9, Weight:=xlMedium Range("b17:f18").BorderAround ColorIndex:=9, Weight:=xlMedium 'Nu begynder input FilNumber = FreeFile FileName = "c:\myfiles\laerebog\product_mix.inc" Open FileName For Input As #FilNumber i = 0 Do Until EOF(FilNumber) i = i + 1 ReDim Preserve InputStrMat(i) Input #FilNumber, InputStrMat(i) Loop Luk filen igen Close #FilNumber ' Definer stoerrelsen af problemet ved at laese i InputStrMat ' pa pladserne 3 og 4 i_max = Val(InputStrMat(3)) j_max = Val(InputStrMat(4)) ' Definer beslutningsvariabel cellerne With Cells(9, 4).Offset(0, -2).Value = "Antal, der skal samles".offset(0, -2).Font.Size = 8 Set myrange = Range(.Offset(0, 0),.Offset(0, j_max - 1)) myrange.name = "Produkter" myrange.borderaround ColorIndex:=4, Weight:=xlThick

21 Tor Beltov - Side 21/44 ' Indlaes vaerdier til hoejresiderne - i kolonne 2 = kolonner B With Cells(11, 2).Offset(-1, 0).Value = "På lager".offset(-1, 0).Font.Size = 8 Set myrange = Range(.Offset(0, 0),.Offset(i_max - 1, 0)) myrange.name = "LagerBeh" For i = 0 To i_max - 1.Offset(i, 0).Value = Val(InputStrMat(26 + i)) Next ' Indlaeser koefficienterne... With Cells(11, 4) Set myrange = Range(.Offset(0, 0),.Offset(i_max - 1, j_max - 1)) With myrange.name = "Koefficienter".HorizontalAlignment = xlcenter ' og placer dem ordentligt For i = 0 To i_max - 1 For j = 0 To j_max - 1.Offset(i, j).value = Val(InputStrMat(j (i * j_max))) Next j Next i ' Indlaeser profit koefficienterne With Cells(17, 4).Offset(0, -2).Value = "Profit pr. stk.".offset(0, -2).Font.Size = 8 Set myrange = Range(.Offset(0, 0),.Offset(0, j_max - 1)) myrange.name = "Profit" For j = 0 To j_max - 1.Offset(0, j).value = Val(InputStrMat(6 + j)) Next ' Definer Profitfunktionen Set myrange = Range("D18") With myrange.name = "TotalProfit".Offset(0, -1).Value = "Total".Offset(0, -1).Font.Size = 8.Formula = "=SUMPRODUCT(Profit,Produkter)".BorderAround ColorIndex:=5, Weight:=xlThick 'Definer venstresiderne i ligningerne with Cells(11,2) Set myrange = Range(.Offset(0,0),.Offset(i_max - 1,0)) With myrange.name = "DeleAnvendt".Offset(-1, 0).Value = "Antal brugt".offset(-1, 0).Font.Size = 8.Offset(0, 0).Font.Size = 10.FormulaArray = _ "=MMULT(Koefficienter,TRANSPOSE(Produkter))" 'Saa kan vi loese - denne del har vi set foer SolverOk SetCell:="TotalProfit", MaxMinVal:=1, ValueOf:="0", ByChange:="Produkter" SolverAdd CellRef:="DeleAnvendt", Relation:=1, FormulaText:="LagerBeh" SolverAdd CellRef:="Produkter", Relation:=3, FormulaText:="0" SolverOptions AssumeLinear:=True

22 Tor Beltov - Side 22/44 SolverSolve userfinish:=true 'Program slut End Sub Koden er rimelig selv-dokumenteret, og mange af kommandoerne selvforklarende. En god idé er at prøve programmet selv, det er mange gange nemmere at forstå hvad der egentlig foregår når koden gennemløbes trinvis ved at anvende F8 - tasten. Ovenstående gav et eksempel på hvorledes et generelt LP - problem kunne indlæses og løses, når man anvender VBA. I det efterfølgende skal vi se på hvordan man alene ud fra en afstandsmatrice kan stille et TSP problem op. Et TSP problem. Alfred Jensen er rejsende i vin og tobak og bor i Odense. Han planlægger at skulle besøge nogle tobaks- og vinhandlere i Bogense, Fåborg, Kerteminde og Svendborg på sin næste tur. Et af hans problemer i den forbindelse er at finde ud af i hvilken rækkefølge, de fire byer skal besøges, i det Jensen ønsker at minimere det samlede antal kørte kilometer og dermed sit benzinforbrug. De relevante afstandsdata er gengivet i skemaet nedenfor: Odense Bogense Fåborg Kerteminde Svendborg Odense Bogense Fåborg Kerteminde Svendborg Lad Odense været indekseret 1, Bogense 2, Fåborg 3, Kerteminde 4 og Svendborg 5. Lad os x ij i, j = 1,..., 5 introducere en binær variabel, til hver kant (vej) imellem knuderne (byerne), der antager værdien 1' hvis og kun hvis kanten fra knude i til knude j traverseres i retningen fra i til j. Den binære variabel x 35 svarer altså til kanten, der forbinder Fåborg med Svendborg, og den vil antage værdien 1' hvis og kun hvis Jensen på sin tur kører fra Fåborg direkte videre til Svendborg.

23 Tor Beltov - Side 23/44 Målfunktionen til dette problem kan skrives som: 29x + 38x + 20x + 44x x + 62x + 48x + 80x x + 62x + 56x + 26x x + 48x + 56x + 48x x + 80x + 26x + 48x Idet enhver by skal besøges netop en gang, og turen skal slutte i Odense, skal Jensen køre til hver af de fem byer netop en gang: x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = Hvor første ligning angiver en kant som fører ind i Odense, anden ligning angiver en kant som fører ind i Bogense, den tredie ind i Fåborg, den fjerde ind i Middelfart, og den femte en kant som fører ind i Svendborg. Enhver by skal tilsvarende forlades præcis en gang: x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x =

24 Tor Beltov - Side 24/44 Hvor første ligning angiver en kant som fører ud fra Odense, anden ligning angiver en kant som fører ud fra Bogense, den tredie ud fra Fåborg, den fjerde ud fra Middelfart, og den femte en kant som fører ud fra Svendborg. En første version af Alfred Jensens problem kan derfor formuleres: Min S.t. x ij = 0 / 1, i, j = 1,..., 5, i j 29x + 38x + 20x + 44x x + 62x + 48x + 80x x + 62x + 56x + 26x x + 48x + 56x + 48x x + 80x + 26x + 48x x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = x + x + x + x = Lad os få disse oplysninger ind i Excel. Mange gange ligger afstandsmatricen i et ascii-format, så lad os antage at det også er tilfældet med denne, og at filen har følgende udseende: *afstandsmatrice til TSP-problem

25 Tor Beltov - Side 25/44 Som det ses, er kun den øvre del af afstandsmatricen angivet, men da begge veje er lovlige skal vores indlæsning også definere den nedre del af afstandsmatricen. VBA koden til at indlæse og løse for disse oplysninger er gengivet herunder: Public Sub indlaes_tsp() Dim FilNumber As Integer Dim FileName As String Dim Nr As String, tmpnr1 As String, tmpnr2 As String Dim Nr1 As Integer, Nr2 As Integer, IO As Double Dim Afstand(1 To 5, 1 To 5) As Double, Pos1 As Long, L As Long Dim i As Integer, j As Integer, Max_ij As Integer, Max_i As Integer Dim Offset_Col As Integer, Offset_Row As Integer ' Dynamisk vektor til input Dim InputStrMat() As String ' Range variabel Dim myrange As Range ' Objektvariabel Dim currentbook As Object ' Aaben et nyt regneark Set currentbook = Application.ActiveWorkbook currentbook.worksheets.add before:=currentbook.worksheets(1) currentbook.activesheet.name = "TSP-Problem" Offset_Col = 3 'Skriv fra og med kolonne D Offset_Row = 5 'Skriv fra og med række 5 FilNumber = FreeFile FileName = "c:\myfiles\laerebog\tsp.inc" Open FileName For Input As #FilNumber i = 0 Do Until EOF(FilNumber) i = i + 1 ReDim Preserve InputStrMat(i) Input #FilNumber, InputStrMat(i) Loop Max_i = i Close #FilNumber ' Find max node nummer Pos1 = InStr(InputStrMat(Max_i), " ") L = Pos1-1 tmpnr1 = Left(InputStrMat(Max_i), Pos1-1) Pos1 = InStr(tmpNr1, ".") Max_ij = Val(Right(String:=tmpNr1, Length:=L - Pos1)) ' Assign vaerdier laest til regnearket og matricen For i = 1 To Max_i If Left(InputStrMat(i), 1) <> "*" Then Pos1 = InStr(InputStrMat(i), " ") L = Pos1-1 tmpnr1 = Left(InputStrMat(i), Pos1-1) tmpnr2 = Right(InputStrMat(i), Len(InputStrMat(i)) - Pos1) Pos1 = InStr(tmpNr1, ".")

26 Tor Beltov - Side 26/44 Nr1 = Val(Left(String:=tmpNr1, Length:=Pos1-1)) Nr2 = Val(Right(String:=tmpNr1, Length:=L - Pos1)) ' Offset bruger vi ikke her - istedet anvendes Cells ' Vi skriver + Offset_row og + Offset_row for at begynde i celle D6 Cells(Offset_Row, Offset_Col + Nr2 + (Nr1-1) * Max_ij).Value = Val(tmpNr2) Cells(Offset_Row, Offset_Col + Nr1 + (Nr2-1) * Max_ij).Value = Val(tmpNr2) ' Afstandmatricen skal vi anvende senere til ligningsgenerering Afstand(Nr1, Nr2) = Val(tmpNr2) Afstand(Nr2, Nr1) = Val(tmpNr2) End If Next i 'Skriv lige et par labels For i = 1 To Max_ij For j = 1 To Max_ij Cells(Offset_Row - 1, Offset_Col + j + (i - 1) * Max_ij).Value = "x" & Str(i) & Str(j) Next j Next i ' Initialiser regnearket For j = 1 To Max_ij * Max_ij If IsEmpty(Cells(Offset_Row, Offset_Col + j)) Then Cells(Offset_Row, Offset_Col + j).value = 1000 End If Next j ' definerer koefficienterne... With Cells(Offset_Row + 3, Offset_Col + 1) Set myrange = Range(.Offset(0, 0),.Offset(Max_ij + Max_ij - 1, Max_ij * Max_ij - 1)) With myrange.name = "Koefficienter".HorizontalAlignment = xlcenter.borderaround ColorIndex:=5, Weight:=xlThick.Value = 0 ' Nu til ligningsgenereringen Offset_Row = 7 For j = 1 To Max_ij For i = 1 To Max_ij ' Er der en vej fra by j til i? If Afstand(j, i) > 0 Then ' Saa skriv i kolonne xji Cells(Offset_Row + j, Offset_Col + j + (i - 1) * Max_ij).Value = 1 End If Next i Next j For i = 1 To Max_ij For j = 1 To Max_ij ' Er der en vej fra by i til j If Afstand(i, j) > 0 Then ' Saa skriv i kolonne xij Cells(Offset_Row + Max_ij + i, Offset_Col + j + (i - 1) * Max_ij).Value = 1 End If Next j Next i Hoejreside definitioner For i = 1 To Max_ij + Max_ij Cells(Offset_Row + i, 2).Value = 1 Next i With Cells(6, Offset_Col + 1).Offset(0, -2).Value = "Beslutningsvariable"

27 Tor Beltov - Side 27/44.Offset(0, -2).Font.Size = 8 Set myrange = Range(.Offset(0, 0),.Offset(0, Max_ij * Max_ij - 1)) myrange.name = "Beslutningsvar" myrange.borderaround ColorIndex:=4, Weight:=xlThick ' Indlaes vaerdier til hoejresiderne - i kolonne 2 = kolonner B With Cells(Offset_Row, 2).Offset(0, 0).Value = "Højresiden".Offset(0, 0).Font.Size = 8 Set myrange = Range(.Offset(1, 0),.Offset(Max_ij + Max_ij, 0)) myrange.name = "hoejreside" For i = 1 To Max_ij + Max_ij.Offset(i, 0).Value = 1 Next ' definerer profit koefficienterne With Cells(Offset_Row - 2, Offset_Col + 1).Offset(0, -2).Value = "Omkostning pr. stk.".offset(0, -2).Font.Size = 8 Set myrange = Range(.Offset(0, 0),.Offset(0, Max_ij * Max_ij - 1)) myrange.name = "omkostninger" ' Definer Profitfunktionen Set myrange = Range("c3") With myrange.name = "Totalomkostninger".Offset(0, -1).Value = "Total".Offset(0, -1).Font.Size = 8.Formula = "=SUMPRODUCT(omkostninger,Beslutningsvar)".BorderAround ColorIndex:=5, Weight:=xlThick 'Definer venstresiderne i ligningerne With Cells(Offset_Row - 2,3) Set myrange = Range(.Offset(0,0),.Offset(Max_ij + Max_ij,0)) With myrange.name = "venstresiderne".formulaarray = _ "=MMULT(Koefficienter,TRANSPOSE(Beslutningsvar))" 'Saa kan vi loese SolverOk SetCell:="Totalomkostninger", MaxMinVal:=2, ValueOf:="0", ByChange:="Beslutningsvar" SolverAdd CellRef:="venstresiderne", Relation:=2, FormulaText:="hoejreside" SolverAdd CellRef:="Beslutningsvar", Relation:=5, FormulaText:="binær" SolverOptions AssumeLinear:=True SolverSolve userfinish:=true 'Program slut End Sub Løsningen af modellen giver følgende resultat: x = 1, x = 1, x = 1, x = 1, x = 1, resten nul Denne løsning indebærer 2 subture:

28 Tor Beltov - Side 28/44 dels turen: Odense - Kerteminde - Bogense - Odense, eller den modsatte vej. og dels turen: Fåborg - Svendborg - Fåborg. Den samlede tilbagelagte vej er 149 km, men løsningen er ikke brugbar fordi turen ikke er sammenhængende. Vi må derfor opstille yderligere betingelser så enhver brugbar løsning til problemet er en sammenhængende tur, der altså ikke involverer subture. Dette kan ske på flere måder. En af disse indebærer termer af eksemplet introduktion af det følgende sæt af yderligere bibetingelser: u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u u + 5 x u 5, i = 2,..., 5 i Det ses, at der for enhver by bortset fra depotet i Odense er introduceret en kontinuert variabel u i,i = 2,..., 5 der ikke må antage værdier mindre end 2 eller større end 5, og at der for enhver

29 Tor Beltov - Side 29/44 kant, der forbinder 2 af de byer, der skal besøges, er introduceret en begrænsning. Grunden til at u erne restringeres til at ligge mellem værdierne 2 og 5 er kun, at de i så fald får en pæn fortolkning. Lad u 2 = 2, fordi knude {2} (Bogense) er den anden by (Odense er jo den første ) u 3 = 3 fordi knude {3} (Fåborg) er den tredie osv. Vi får dermed mulighed for at Koefficienten til den binære variabel i hver af disse begrænsningers venstreside er sat lig med antal knuder i problemet og højresiden er sat lig med antal knuder minus 1. Bemærk, at der ikke er introduceret en u variabel for depotet og, at der ikke er introduceret nogen begrænsninger for kanter der forbinder depotet med de øvrige byer. Lad os se hvordan disse variable og ligninger kan introduceres i den tidligere VBA - kode. Følgende kode skal indsættes lige før problemløseren kaldes ( der er ikke nogen grund til at lave en ny kode - vi kan sagtens genanvende den forgående assignment kode): ' Skriv u labelerne - j begynder med 2 - depotnoden For j = 2 To Max_ij Cells(Offset_Row - 3, Offset_Col + Max_ij * Max_ij + j - 1).Value = "u" & Str(j) Next j With Cells(Offset_Row - 1, Offset_Col + 1) Set myrange = Range(.Offset(0, 0),.Offset(0, Max_ij * Max_ij + Max_ij - 2)) With myrange.name = "Miller_b_v" ' foerst saettes Offset_Row til den sidste linie + 1 Offset_Row = Offset_Row + 2 * Max_ij With Cells(Offset_Row + 1, Offset_Col + 1) Set myrange = Range(.Offset(0, 0),.Offset((Max_ij - 1) * (Max_ij - 2) - 1, (Max_ij - 2) + Max_ij * Max_ij)) With myrange.name = "MillerKoef1".HorizontalAlignment = xlcenter.borderaround ColorIndex:=5, Weight:=xlThick.Font.ColorIndex = 15.Value = 0 For i = 2 To Max_ij For j = 2 To Max_ij If Afstand(i, j) > 0 Then Offset_Row = Offset_Row + 1 Cells(Offset_Row, Offset_Col + j + (i - 1) * Max_ij).Font.ColorIndex = 1 Cells(Offset_Row, Offset_Col + j + (i - 1) * Max_ij).Value = Max_ij Cells(Offset_Row, Max_ij * Max_ij + Offset_Col + i - 1).Font.ColorIndex = 1 Cells(Offset_Row, Max_ij * Max_ij + Offset_Col + i - 1).Value = 1 Cells(Offset_Row, Max_ij * Max_ij + Offset_Col + j - 1).Font.ColorIndex = 1 Cells(Offset_Row, Max_ij * Max_ij + Offset_Col + j - 1).Value = -1 Cells(Offset_Row, Offset_Col - 1).Value = Max_ij - 1

30 Tor Beltov - Side 30/44 End If Next j Next i 'Definer nye venstresider With Cells(Offset_Row (Max_ij - 1) * (Max_ij - 2), 3) Set myrange = Range(.Offset(0, 0),.Offset((Max_ij - 1) * (Max_ij - 2) - 1, 0)) With myrange.name = "Miller_v_s".FormulaArray = _ "=MMULT(MillerKoef1,TRANSPOSE(Miller_b_v))" With Cells(Offset_Row (Max_ij - 1) * (Max_ij - 2), 2) Set myrange = Range(.Offset(0, 0),.Offset((Max_ij - 1) * (Max_ij - 2) - 1, 0)) With myrange.name = "Miller_h_s" Og følgende ændringer laves i løserkaldet: Range("a2").Value = Max_ij Range("a2").Name = "n" 'Saa kan vi loese - men med nye beslutningsvariable og ligninger SolverOk SetCell:="Totalomkostninger", MaxMinVal:=2, ValueOf:="0", ByChange:="Miller_b_v" SolverAdd CellRef:="venstresiderne", Relation:=2, FormulaText:="hoejreside" SolverAdd CellRef:="Miller_v_s", Relation:=1, FormulaText:="Miller_h_s" SolverAdd CellRef:="Miller_b_v", Relation:=3, FormulaText:="2" SolverAdd CellRef:="Miller_b_v", Relation:=1, FormulaText:="n" SolverAdd CellRef:="Beslutningsvar", Relation:=5, FormulaText:="binær" SolverOptions AssumeLinear:=True SolverSolve userfinish:=true Programmet løser problemet og finder følgende løsning: x = 1, x = 1, x = 1, x = 1, x = 1, resten nul Denne løsning indebærer turen: Odense - Kerteminde - Svendborg - Fåborg - Bogense - Odense hvor den samlede tilbagelagte vej er 185 km. Turen kan med valget af værdier for u erne også direkte læses af disse. Værdierne er der har fået u 4 u = 5, u = 4, u = 2, u = 3, hvilket udsiger at byen tilknyttet besøges som by nummer 2, osv.

31 Tor Beltov - Side 31/44 Afslutning. De foregående afsnit har givet en lille introduktion til hvordan Problemløseren kontrolleres i dels Excel og dels via VBA programmering. Noget af koden der er vist kan ved første øjekast virke noget uoverskuelig. Det bedste middel mod dette er at få fat i koden og udføre en stepvis afvikling, og dels aflæse de temporære variable og dels switche over i Excel og se hvad koden genererer.

32 Tor Beltov - Side 32/44 Appendix I SolverAdd SolverChange SolverDelete SolverFinish SolverFinishDialog SolverGet SolverLoad SolverOk SolverOkDialog SolverOptions SolverReset SolverSave SolverSolve SolverAdd Equivalent to choosing Solver... from the Tools menu and choosing the Add button in the Solver Parameters dialog box. Adds a constraint to the current problem. VBA Syntax SolverAdd(CellRef:=, Relation:=, FormulaText:=) CellRef is a reference to a cell or a range of cells on the active worksheet and forms the left hand side of the constraint. Relation specifies the arithmetic relationship between the left and right sides, or whether CellRef must have an integer value at the solution.

33 Tor Beltov - Side 33/44 Relation Relationship 1 <= 2 = 3 >= 4 Int (CellRef is an integer variable) FormulaText is the right hand side of the constraint and will often be a single number, but it may be a formula or a reference to a range of cells. If Relation is 4, FormulaText is ignored, and CellRef must be a subset of the By Changing Cells. If FormulaText is a reference to a range of cells, the number of cells in the range must match the number of cells in CellRef, although the shape of the areas need not be the same. For example, CellRef could be a row and FormulaText could refer to a column, as long as the number of cells is the same. Remarks The SolverAdd, SolverChange and SolverDelete functions correspond to the Add, Change, and Delete buttons in the Solver Parameters dialog box. You use these functions to define constraints. For many macro applications, however, you may find it more convenient to load the problem in a single step using the SolverLoad function. Each constraint is uniquely identified by the combination of the cell reference on the left and the relationship (<=, =, >= or int) between its left and right sides. This takes the place of selecting the appropriate constraint in the Tools Solver Parameters dialog box. You can manipulate constraints with SolverChange and SolverDelete. SolverChange Equivalent to choosing Solver... from the Tools menu and choosing the Change button in the

34 Tor Beltov - Side 34/44 Solver Parameters dialog box. Changes the right side of an existing constraint. VBA Syntax SolverChange(CellRef:=, Relation:=, FormulaText:=) For an explanation of the arguments and constraints, see SolverAdd. Remarks If the combination of CellRef and Relation does not match any existing constraint, the function returns the value 4 and no action is taken. To change the CellRef or Relation of an existing constraint, use SolverDelete to delete the old constraint and then use SolverAdd to add the constraint in the form you want. SolverDelete Equivalent to choosing Solver... from the Tools menu and choosing the Delete button in the Solver Parameters dialog box. Deletes an existing constraint. VBA Syntax SolverDelete(CellRef:=, Relation:=, FormulaText:=) For an explanation of the arguments and constraints, see SolverAdd. Remarks If the combination of CellRef and Relation does not match any existing constraint, the function returns the value 4 and no action is taken. If the constraint is found, it is deleted, and the function returns the value 0.

35 Tor Beltov - Side 35/44 SolverFinish Equivalent to selecting options and clicking OK in the Solver Results dialog box that appears when the solution process is finished. The dialog box will not be displayed. VBA Syntax SolverFinish(KeepFinal:=, ReportArray:=) KeepFinal is the number 1 or 2 and specifies whether to keep or discard the final solution. If KeepFinal is 1 or omitted, the final solution values are kept in the changing cells. If KeepFinal is 2, the final solution values are discarded and the former values of the changing cells are restored. ReportArray is an array argument specifying what reports to create when Solver is finished. If ReportArray is Microsoft Excel creates {1} An Answer Report {2} A Sensitivity Report {3} A Limit Report A combination of these values produces multiple reports. For example, if ReportArray = {1,2}, Microsoft Excel creates an answer report and a sensitivity report. Use the Array function in VBA to create an array of constant values. SolverFinishDialog Equivalent to selecting options in the Solver Results dialog box that appears when the solution process is finished. The dialog box will be displayed, and the user will be able to change the options you initially specify. VBA Syntax

36 Tor Beltov - Side 36/44 SolverFinishDialog(KeepFinal:=, ReportArray:=) For an explanation of the arguments, see SolverFinish. SolverGet Returns information about the current Solver problem. The settings are specified in the Solver Parameters and Solver Options dialog boxes, or with the other Solver functions described on this page. VBA Syntax SolverGet(TypeNum:=, SheetName:=) TypeNum is a number specifying the type of information you want. The following settings are specified in the Solver Parameters dialog box. TypeNum Returns 1 The reference in the Set Cell box, or the #N/A error value if Solver has not been used on the active document 2 A number corresponding to the Equal To option 1 = Max 2 = Min 3 = Value Of 3 The value in the Value Of box 4 The reference in the By Changing Cells box 5 The number of constraints 6 An array of the left sides of the constraints in the form of text 7 An array of numbers corresponding to the relationships between the left and right sides of the constraints: 1 = <= 2 = = 3 = >= 4 = int

37 Tor Beltov - Side 37/44 8 An array of the right sides of the constraints in the form of text The following settings are specified in the Solver Options dialog box: TypeNum Returns 9 The maximum calculation time 10 The maximum number of iterations 11 The precision (as a decimal number) 12 The integer tolerance value (as a decimal number) 13 TRUE if Assume Linear Model or Assume LP/QP Model check box is selected; FALSE otherwise 14 TRUE if Show Iteration Result check box is selected; FALSE otherwise 15 TRUE if Use Automatic Scaling check box is selected; FALSE otherwise 16 A number corresponding to the type of estimates: 1 = Tangent 2 = Quadratic 17 A number corresponding to the type of derivatives: 1 = Forward 2 = Central 18 A number corresponding to the type of search: 1 = Newton 2 = Conjugate SheetName is the name of a worksheet that contains the Solver problem for which you want information. If SheetName is omitted, it is assumed to be the active sheet. SolverLoad Equivalent to choosing Solver... from the Tools menu, choosing the Options button from the

38 Tor Beltov - Side 38/44 Solver Parameters dialog box, and choosing the Load Model button in the Solver Options dialog box. Loads Solver problem specifications that you have previously saved on the worksheet. VBA Syntax SolverLoad(LoadArea:=) LoadArea is a reference on the active worksheet to a range of cells from which you want to load a complete problem specification. The first cell in LoadArea contains a formula for the Set Cell Box; the second cell contains a formula for the changing cells; subsequent cells contain constraints in the form of logical formulas. The last cell optionally contains an array of Solver option values (see SolverOptions). Although LoadArea must be on the active worksheet, it need not be the current selection. SolverOk Equivalent to choosing Solver... from the Tools menu and specifying options in the Solver Parameters dialog box. Specifies basic Solver options. The dialog box will not be displayed. VBA Syntax SolverOk(SetCell:=, MaxMinVal:=, Valueof:=, ByChange:=) SetCell corresponds to the Set Cell box in the Solver Parameters dialog box (the objective function in the optimization problem). SetCell must be a reference to a cell on the active worksheet. If you enter a cell, you must enter a value for MaxMinVal. In the macro language syntax, if you do not enter a cell, you must include three commas before the ByChanging value. MaxMinVal corresponds to the options Max, Min and Value Of in the Solver Parameters

39 Tor Beltov - Side 39/44 dialog box. Use this option only if you entered a reference for SetCell. MaxMinVal Option specified 1 Maximize 2 Minimize 3 Match specific value ValueOf is the number that becomes the target for the cell in the Set Cell box if MaxMinVal is 3. ValueOf is ignored if the cell is being maximized or minimized. ByChanging indicates the changing cells (decision variables), as entered in the By Changing Cells box. ByChanging must be a cell reference (usually a cell range or multiple reference) on the active worksheet. SolverOkDialog Equivalent to choosing Solver... from the Tools menu and specifying options in the Solver Parameters dialog box. The Solver Parameters dialog box will be displayed, and the user will be able to change the options you initially specify. VBA Syntax SolverOkDialog(SetCell:=, MaxMinVal:=, Valueof:=, ByChange:=) For an explanation of the arguments, see SolverOk. SolverOptions Equivalent to choosing Solver... from the Tools menu and then choosing the Options button in the Solver Parameters dialog box. Specifies the Solver algorithmic options.

Kapitel 9. Optimering i Microsoft Excel 97/2000

Kapitel 9. Optimering i Microsoft Excel 97/2000 Kapitel 9 Optimering i Microsoft Excel 97/2000 9.1 Indledning... 164 9.2 Numerisk løsning af ligninger... 164 9.3 Optimering under bibetingelser... 164 9.4 Modelformulering... 165 9.5 Gode råd ommodellering...

Læs mere

! #!! $ % $! & " &'"! & *+ "! " $ $ ""!,-! $!.! $! " # 1!! &' "

! #!! $ % $! &  &'! & *+ !  $ $ !,-! $!.! $!  # 1!! &' ""# "" # $ % $ & " &'" & " "()" *+ " " $ $ *+" $ %"&'" "( "",- $. + /"&'"-0 $ " # 1 &' " +"% $ %'('" 2 ' ) )030 )030) * )033 " )033 // " " 1 1 41 ")035)036 5- " " " *+773,8 *+ % " " )035& " )036& " 1 %"

Læs mere

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& #

% &$ # '$ ## () %! #! & # &, # / # 0&. ) 123 45 / & #& # !"$!!"$ % &$ '$ () %! %"!" & * function &+! & &, --.& / 0&. ) 123 45 / & & & 6 Sub CalcVecProduct() * &3.5 & 2 &6 / 7$ & & & "%&$&"! 2 " $ " 8 $ & $/ $ $" 9&6 Sub test() streng_y = "det her går " streng_y

Læs mere

Noter til kursusgang 8, IMAT og IMATØ

Noter til kursusgang 8, IMAT og IMATØ Noter til kursusgang 8, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 25. oktober 2013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration

Portal Registration. Check Junk Mail for activation  . 1 Click the hyperlink to take you back to the portal to confirm your registration Portal Registration Step 1 Provide the necessary information to create your user. Note: First Name, Last Name and Email have to match exactly to your profile in the Membership system. Step 2 Click on the

Læs mere

Noter til kursusgang 9, IMAT og IMATØ

Noter til kursusgang 9, IMAT og IMATØ Noter til kursusgang 9, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 4. november 013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1

IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1 IBM Network Station Manager esuite 1.5 / NSM Integration IBM Network Computer Division tdc - 02/08/99 lotusnsm.prz Page 1 New esuite Settings in NSM The Lotus esuite Workplace administration option is

Læs mere

Linear Programming ١ C H A P T E R 2

Linear Programming ١ C H A P T E R 2 Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation

Læs mere

Start Excel Du skal starte med at åbne Excel. I Excel åbner du herefter en tom projektmappe.

Start Excel Du skal starte med at åbne Excel. I Excel åbner du herefter en tom projektmappe. Lineær programmering i Excel Version for PC I lærebogens kapitel 29 afsnit 4 er det med 2 eksempler blevet vist, hvordan kapacitetsstyringen kan optimeres, når der er 2 produktionsmuligheder og flere knappe

Læs mere

! " # $% &'!& & ' '" & # ' "&()(*& + + +,-' "&( # &(! (! " )(!# &!! (!&!! * (! +& (!!! & " " & & / & & (!

!  # $% &'!& & ' ' & # ' &()(*& + + +,-' &( # &(! (!  )(!# &!! (!&!! * (! +& (!!! &   & & / & & (! !" #$ "%!"&! " # $% &'!& & ' '" & # ' "&()(*& + + +,-' "&( # &(! (! " )(!# &!! (!&!! * (! +& (!!! & Workbooks( MedarbUndersøgelse ),-.", & & Worksheets( Data )& Charts( DisplayData )&& )& " " & & / & &

Læs mere

Hent filoplysninger fra billeder og filer

Hent filoplysninger fra billeder og filer Hent filoplysninger fra billeder og filer I denne vejledning bliver det gennemgået, hvordan man via Power Forespørgsel kan hente filoplysninger fra en mappe ind i Excel. Der skal opbygges følgende elementer:

Læs mere

Boligsøgning / Search for accommodation!

Boligsøgning / Search for accommodation! Boligsøgning / Search for accommodation! For at guide dig frem til den rigtige vejledning, skal du lige svare på et par spørgsmål: To make sure you are using the correct guide for applying you must answer

Læs mere

' #$*# ' # #) * #& #& ' # #* #, #$--

' #$*# ' # #) * #& #& ' # #* #, #$-- !"! "$% $ %$ " $&' ( ' $) * ' $* +( ' ) * & & ' *, $-- " " $(. $ /% &%$ & $ &$ $ %% &" ( 1. 00 $ 0 1 $"%$ " 2$ 2. ) " 3 $ * 4* 05 0 $ &'(&%%$ '67 7) 2) 7) 2)7 ' " - - 7) 2 0 $$ 0 '$ " $ 08$$ )2! & & 7)

Læs mere

Opret en Powerpoint præsentation automatisk med VBA

Opret en Powerpoint præsentation automatisk med VBA Opret en Powerpoint præsentation automatisk med VBA I denne vejledning bliver det gennemgået, hvordan man via VBA kan oprette en powerpoint med diagrammer og kommentarer fra Excel automatisk. Gør som følgende:

Læs mere

how to save excel as pdf

how to save excel as pdf 1 how to save excel as pdf This guide will show you how to save your Excel workbook as PDF files. Before you do so, you may want to copy several sheets from several documents into one document. To do so,

Læs mere

$ %' ) * %' +,! - Myarray %' /0 /0 122 +3 /0 /0

$ %' ) * %' +,! - Myarray %' /0 /0 122 +3 /0 /0 !"#!"# "# %&') * #" % && %' Dim MyArray2) As Integer ) * %' +,! - Myarray MyArray0). %' /0 /0 122 + /0 /0 +4 / 0) Dim MyArray1 to 2) As Integer 5MyarrayMyArray1)" +6 Option Base 1 Option Explicit %' 76

Læs mere

+ "&"' +,! ")& - )'.** /, )'.** 1 2 "&"' +,! 3 *4 5

+ &' +,! )& - )'.** /, )'.** 1 2 &' +,! 3 *4 5 !"#!"# $&'( # $ "&"' ( )* =NUTIDSVÆRDI(B8;B12:K12)-B4 ")&# + "&"' +,! ")& - )'.** / 0, )'.** 1 2 "&"' +,! 3 *4 64 " *7)*7 '7 )87 )'.**!"# 9 )( )"* $ 3 (!" 3 :: 3 :"*;8: 3 Range( A1:A10 ).Cells(3)

Læs mere

Accessing the ALCOTEST Instrument Upload Data - NJSP Public Website page -

Accessing the ALCOTEST Instrument Upload Data - NJSP Public Website page - Accessing the ALCOTEST Instrument Upload Data - NJSP Public Website page - www.njsp.org Public Information Access Public Information Page Selection Within the Public Information Drop Down list, select

Læs mere

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende

Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind

Læs mere

User Manual for LTC IGNOU

User Manual for LTC IGNOU User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service

Læs mere

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.

Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og

Læs mere

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss

E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss E-PAD Bluetooth hængelås E-PAD Bluetooth padlock E-PAD Bluetooth Vorhängeschloss Brugervejledning (side 2-6) Userguide (page 7-11) Bedienungsanleitung 1 - Hvordan forbinder du din E-PAD hængelås med din

Læs mere

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG

SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG SPECIALTRYKKERIETS KUNDE WEBPORTAL KOM GODT I GANG Jeg håber du får fornøjelse af vores nye værktøj. WebApproval skal gøre det nemmere og mere sikkert for dig at godkende din tryksager. Har du spørgsmål,

Læs mere

Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US

Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US Generalized Probit Model in Design of Dose Finding Experiments Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US Outline Motivation Generalized probit model Utility function Locally optimal designs

Læs mere

Help / Hjælp

Help / Hjælp Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association

Læs mere

LINEÆR PROGRAMMERING I EXCEL

LINEÆR PROGRAMMERING I EXCEL LINEÆR PROGRAMMERING I EXCEL K A P P E N D I X I lærebogens kapitel 29 afsnit 3 er det med 2 eksempler blevet vist, hvordan kapacitetsstyringen kan optimeres, når der er 2 produktionsmuligheder og flere

Læs mere

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1 Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words

Læs mere

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax

TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax TM4 Central Station User Manual / brugervejledning K2070-EU STT Condigi A/S Niels Bohrs Vej 42, Stilling 8660 Skanderborg Denmark Tel. +45 87 93 50 00 Fax. +45 87 93 50 10 info@sttcondigi.com www.sttcondigi.com

Læs mere

Ugeseddel 12(10.12 14.12)

Ugeseddel 12(10.12 14.12) Ugeseddel (..) Matematisk Programmering Niels Lauritzen..7 FORELÆSNINGER I ugen. 7. gennemgik vi algoritmer til løsning af heltalsprogrammer ved hjælp af simplex algoritmen. Dette er heltalsprogrammeringsugesedlen

Læs mere

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames...

Before you begin...2. Part 1: Document Setup...3. Part 2: Master Pages Part 3: Page Numbering...5. Part 4: Texts and Frames... InDesign Basics Before you begin...................2 Part 1: Document Setup................3 Part 2: Master Pages................ 4 Part 3: Page Numbering...............5 Part 4: Texts and Frames...............6

Læs mere

Skriftlig Eksamen Beregnelighed (DM517)

Skriftlig Eksamen Beregnelighed (DM517) Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 7 Januar 2008, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner

Læs mere

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)

Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528) Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler

Læs mere

Aktivering af Survey funktionalitet

Aktivering af Survey funktionalitet Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette

Læs mere

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune Værktøjer fra værktøjskassen Søren Breddam, Stevns Kommune sb@stevns.dk 1stevns kommune Mapbasic i Stevns Kommune Data Kørsel af planlagte opgaver, så data altid er opdaterede. Logfil til overvågning Dagligt

Læs mere

Vina Nguyen HSSP July 13, 2008

Vina Nguyen HSSP July 13, 2008 Vina Nguyen HSSP July 13, 2008 1 What does it mean if sets A, B, C are a partition of set D? 2 How do you calculate P(A B) using the formula for conditional probability? 3 What is the difference between

Læs mere

PMDK PC-Side Basic Function Reference (Version 1.0)

PMDK PC-Side Basic Function Reference (Version 1.0) PMDK PC-Side Basic Function Reference (Version 1.0) http://www.icpdas.com PMDK PC-Side Basic Function Reference V 1.0 1 Warranty All products manufactured by ICPDAS Inc. are warranted against defective

Læs mere

The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family.

The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. Formålet med vores hjemmesiden er at gøre billeder og video som vi (Gunnarsson)

Læs mere

2013 SP1. Konfiguration af koncernindblik. Configuration Guide

2013 SP1. Konfiguration af koncernindblik. Configuration Guide 2013 SP1 Konfiguration af koncernindblik Configuration Guide Intellectual Property Rights This document is the property of ScanJour. The data contained herein, in whole or in part, may not be duplicated,

Læs mere

Det er muligt at chekce følgende opg. i CodeJudge: og

Det er muligt at chekce følgende opg. i CodeJudge: og Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.

Læs mere

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012

StarWars-videointro. Start din video på den nørdede måde! Version: August 2012 StarWars-videointro Start din video på den nørdede måde! Version: August 2012 Indholdsfortegnelse StarWars-effekt til videointro!...4 Hent programmet...4 Indtast din tekst...5 Export til film...6 Avanceret

Læs mere

MS Visual Studio Basic 2010. En kort vejledning

MS Visual Studio Basic 2010. En kort vejledning Du kan hente programmet gratis her: MS Visual Studio Basic 2010 Express http://www.microsoft.com/visualstudio/eng/downloads#d-2010-express Tryk på Install Now og følg vejledningen. Indholdsfortegnelse

Læs mere

"# $%$ " # $ % $ $ " & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1.

# $%$  # $ % $ $  & ( ) *+!,! Sum_Cost >= 5000SirName = Beltov Continue = %!- + ( ( - True) Continue *! If Antal <= 20 Then EnhedsOmk = 1. "# $$ " # $ && & ' $ $ " & ) *+, Sum_Cost >= 5000SirName = Beltov Continue = True) Continue *, + If Antal

Læs mere

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00

Aarhus Universitet, Science and Technology, Computer Science. Exam. Wednesday 27 June 2018, 9:00-11:00 Page 1/12 Aarhus Universitet, Science and Technology, Computer Science Exam Wednesday 27 June 2018, 9:00-11:00 Allowed aid: None The exam questions are answered on the problem statement that is handed

Læs mere

! "# $$ &'()*"* +*, & &"*0* & "# % %- %

! # $$ &'()** +*, & &*0* & # % %- % !"! "# $$ & &'()*"* +*, &- & &"./+0 & &"*0* & & & 1 2 ()))))$$" "# - " # $!&!!" 34 3((5(4 6()))))5 3((5# 7())))) 4 3((58 43((58 3((5#9! 3((5#4 3((584 6 9 # '"!&()!" * " 49 9-3 :; & Private Sub Workbook_Open()

Læs mere

Vejledning PROPHIX 11. Driftsbudgettering ved åbning af templates (Kun til Avanceret-brugere)

Vejledning PROPHIX 11. Driftsbudgettering ved åbning af templates (Kun til Avanceret-brugere) PROPHIX 11 Systemansvarlige Michael Siglev Økonomiafdelingen 9940 3959 msi@adm.aau.dk Daniel Nygaard Ricken Økonomiafdelingen 9940 9785 dnr@adm.aau.dk Vejledning (Kun til Avanceret-brugere) Opdateret:

Læs mere

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13

Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Makrosikkerhed (Sikkerhedsindstillinger)...13 1 Indholdsfortegnelse Forord...8 Makroer samt aktivere Udvikler-fanen...10 Hvad er en makro... 10 Hvad kan du bruge en makro til... 10 Hvad en makro er (Visual Basic for Applications)... 11 Det hele sker

Læs mere

Skriftlig Eksamen Beregnelighed (DM517)

Skriftlig Eksamen Beregnelighed (DM517) Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 31 Oktober 2011, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner

Læs mere

FORMLER OG FUNKTIONER I EXCEL

FORMLER OG FUNKTIONER I EXCEL 1 FORMLER OG FUNKTIONER I EXCEL 1. Indtast flg. data i et regneark: Note: de små grønne markeringer i hjørnet af cellerne i kolonne B betyder, at tallet er formateret som tekst. 2 HVIS Afstand i km fra

Læs mere

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark

ISCC. IMM Statistical Consulting Center. Brugervejledning til beregningsmodul til robust estimation af nugget effect. Technical University of Denmark IMM Statistical Consulting Center Technical University of Denmark ISCC Brugervejledning til beregningsmodul til robust estimation af nugget effect Endelig udgave til Eurofins af Christian Dehlendorff 15.

Læs mere

WIKI & Lady Avenue New B2B shop

WIKI & Lady Avenue New B2B shop WIKI & Lady Avenue New B2B shop Login Login: You need a personal username and password Du skal bruge et personligt username og password Only Recommended Retail Prices Viser kun vejl.priser! Bestilling

Læs mere

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004)

Unitel EDI MT940 June 2010. Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Unitel EDI MT940 June 2010 Based on: SWIFT Standards - Category 9 MT940 Customer Statement Message (January 2004) Contents 1. Introduction...3 2. General...3 3. Description of the MT940 message...3 3.1.

Læs mere

Vejledning i udtræk af input-output data fra Statistikbanken

Vejledning i udtræk af input-output data fra Statistikbanken - 1 - Vejledning i udtræk af input-output data fra Statistikbanken Introduktion Input-output tabellerne er konsistente med nationalregnskabet og udarbejdes i tilknytning hertil. De opdateres årligt i december

Læs mere

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl:

vil jeg blive mindet om det af VBA allerede mens jeg skriver koden, da der er tale om en såkaldt kompileringsfejl: Fejlhåndtering Selv de bedste programmører laver af og til fejl! Dette kommer sikkert som en overraskelse for de fleste, bortset fra de, der har arbejdet med et hvilket som helst større program. Fejl kan

Læs mere

Status på det trådløse netværk

Status på det trådløse netværk Status på det trådløse netværk Der er stadig problemer med det trådløse netværk, se status her: http://driftstatus.sdu.dk/?f=&antal=200&driftid=1671#1671 IT-service arbejder stadig med at løse problemerne

Læs mere

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er, at programmet skal registreres (programmet kan dog bruges i 30 dage, hvis det ikke

Læs mere

On the complexity of drawing trees nicely: corrigendum

On the complexity of drawing trees nicely: corrigendum Acta Informatica 40, 603 607 (2004) Digital Object Identifier (DOI) 10.1007/s00236-004-0138-y On the complexity of drawing trees nicely: corrigendum Thorsten Akkerman, Christoph Buchheim, Michael Jünger,

Læs mere

Workshop G4 MicroStation V8 XM edtion nye værktøjer 2

Workshop G4 MicroStation V8 XM edtion nye værktøjer 2 Workshop G4 MicroStation V8 XM edtion nye værktøjer 2 FØR I BEGYNDER......1 ACCUDRAW...2 ROTATE VIEW...2 ROTATE ELEMENT...2 ANDRE NYE ACCUDRAW SHORTCUTS...2 SHORTCUTS...3 DE VIGTIGSTE...3 CTRL OG EN FUNKTIONSTAST

Læs mere

Black Jack --- Review. Spring 2012

Black Jack --- Review. Spring 2012 Black Jack --- Review Spring 2012 Simulation Simulation can solve real-world problems by modeling realworld processes to provide otherwise unobtainable information. Computer simulation is used to predict

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

BentleyUser.dk 2009 MicroStation tips og tricks. Tine Lai Andersen Bentley Institute Instructor

BentleyUser.dk 2009 MicroStation tips og tricks. Tine Lai Andersen Bentley Institute Instructor Tine Lai Andersen Bentley Institute Instructor Brugerflade De små knappenåle / dokkedimser Layouts på dialogbokse Højrekliks menu (laaaangggsomt højreklik): Level Off (V8i SELECT release 1) Display set

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

Læs mere

IBM WebSphere Operational Decision Management

IBM WebSphere Operational Decision Management IBM WebSphere Operational Decision Management 8 0 29., WebSphere Operational Decision Management 8, 0, 0. Copyright IBM Corporation 2008, 2012. ........... 1 :......... 1 1: Decision Center....... 3 1

Læs mere

Skriftlig Eksamen Diskret matematik med anvendelser (DM72)

Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Institut for Matematik & Datalogi Syddansk Universitet, Odense Onsdag den 18. januar 2006 Alle sædvanlige hjælpemidler (lærebøger, notater etc.),

Læs mere

CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2

CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2 1 CS 4390/5387 SOFTWARE V&V LECTURE 5 BLACK-BOX TESTING - 2 Outline 2 HW Solution Exercise (Equivalence Class Testing) Exercise (Decision Table Testing) Pairwise Testing Exercise (Pairwise Testing) 1 Homework

Læs mere

DM559/DM545 Linear and integer programming

DM559/DM545 Linear and integer programming Department of Mathematics and Computer Science University of Southern Denmark, Odense June 10, 2017 Marco Chiarandini DM559/DM545 Linear and integer programming Sheet 12, Spring 2017 [pdf format] The following

Læs mere

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute Sortering fra A-Z Henrik Dorf Chefkonsulent SAS Institute Hvorfor ikke sortering fra A-Å? Det er for svært Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å? Hvorfor ikke sortering fra A-Å?

Læs mere

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer. Opsætning af Backup Dette er en guide til opsætning af backup med Octopus File Synchronizer. Det første der skal ske er at programmet skal registreres, dette gøres ved at vælge menuen Help og derefter

Læs mere

CHAPTER 8: USING OBJECTS

CHAPTER 8: USING OBJECTS Ruby: Philosophy & Implementation CHAPTER 8: USING OBJECTS Introduction to Computer Science Using Ruby Ruby is the latest in the family of Object Oriented Programming Languages As such, its designer studied

Læs mere

Besvarelser til Lineær Algebra Reeksamen Februar 2017

Besvarelser til Lineær Algebra Reeksamen Februar 2017 Besvarelser til Lineær Algebra Reeksamen - 7. Februar 207 Mikkel Findinge Bemærk, at der kan være sneget sig fejl ind. Kontakt mig endelig, hvis du skulle falde over en sådan. Dette dokument har udelukkende

Læs mere

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1)

Fejlbeskeder i SMDB. Business Rules Fejlbesked Kommentar. Validate Business Rules. Request- ValidateRequestRegist ration (Rules :1) Fejlbeskeder i SMDB Validate Business Rules Request- ValidateRequestRegist ration (Rules :1) Business Rules Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl

Læs mere

ECE 551: Digital System * Design & Synthesis Lecture Set 5

ECE 551: Digital System * Design & Synthesis Lecture Set 5 ECE 551: Digital System * Design & Synthesis Lecture Set 5 5.1: Verilog Behavioral Model for Finite State Machines (FSMs) 5.2: Verilog Simulation I/O and 2001 Standard (In Separate File) 3/4/2003 1 ECE

Læs mere

" #" $ " "!% &'% ' ( ) * " & #

 # $  !% &'% ' ( ) *  & # ! # $!% &'% '! #$ #$ ( * & #!! #$%& + &,Dim! - Sub Test( Dim Svar As String Svar = InputBox( Indtast dit Navn MsgBox Dit navn er & Svar Svar & * Sub Test2( MsgBox Goddaw & Svar #Test2( Svar& Test(Test2(Svar

Læs mere

Praktiske Maple kommandoer og arbejdsmåde

Praktiske Maple kommandoer og arbejdsmåde Praktiske Maple kommandoer og arbejdsmåde Options: I menuen "Tools" findes "Options". Under fanebladet "Interface" bør man vælge Default format for new worksheets = Worksheet Det bevirker, at man kan skelne

Læs mere

1. Opbygning af et regneark

1. Opbygning af et regneark 1. Opbygning af et regneark Et regneark er et skema. Vandrette rækker og lodrette kolonner danner celler, hvori man kan indtaste tal, tekst, datoer og formler. De indtastede tal og data kan bearbejdes

Læs mere

Emneopgave: Lineær- og kvadratisk programmering:

Emneopgave: Lineær- og kvadratisk programmering: Emneopgave: Lineær- og kvadratisk programmering: LINEÆR PROGRAMMERING I lineær programmering løser man problemer hvor man for en bestemt funktion ønsker at finde enten en maksimering eller en minimering

Læs mere

Bilag 8. TDC technical requirements for approval of splitterfilters and inline filters intended for shared access (ADSL or VDSL over POTS).

Bilag 8. TDC technical requirements for approval of splitterfilters and inline filters intended for shared access (ADSL or VDSL over POTS). Bilag 8. TDC technical requirements for approval of splitters and inline s intended for shared access (ADSL or VDSL over POTS). Dette bilag udgør bilag 8 til det mellem parterne tiltrådte Produkttillæg

Læs mere

Advanced Word Template Brugermanual

Advanced Word Template Brugermanual Advanced Word Template Brugermanual Forord: Advanced Word Template er et værktøj, der anvendes sammen med Microsoft Word til at opbygge ensartet beskrivelser på en mere intelligent måde end Copy and Paste

Læs mere

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet

GIS. Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet GIS Af Anders Bartholdy Guide til indlæsning af data i ArcGIS herunder KMS-data fra internettet Baggrundskort fra KMS er en rigtig god resurse der er tilgængelig via ArcGIS. Derfor starter vi med at gennemgå

Læs mere

GIS indlæsning af kreditorer og betalingsform. Brugervejledning 1.0

GIS indlæsning af kreditorer og betalingsform. Brugervejledning 1.0 GIS indlæsning af kreditorer og betalingsform Brugervejledning 1.0 Indhold 1 Indledning... 5 2 Opsætning af GIS grænseflade til kreditor indlæsning... 5 2.1 Oprettelse af en datastrøm... 7 2.2 Filsystem...

Læs mere

ArbejsskadeAnmeldelse

ArbejsskadeAnmeldelse ArbejsskadeAnmeldelse OpretAnmeldelse 001 All Klassifikations: KlassifikationKode is an unknown value in the current Klassifikation 002 All Klassifikations: KlassifikationKode does not correspond to KlassifikationTekst

Læs mere

UNISONIC TECHNOLOGIES CO.,

UNISONIC TECHNOLOGIES CO., UNISONIC TECHNOLOGIES CO., 3 TERMINAL 1A NEGATIVE VOLTAGE REGULATOR DESCRIPTION 1 TO-263 The UTC series of three-terminal negative regulators are available in TO-263 package and with several fixed output

Læs mere

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL

HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL HOFTEALLOPLASTIK - DATAUDTRÆK OG IMPORT TIL EXCEL Når man er logget på KMS systemet, vælges Dataudtræk under punktet Vælg modul, hvorefter der klikkes på Gå til: På næste side klikkes på knappen Opret:

Læs mere

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

Kursusbeskrivelse Microsoft Excel Grundkursus

Kursusbeskrivelse Microsoft Excel Grundkursus kursusbeskrivelse Office kurser ms Excel niveau 1 Kursusbeskrivelse Microsoft Excel Grundkursus Varighed: 1 dag Excel version 2010, 2013 & 2016 Niveau 1. I gang med Excel Hvad kan du bruge kurset til:

Læs mere

WT-1011RC Programmer User Guide

WT-1011RC Programmer User Guide WT-1011RC Programmer User Guide Firmware Version 1.9 Note: 1. Information in this manual is subject to change without notice and does not represent a commitment of manufacturer. 2. Manufacturer shall not

Læs mere

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet.

Under 'Microsoft Block Editor', klik 'New project' for at åbne block editor-værktøjet. 8 3. Nedtælling Nu skal du lave en nedtæller. Det er en god måde at lære variabler på og hvordan du skal kode micro:bit til at gøre dét, du vil have, at den skal vise. Du skal bruge: 1 x BBC micro:bit

Læs mere

Business Rules Fejlbesked Kommentar

Business Rules Fejlbesked Kommentar Fejlbeskeder i SMDB Validate Business Request- ValidateRequestRegi stration ( :1) Business Fejlbesked Kommentar the municipality must have no more than one Kontaktforløb at a time Fejl 1: Anmodning En

Læs mere

HTX, RTG. Rumlige Figurer. Matematik og programmering

HTX, RTG. Rumlige Figurer. Matematik og programmering HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with

Læs mere

3D NASAL VISTA TEMPORAL

3D NASAL VISTA TEMPORAL USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended

Læs mere

MicroStation tips & tricks

MicroStation tips & tricks Micro Tin MicroStation tips & tricks Bentleyuser.dk 2017 TINE LAI ANDERSEN Popups panel MicroStation Connect Edition Tast og få Popups panelet frem Home Ribbon Panel Attributes (1) Primary (2)

Læs mere

Sitecore Glossary. Sitecore Training. Sitecore glossary in Danish and English. Sitecore Training Sitecore Glossary Rev:

Sitecore Glossary. Sitecore Training. Sitecore glossary in Danish and English. Sitecore Training Sitecore Glossary Rev: Sitecore Training Sitecore Glossary Rev: 2011-11-28 Sitecore Training Sitecore Glossary Sitecore glossary in Danish and English Index Chapter 1 Understanding Sitecore... 3 Chapter 2 Page Editor... 4 Chapter

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

SPØRGSMÅL TIL UDBUD AF SYSTEMUNDERSTØTTELSE AF GEODANMARK PRÆKVALIFIKATIONSFASEN

SPØRGSMÅL TIL UDBUD AF SYSTEMUNDERSTØTTELSE AF GEODANMARK PRÆKVALIFIKATIONSFASEN SPØRGSMÅL TIL UDBUD AF SYSTEMUNDERSTØTTELSE AF GEODANMARK PRÆKVALIFIKATIONSFASEN EU-UDBUD NR. 2016/S 089-156404 (Version 5 af 1. juni 2016) Page 1 of 6 1 ESPD, Teknisk og faglig formåen I ESPD punkt IV,

Læs mere

Fejlbeskeder i Stofmisbrugsdatabasen (SMDB)

Fejlbeskeder i Stofmisbrugsdatabasen (SMDB) Fejlbeskeder i Stofmisbrugsdatabasen (SMDB) Oversigt over fejlbeskeder (efter fejlnummer) ved indberetning til SMDB via webløsning og via webservices (hvor der dog kan være yderligere typer fejlbeskeder).

Læs mere

REDIGERING AF REGNEARK

REDIGERING AF REGNEARK REDIGERING AF REGNEARK De to første artikler af dette lille "grundkursus" i Excel, nemlig "How to do it" 8 og 9 har været forholdsvis versionsuafhængige, idet de har handlet om ting, som er helt ens i

Læs mere

KUNDE-WEBPORTAL KOM GODT I GANG

KUNDE-WEBPORTAL KOM GODT I GANG Specialtrykkeriet Arco KUNDE-WEBPORTAL KOM GODT I GANG Vi håber du får fornøjelse af vores nye værktøj. WebApproval skal gøre det nemmere og mere sikkert for dig at godkende din tryksager. Har du spørgsmål,

Læs mere

DMX styring med USB-interface

DMX styring med USB-interface DMX styring med USB-interface Introduktion...2 DMX bibliotek...3 Programmering af kanaler...7 Sådan skabes et show/en lyssekvens...11 Introduktion DMX LightPlayer er en avanceret men meget brugervenlig

Læs mere

3D NASAL VISTA 2.0

3D NASAL VISTA 2.0 USER MANUAL www.nasalsystems.es index index 2 I. System requirements 3 II. Main menu 4 III. Main popup menu 5 IV. Bottom buttons 6-7 V. Other functions/hotkeys 8 2 I. Systems requirements ``Recommended

Læs mere

3. PROJEKT, 2 SEMESTER

3. PROJEKT, 2 SEMESTER 3. PROJEKT, 2 SEMESTER Bruger undersøgelse, af sociale medie. KENDSKAB TIL OG BRUG AF ONLINE SOCIALE MEDIER FORENINGEN AF DANSKE INTERAKTIVE MEDIER, FÅET TIL OPGAVE AT AFDÆKKE DANSKERNES BRUG AF SOCIALE

Læs mere