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

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

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

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

$ %' ) * %' +,! - 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

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

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

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

+ "&"' +,! ")& - )'.** /, )'.** 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

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

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

"# $%$ " # $ % $ $ " & ( ) *+!,! 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

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

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

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

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

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

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

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

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

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

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

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

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

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

 # $  !% &'% ' ( ) *  & # ! # $!% &'% '! #$ #$ ( * & #!! #$%& + &,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

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

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

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

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

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard

Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Appendix 1: Interview guide Maria og Kristian Lundgaard-Karlshøj, Ausumgaard Fortæl om Ausumgaard s historie Der er hele tiden snak om værdier, men hvad er det for nogle værdier? uddyb forklar definer

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

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

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

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/11-2012 Server side Programming Wedesign Forelæsning #8 Recap PHP 1. Development Concept Design Coding Testing 2. Social Media Sharing, Images, Videos, Location etc Integrates with your websites 3. Widgets extend

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

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

Erhvervsøkonomisk Institut. Vejleder: Henrik Nørholm BILAG. Analyse og prissætning af JB Ti Aktier 2013. I skyggen af en finanskrise

Erhvervsøkonomisk Institut. Vejleder: Henrik Nørholm BILAG. Analyse og prissætning af JB Ti Aktier 2013. I skyggen af en finanskrise Erhvervsøkonomisk Institut Kandidatafhandling Forfatter: Henrik Gerstrøm (xxxxxx) Vejleder: Henrik Nørholm BILAG Analyse og prissætning af JB Ti Aktier 2013 I skyggen af en finanskrise 1. december 2010

Læs mere

Programmering C RTG - 3.3 09-02-2015

Programmering C RTG - 3.3 09-02-2015 Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...

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

Introduktion til TI-Interactive!

Introduktion til TI-Interactive! Introduktion til TI-Interactive! TI-Interactive! er et program, som befinder sig i grænseområdet mellem almindelig tekstbehandling, regneark og egentlige tunge matematikprogrammer. Man kan gøre mange af

Læs mere

RentCalC V2.0. 2012 Soft-Solutions

RentCalC V2.0. 2012 Soft-Solutions Udlejnings software Vores udvikling er ikke stoppet!! by Soft-Solutions RentCalC, som er danmarks ubetinget bedste udlejnings software, kan hjælpe dig med på en hurtigt og simple måde, at holde styr på

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

Chapter 7: Transport-, assignment- & transshipmentproblemer

Chapter 7: Transport-, assignment- & transshipmentproblemer Chapter 7: Transport-, assignment- & transshipmentproblemer 1) Formulering af de 3 problemtyper 2) Algoritme for det balancerede transportproblem 3) Algoritme for assignmentproblemet Samtlige 3 problemtyper

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

PICTURE formater. Klog på SAS 15. marts 2012

PICTURE formater. Klog på SAS 15. marts 2012 PICTURE formater Klog på SAS 15. marts 2012 Agenda Hvad er et format Hvor adskiller et PICTURE format sig Teknik Eksempel 1 cprnr Eksempel 2 cprnr med "udsøgning" af fejlrecords Eksempel 3 et format, der

Læs mere

DONG-område Resten af landet

DONG-område Resten af landet TDC A/S regulering@tdc.dk Fremsendes alene via mail Tillægsafgørelse vedrørende fastsættelse af priser for BSA leveret via TDC s fibernet 1 Indledning traf fredag den 15. april 2011 LRAIC-prisafgørelse

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

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

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit

Weebly- vejledning. Lav din egen hjemmeside let og smertefrit 1 Weebly- vejledning Lav din egen hjemmeside let og smertefrit 1. Gå ind på flg. adresse: www.weebly.com 2. Opret dig som bruger (gratis): 2 3. Kom godt i gang: For at komme i gang med 1. side skal du

Læs mere

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse

ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse ODBC made easy på dansk (når bare man ved hvordan) Jesper Michelsen, Data warehouse & Analyse Agenda Præsentation Hvad er ODBC? ODBC Datakildeadministrator System-DSN Distribution Fil-DSN Scriptede connections

Læs mere

DaTelTek ApS ich 4 SpAPI Telenor Serviceprovider API

DaTelTek ApS ich 4 SpAPI Telenor Serviceprovider API DaTelTek ApS ich 4 SpAPI Telenor Serviceprovider API Release 4.0.0 DaTelTek ApS Birkevej 4 DK-4640 Faxe Denmark CVR: 31 06 05 59 +45 32 22 22 22 www.dateltek.dk info@dateltek.dk Indholdsfortegnelse Ændring

