
โป๊กเกอร์
เลือกชิปชิปโป๊กเกอร์อย่างเหมาะสมสำหรับเกมเงินสดโดยใช้การเพิ่มประสิทธิภาพแบบไม่เชิงเส้น
ลองนึกภาพการเป็นเจ้าภาพเกมโป๊กเกอร์ขนาดเล็ก คุณรู้ไหมว่าจะมีเพื่อนกี่คนที่คุณเข้าร่วมชิปกี่ตัวและซื้อเข้าคุณเลือกชิปนิกายชิปได้อย่างไร?
หากไม่มีชิปโป๊กเกอร์การเลือกนิกายชิปเป็นคู่มือและข้อผิดพลาดได้ง่าย ก่อนอื่นคุณพยายามเลือกค่าที่แบ่งกันและจำได้ง่าย (อีกวิธีหนึ่งคือการดิ้นรนเพื่อระลึกถึงค่านิยมจากครั้งสุดท้ายที่คุณเล่น) คุณพยายามหาวิธีที่จะทำให้ค่าที่เลือกรวมกับการซื้อจากนั้นคุณย้อนกลับไปเมื่อใดก็ตามที่มีชิปไม่เพียงพอสำหรับทุกคนหรือเมื่อมีชิปเหลืออยู่มากเกินไป ในที่สุดคุณก็ชำระการจัดสรรชิปที่ไม่ดีเพื่อให้คุณสามารถเริ่มเล่นได้
ในทางกลับกันชิปโป๊กเกอร์การเลือกนิกายชิปนั้นง่ายและรวดเร็ว ป้อนจำนวนผู้เล่นซื้อผ้าม่านและจำนวนชิป หลังจากรอสักครู่เพื่อผลลัพธ์ที่ดีที่สุดทางคณิตศาสตร์คุณสามารถบันทึกไว้ในครั้งต่อไปหรือแบ่งปันกับผู้อื่น หากคุณต้องการแก้ไขผลลัพธ์ให้ปรับ "ตัวเลือกขั้นสูง" และนิกายชิปจะถูกคำนวณใหม่ตามลำดับ
Poker Chipper ใช้การเขียนโปรแกรมแบบไม่เชิงเส้นผสม (MINLP) ซึ่งเป็นรูปแบบของการปรับให้เหมาะสมแบบไม่ได้รับการปรับให้เหมาะสมเพื่อเลือกชิปชิปโป๊กเกอร์ที่เหมาะสมที่สุด
การเพิ่มประสิทธิภาพจะดำเนินการโดยใช้ "ตัวแก้" - ในกรณีนี้ Scip อินพุตบางส่วนไปยังชิพโป๊กเกอร์ถูกแปลเป็นข้อ จำกัด ของตัวแก้ปัญหาซึ่งส่งผลกระทบต่อสิ่งที่ยอมรับได้ อินพุตอื่น ๆ มีอิทธิพลต่อฟังก์ชั่นวัตถุประสงค์ของตัวแก้ปัญหาซึ่งมีผลต่อวิธีการประเมินการจัดอันดับของผู้สมัครจัดอันดับและเลือก ในส่วนต่อประสานผู้ใช้อินพุตที่มีผลต่อข้อ จำกัด และอินพุตที่มีผลต่อฟังก์ชั่นวัตถุประสงค์ถูกอธิบายว่ามีอิทธิพลต่อ "ข้อกำหนด" และ "คะแนน" ตามลำดับของโซลูชันของผู้สมัคร
Poker Chipper เป็นเว็บแอปพลิเคชันแบบคงที่อย่างสมบูรณ์ กล่าวอีกนัยหนึ่งการประมวลผลทั้งหมดที่เกี่ยวข้องในการดำเนินการเพิ่มประสิทธิภาพเกิดขึ้นฝั่งไคลเอ็นต์-ทั้งหมดในเบราว์เซอร์ของผู้ใช้ Scip Solver ได้รับการออกแบบมาเพื่อทำงานโดยธรรมชาติดังนั้นจึงรวมถึงการรวมตัวกันของชิพชิพสำหรับเบราว์เซอร์โดยรวบรวม Scip ไปยัง WebAssembly (WASM) ด้วย Emscripten
ลิงค์ด้านล่างแสดงอยู่ในลำดับที่ควรอ่านรหัสเพื่อทำความเข้าใจแอปพลิเคชันจากระดับสูงสุดถึงต่ำสุด
src/App.svelte แอปพลิเคชันระดับสูงหลักsrc/*.svelte - ส่วนประกอบ UIsrc/solve.js - แปลงอินพุตผู้ใช้เป็นรุ่น MINLP และแก้ปัญหาโดยใช้ WASM SCIPsrc/solveWorker.js -Web Worker เพื่อเรียกใช้ Solver ในเธรดที่ไม่ปิดกั้นpublic/serviceWorker.js - พนักงานบริการสำหรับการแคชและฟังก์ชั่นออฟไลน์public/* - PWA Manifest, Global Stylesheet, Favicons ฯลฯexperiments/* - การสำรวจแนวคิดเริ่มต้นใน Python (ทั้ง Z3 และภายหลัง Scip) และ Dockerfile สำหรับการรวบรวม scip ด้วย emscriptensrc/compiled/* - Scip รวบรวมเป็น WASM ผ่าน Emscripten รวมถึงไฟล์สนับสนุนที่เกี่ยวข้องในแผนภาพด้านล่างลูกศรที่มีป้ายกำกับแสดงถึงคำขอดึงข้อมูลแบบอะซิงโครนัสและการส่งข้อความ
ผังงาน LR
A [svelte front end] -> | แก้คำขอ | B ["ผู้ทำงานบนเว็บ
(ด้ายที่ไม่ปิดกั้น) "]
B -> | โซลูชั่น | อัน
A <-> | สินทรัพย์คงที่ | C [พนักงานบริการ]
B <-> | สินทรัพย์คงที่ Solver | C
C -> | Cache | C
C <-> | สินทรัพย์คงที่ | D [เว็บเซิร์ฟเวอร์]
ชิปโป๊กเกอร์ได้รับการดูแลอย่างแข็งขัน หากไม่มีการกระทำล่าสุดทุกอย่างทำงานได้อย่างราบรื่น! จากการเปิดตัวครั้งแรกรหัสมีความเสถียรและไม่มีคุณสมบัติที่สำคัญและโดดเด่นที่ยังคงเพิ่มขึ้น
รายงานข้อผิดพลาดและการร้องขอคุณสมบัติผ่านปัญหา GitHub ได้รับการสนับสนุน คำขอดึงที่มีรหัสมากกว่า 20 บรรทัดไม่น่าจะถูกรวมเข้าด้วยกันอย่างรวดเร็วเว้นแต่จะเกี่ยวข้องกับการอภิปรายก่อนหน้าหรือมาพร้อมกับร้อยแก้วภาษาอังกฤษที่อธิบายได้ กล่าวอีกนัยหนึ่งการร้องขอการดึงที่มีรหัสโดยไม่มีบริบทอาจถูกรวมเข้าด้วยกันหลังจากความล่าช้ามากหรืออาจไม่ถูกรวมเข้าด้วยกัน
เนื่องจาก Poker Chipper เป็นเว็บแอปพลิเคชันแบบคงที่อย่างสมบูรณ์โดยไม่มีการประมวลผลฝั่งเซิร์ฟเวอร์ (นอกเหนือจากการให้บริการไฟล์ที่ไม่เปลี่ยนแปลง) จึงสามารถปรับขนาดได้อย่างมากและมีภาระการบำรุงรักษาต่ำมาก เช่นนี้แม้ว่าจะมีบางอย่างเกิดขึ้นกับฉันและฉันไม่สามารถทำงานต่อไปในโครงการต่อไปเวอร์ชันสาธารณะควรยังคงใช้งานได้และพร้อมใช้งานออนไลน์ตราบใดที่บัญชี GitHub ของฉันเปิดอยู่และโดเมน jstrieb.github.io ทำงานอยู่
วิธีที่ดีที่สุดในการสนับสนุนโครงการคือ:
หากคุณยืนยันในการใช้จ่ายเงินเพื่อแสดงการสนับสนุนของคุณโปรดทำในลักษณะที่เป็นประโยชน์อย่างกว้างขวาง โดยเฉพาะอย่างยิ่งการบริจาคให้กับองค์กรต่อไปนี้ช่วยฉันนอกเหนือจากประชาชนทั่วไปที่ใช้อินเทอร์เน็ต:
ชิปโป๊กเกอร์จะเป็นไปไม่ได้หากไม่มีความช่วยเหลือและข้อเสนอแนะจาก: