microsoft / pict

Pairwise Independent Combinatorial Tool
www.pairwise.org
Other
1.27k stars 289 forks source link

Endless calculation with following model #13

Closed UVo42 closed 7 years ago

UVo42 commented 8 years ago

Using the following model PICT runs in an endless loop.

Only if I comment the last block the model runs through but the result is not correct. I’m using pict.exe with a version of November 10th 2005. Currently I have not the right infrastructure for compiling and debugging the code from here. Could you please help me how to get around this problem?

Model

Eingangskanal: EVA_Anlageberatung, EVA_Order, EVA_Sonderweg, EVA_Sparplan, EVA_Neuemission, EVA_Direkteinstieg, HOST_T19000, HOST_T19001, HOST_T19901, HOST_T19750, HOST_T28900, Onlinebanking_PC, Onlinebanking_MSB, Onlinebanking_Neuemission_PC, Onlinebanking_Neuemission_MSB, Onlinebanking_Tablet_PC, Infobroker, commerzbank_de_pib Finanzinstrument: Aktie, Unstrukturierte_Anleihe, strukturierte_Anleihe, Inv._Fonds, OIF, Zertifikat, Optionsschein, Xetra_Gold_ETC, EMISID Produktzyklus: Neuemission_Information, Neuemission_offen, Neuemission_geschlossen, Neuemission_abgerechnet, Sekundaermarkt, n/a Dienstleistungsart: Anlageberatung, beratungsfreiesGeschaeft, n/a Orderart: Kauf(Beratungsdatumgueltig), Kauf(ohne_Beratungsdatum), Verkauf, aenderung, Streichung, Storno, Berichtigungsauftrag, n/a Initiator: Kunde, Bank, n/a Auftragserteilung: telefonisch, persoenlich, schriftlich, Haustuergeschaeft, n/a Bereitstellungsdokumente: Beratungsprotokoll_Kunde, Beratungsprotokoll_Interessent, Beratungsprotokoll_Potenzial, Nachtraeglicher_KID-Versand, n/a UDAL-Status: Normalbetrieb, Back_up-Betrieb, PRIIP,_ohne_KID, WKN_nicht_vorhanden, WKN_inaktiv/geloescht, defektes_Dokument, Virus, non-PRIIP_aufBlackliste, PRIIP_auf_Blackliste, UDAL_nicht_verfuegbar, n/a Abruf_Infoblaetter: WA_von_FWW, PIB_von_DOTi, PIB_von_C&M-FIC, PIB_von_PC_PM, KID_von_PC_PM, KID_von_DOTi, KID_von_externem_Hersteller

IF [Eingangskanal] = "HOSTT19901" THEN [Orderart] <> "Kauf(Beratungsdatum_gueltig)" AND [Produktzyklus] <> "Neuemission_offen" AND [Produktzyklus] <> "n/a" AND [Dienstleistungsart] <> "n/a" AND [Orderart] <> "n/a" AND [Initiator] = "n/a" AND [Auftragserteilung] = "n/a" AND [Bereitstellungsdokumente]= "n/a" AND [UDAL-Status] = "n/a";

IF [Eingangskanal] in {"HOST_T19000", "HOST_T19001", "HOST_T19750", "HOST_T28900"} THEN [Produktzyklus] <> "Neuemission_Information" AND [Produktzyklus] <> "Neuemission_offen" AND [Produktzyklus] <> "n/a" AND [Dienstleistungsart] <> "n/a" AND [Orderart] <> "n/a" AND [Initiator] = "n/a" AND [Auftragserteilung] = "n/a" AND [Bereitstellungsdokumente]= "n/a" AND [UDAL-Status] = "n/a";

IF [Eingangskanal] like "EVA_*" THEN [Initiator] <> "n/a" AND [Produktzyklus] <> "n/a" AND [Dienstleistungsart] <> "n/a" AND [Orderart] <> "n/a" AND [Auftragserteilung] <> "n/a" AND [Bereitstellungsdokumente] <> "n/a" AND [UDAL-Status] <> "n/a";

IF [Eingangskanal] IN {"Onlinebanking_PC", "Onlinebanking_MSB", "Onlinebanking_Tablet_PC"} THEN [Produktzyklus] <> "Neuemission_Information" AND [Produktzyklus] <> "Neuemission_offen" AND [Produktzyklus] <> "n/a" AND [Dienstleistungsart] <> "n/a" AND [Orderart] <> "n/a";

IF [Eingangskanal] like "Onlinebanking*" THEN [Dienstleistungsart]="beratungsfreiesGeschaeft" AND [Produktzyklus] <> "n/a" AND [Dienstleistungsart] <> "n/a" AND [Orderart] <> "Storno" AND [Orderart] <> "Berichtigungsauftrag" AND [Orderart] <> "Kauf(Beratungsdatum_gueltig)" AND [Orderart] <> "n/a" AND [Initiator] = "n/a" AND [Auftragserteilung] = "n/a" AND [Bereitstellungsdokumente] = "n/a" AND [UDAL-Status] <>"Back_up-Betrieb";

IF [Eingangskanal] IN {"EVA_Sonderweg", "EVA_Sparplan", "EVA_Direkteinstieg", "EVA Order"} THEN [Produktzyklus] <>"Neuemission_Information" AND [Produktzyklus] <>"Neuemission_offen" AND [Produktzyklus] <>"n/a" AND [Dienstleistungsart] <>"n/a" AND [Orderart] <>"n/a";

IF [Eingangskanal] IN {"EVA_Sonderweg", "EVA_Sparplan", "EVADirekteinstieg"} THEN [Orderart] <>"Storno" AND [Orderart] <>"Berichtigungsauftrag" AND [Orderart] <>"Kauf(Beratungsdatum_gueltig)" AND [Produktzyklus] <>"n/a" AND [Dienstleistungsart] <>"n/a" AND [Orderart] <>"n/a";

IF [Eingangskanal] in {"EVA_Anlageberatung", "EVA_Neuemission", "EVA_Order"} THEN [Orderart] <>"Storno" AND [Orderart] <>"Berichtigungsauftrag" AND [Produktzyklus] <>"n/a" AND [Dienstleistungsart] <>"n/a" AND [Orderart] <>"n/a";

IF [Eingangskanal] IN {"Infobroker", "commerzbank_de_pib"} THEN [Finanzinstrument] <> "EMISID" AND [Produktzyklus] = "n/a" AND [Dienstleistungsart] = "n/a" AND [Orderart] = "n/a" AND [Initiator] = "n/a" AND [Auftragserteilung] = "n/a" AND [Bereitstellungsdokumente]= "n/a" AND [UDAL-Status] <> "Back_up-Betrieb";

jaccz commented 7 years ago

Unfortunately, this is by design. There's a part of the PICT algorithm that takes exponential time. Under normal circumstances--when models are less complex--it takes small enough amount of time for no one to notice but when the complexity of constraints increases, it becomes noticeable. It is not an endless loop, the work is happening it is just taking a really long time.

The best suggestion I can offer is to simplify the model somehow. That is still maintain its completeness and correctness but maybe try to express fewer features in a single model and create another one to take care of those.