Læs mere

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje.

Maple. Skærmbilledet. Vi starter med at se lidt nærmere på opstartsbilledet i Maple. Værktøjslinje til indtastningsområdet. Menulinje. Maple Dette kapitel giver en kort introduktion til hvordan Maple 12 kan benyttes til at løse mange af de opgaver, som man bliver mødt med i matematiktimerne på HHX. Skærmbilledet Vi starter med at se lidt

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

Matricer og lineære ligningssystemer

Matricer og lineære ligningssystemer Matricer og lineære ligningssystemer Grete Ridder Ebbesen Virum Gymnasium Indhold 1 Matricer 11 Grundlæggende begreber 1 Regning med matricer 3 13 Kvadratiske matricer og determinant 9 14 Invers matrix

Læs mere

VBA PROGRAMMING IN BUSINESS ECONOMICS

VBA PROGRAMMING IN BUSINESS ECONOMICS SANNE WØHLK VBA PROGRAMMING IN BUSINESS ECONOMICS DJØF Publishing Copenhagen To my children Louise, Kristoffer, Sebastian, and Mikkel I hope that you will always appreciate the joy of learning Sanne Wøhlk

Læs mere

Start af nyt schematic projekt i Quartus II

Start af nyt schematic projekt i Quartus II Start af nyt schematic projekt i Quartus II Det følgende er ikke fremstillet som en brugsanvisning der gennemgår alle de muligheder der er omkring oprettelse af et Schematic projekt i Quartus II men kun

Læs mere

Projekt - Visual Basic for Applications N på stribe

Projekt - Visual Basic for Applications N på stribe Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension

DK - Quick Text Translation. HEYYER Net Promoter System Magento extension DK - Quick Text Translation HEYYER Net Promoter System Magento extension Version 1.0 15-11-2013 HEYYER / Email Templates Invitation Email Template Invitation Email English Dansk Title Invitation Email

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

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net Web Admin 5.5 Copyright 2003 Gullestrup.net Log ind på systemet Start med at gå ind på http://mailadmin.gullestrup.net i din browser. Indtast din Email Adresse samt Password, som hører til din konto, tryk

Læs mere

How to do in rows and columns 8

How to do in rows and columns 8 INTRODUKTION TIL REGNEARK Denne artikel handler generelt om, hvad regneark egentlig er, og hvordan det bruges på et principielt plan. Indholdet bør derfor kunne anvendes uden hensyn til, hvilken version

Læs mere

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010

Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Introduktion til MatLab Matematisk Modellering af Dynamiske Modeller ved Kasper Bjering Jensen, RUC, februar 2010 Computere er uvurderlige redskaber for personer der ønsker at arbejde med matematiske modeller

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Regnearket Excel - en introduktion

Regnearket Excel - en introduktion Regnearket Excel - en introduktion Flytte rundt i regnearket. Redigere celler Hjælp Celleindhold Kopiering af celler Lokalmenu og celleegenskaber Opgaver 1. Valutakøb 2. Hvor gammel er du 3. Momsberegning

Læs mere

Optimeringsmatematik og matematik-økonomi studiet

Optimeringsmatematik og matematik-økonomi studiet Optimeringsmatematik og matematik-økonomi studiet og specielt anvendelser af matematisk programmering Esben Høg Institut for Matematiske Fag Aalborg Universitet Oktober 2012 EH (Institut for Matematiske

Læs mere

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0

Userguide. NN Markedsdata. for. Microsoft Dynamics CRM 2011. v. 1.0 Userguide NN Markedsdata for Microsoft Dynamics CRM 2011 v. 1.0 NN Markedsdata www. Introduction Navne & Numre Web Services for Microsoft Dynamics CRM hereafter termed NN-DynCRM enable integration to Microsoft

Læs mere

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8

Shooting tethered med Canon EOS-D i Capture One Pro. Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 Shooting tethered med Canon EOS-D i Capture One Pro Shooting tethered i Capture One Pro 6.4 & 7.0 på MAC OS-X 10.7.5 & 10.8 For Canon EOS-D ejere der fotograferer Shooting tethered med EOS-Utility eller

Læs mere

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16

Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Bookingmuligheder for professionelle brugere i Dansehallerne 2015-16 Modtager man økonomisk støtte til et danseprojekt, har en premieredato og er professionel bruger af Dansehallerne har man mulighed for

Læs mere

CHR/chr veksling med sporbarhedssystemet T-doc. Neden stående krav skal være opfyldt vedr. dataudveksling mellem apparater og sporbarhedssystem.

CHR/chr veksling med sporbarhedssystemet T-doc. Neden stående krav skal være opfyldt vedr. dataudveksling mellem apparater og sporbarhedssystem. T-doc Dataudveksling Sag Vejle Sygehus Sterilcentral Projektnr. 103463 Projekt STERILCENTRAL Dato 2011-07-08 Emne Apparatur til sterilcentral, krav til dataud- Initialer CHR/chr veksling med sporbarhedssystemet

Læs mere

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen

Begrænsninger i SQL. Databaser, efterår 2002. Troels Andreasen Databaser, efterår 2002 Begrænsninger i SQL Troels Andreasen Datalogiafdelingen, hus 42.1 Roskilde Universitetscenter Universitetsvej 1 Postboks 260 4000 Roskilde Telefon: 4674 2000 Fax: 4674 3072 www.dat.ruc.dk

Læs mere

MapBasic brugergruppe. Introduktion til MapBasic. Peter Horsbøll Møller Senior Systems Engineer Januar 2013

MapBasic brugergruppe. Introduktion til MapBasic. Peter Horsbøll Møller Senior Systems Engineer Januar 2013 MapBasic brugergruppe Introduktion til MapBasic Slå mute fra hvis I vil sige eller spørge om noget Peter Horsbøll Møller Senior Systems Engineer Januar 2013 Every connection is a new opportunity Every

Læs mere

Excel-2: Videre med formler

Excel-2: Videre med formler Excel-2: Videre med formler Tips: Du kan bruge Fortryd-knappen ligesom i Word! Du kan markere flere celler, som ikke ligger ved siden af hinanden ved at holde CONTROL-knappen nede Du kan slette indholdet

Læs mere

Eksamen, DSDS, efterår 2007

Eksamen, DSDS, efterår 2007 Eksamen, DSDS, efterår 2007 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech og Martin Elsman IT Universitetet i København 7. januar 2008 Alle hjælpemidler er tilladte, dog ikke

Læs mere

Bentleyuser.dk Årsmøde 2010 Nordic Civil 2010

Bentleyuser.dk Årsmøde 2010 Nordic Civil 2010 Bentleyuser.dk Årsmøde 2010 Nordic Civil 2010 8.-10. November 2010, Munkebjerg Hotel, Vejle Workshop W2 Annotation Scale i MicroStation V8i Underviser: Tine Lai Andersen, Bentley Systems (Danmark) Bentley

Læs mere

Vejledning til Teknisk opsætning

Vejledning til Teknisk opsætning Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder

Læs mere

Easy Guide i GallupPC

Easy Guide i GallupPC Easy Guide i GallupPC Version. 6.00.00 Gallup A/S Masnedøgade 22-26 DK 2100 København Ø Telefon 39 27 27 27 Fax 39 27 50 80 Indhold SÅDAN KOMMER DU I GANG MED AT ANVENDE GALLUPPC... 2 TILFØJELSE AF UNDERSØGELSER

Læs mere

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net Web Admin 5.5 Copyright 2003 Gullestrup.net Log ind på systemet Start med at gå ind på http://mailadmin.gullestrup.net i din browser. Indtast din Email Adresse samt Password, som du tidligere har modtaget

Læs mere

ASB E-mailsignatur. ASB E-mailsignatur. Vejledning til opsætning af e-mailsignatur IKT - Februar 2008

ASB E-mailsignatur. ASB E-mailsignatur. Vejledning til opsætning af e-mailsignatur IKT - Februar 2008 ASB E-mailsignatur I det følgende forklares, hvordan du opretter ASBs e-mailsignatur for medarbejdere. Det skal her noteres at e-mail signaturen ikke kan opsættes i webmail (webmail.asb.dk), men skal opsættes

Læs mere

Åbn Paint, som er et lille tegne- og billedbehandlingsprogram der findes under Programmer i mappen Tilbehør. Åbn også Word.

Åbn Paint, som er et lille tegne- og billedbehandlingsprogram der findes under Programmer i mappen Tilbehør. Åbn også Word. 75 Paint & Print Screen (Skærmbillede med beskæring) Åbn Paint, som er et lille tegne- og billedbehandlingsprogram der findes under Programmer i mappen Tilbehør. Åbn også Word. 1. Minimer straks begge

Læs mere

Programmering i C Intro og grundlæggende C 5. marts 2007

Programmering i C Intro og grundlæggende C 5. marts 2007 Programmering i C Intro og grundlæggende C 5. marts 2007 Mads Pedersen, OZ6HR mads@oz6hr.dk Plan for kurset Ma. 5/3: Ma. 19/3: Ma. 2/4: To. 12/4: Formål, intro, grundlæggende Videre, sprogkonstruktioner

Læs mere

Klasse 1.4 Michael Jokil 03-05-2010

Klasse 1.4 Michael Jokil 03-05-2010 HTX I ROSKILDE Afsluttende opgave Kommunikation og IT Klasse 1.4 Michael Jokil 03-05-2010 Indholdsfortegnelse Indledning... 3 Formål... 3 Planlægning... 4 Kommunikationsplan... 4 Kanylemodellen... 4 Teknisk

Læs mere

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved.

PROC TRANSPOSE. SAS-tabellen - hensigtsmæssig lagring af data. Copyright 2011 SAS Institute Inc. All rights reserved. PROC TRANSPOSE SAS-tabellen - hensigtsmæssig lagring af data Copyright 2011 SAS Institute Inc. All rights reserved. Transponerede tabeller Brede eller smalle? Hvad: Brede tabeller har mange kolonner med

Læs mere

Newtons afkølingslov

Newtons afkølingslov Newtons afkølingslov miniprojekt i emnet differentialligninger Teoretisk del Vi skal studere, hvordan temperaturen i en kop kaffe aftager med tiden. Lad T ( t ) betegne temperaturen i kaffen til tiden

Læs mere

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13%

16/04/12 50% 50% Waveform Chart Waveform Graph XY Graph Indicator Graph 33% 17% 88% 13% Samuel Alberg Thrysøe, PhD, PostDoc, Kontakt info: Email: sat@iha.dk, Tlf: +45 25533552 2 4. 5 Waveform Chart Waveform Graph XY Graph Indicator Graph 4. 33% Waveform Chart Waveform Graph XY Graph Indicator

Læs mere

PDF-filer Vejledning til tilgængelige PDF-filer

PDF-filer Vejledning til tilgængelige PDF-filer PDF-filer Vejledning til tilgængelige PDF-filer OBS I dette dokument får du en vejledning til, hvordan du kan rette nogle af de mest gængse tilgængelighedsproblemer. For at rette dem kræver det, at du

Læs mere

Introduktion til SPSS

Introduktion til SPSS Introduktion til SPSS Øvelserne på dette statistikkursus skal gennemføres ved hjælp af det såkaldte SPSS program. Det er erfaringsmæssigt sådan, at man i forbindelse af øvelserne på statistikkurser bruger

Læs mere

Netværk & elektronik

Netværk & elektronik Netværk & elektronik Oversigt Ethernet og IP teori Montering af Siteplayer modul Siteplayer teori Siteplayer forbindelse HTML Router (port forwarding!) Projekter Lkaa Mercantec 2009 1 Ethernet På Mars

Læs mere

Peter Kellberg. Rundt om Danmarks Statistiks makroer. Design, Standardisering, Teknik

Peter Kellberg. Rundt om Danmarks Statistiks makroer. Design, Standardisering, Teknik Peter Kellberg Rundt om Danmarks Statistiks makroer Design, Standardisering, Teknik SAS Forum 2009 Ét makrobibliotek ca 50 makroer, vi selv har lavet mange andre fx CLAN Autocall makroer en makro er et

Læs mere

Varenr.: 553925 90 højre 553926 90 venstre 554027 90º højre med coating 554028 90º venstre med coating

Varenr.: 553925 90 højre 553926 90 venstre 554027 90º højre med coating 554028 90º venstre med coating DK GH Skiftespor Varenr.: 55395 90 højre 55396 90 venstre 55407 90º højre med coating 55408 90º venstre med coating 553991 60º højre 553995 60º venstre 551058 60º højre med coating 551059 60º venstre med

Læs mere

Citrix CSP og Certificate Store Provider

Citrix CSP og Certificate Store Provider Project Name Document Title TDC Citrix Citrix og Certificate Store Provider Version Number 1.0 Status Release Author jkj Date 5-10-2006 Trademarks All brand names and product names are trademarks or registered

Læs mere

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.

ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet. ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen stec@teknologisk.dk www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.

Læs mere

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup

SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere