Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

ongsaotowa

Thành viên mới
Tham gia
20/2/15
Bài viết
12
Được thích
0
Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước.

Chào các bác GPE, em cần nhờ các bác hỗ trợ giúp em ca này. Khi e nhập số Tổng tiền thì sẽ tự động nhảy mặt hàng và số lượng cho đúng với số tổng em vừa nhập. Ca này bác nào làm được báo giá để em hậu tạ luôn nhé.
 

File đính kèm

Gợi ý cho các bạn vào giúp:

1) Đây là bài toán ngược, dạng Solver. Nhưng phức tạp và có nhiều biến
2) Đề xuất dùng VBA
3) Dạng combination, gồm nhiều biến kết hợp:
Ví dụ: cho tổng số tiền là 5.000.000, tìm mặt hàng và SL của nó sao cho TS tiền=5.000.000
Số lương: loop từ 1 đến vài trăm
Đơn giá: loop lần lượt qua hơn 800 mặt hàng (có thể là 1 hay 2, hay 3 mặt hàng, tối đa là 10 mặt hàng, khi đủ 5.000.000 là ngưng và xuất kết quả)
=SL1*ĐG1 + SL2*ĐG2 + (... + SL10*ĐG10) = 5.000.000

Nhất thời mình đang chưa tập trung và chưa nghĩ ra code, bạn nào vào giúp nhé.
 
Gợi ý cho các bạn vào giúp:

1) Đây là bài toán ngược, dạng Solver. Nhưng phức tạp và có nhiều biến
2) Đề xuất dùng VBA
3) Dạng combination, gồm nhiều biến kết hợp:
Ví dụ: cho tổng số tiền là 5.000.000, tìm mặt hàng và SL của nó sao cho TS tiền=5.000.000
Số lương: loop từ 1 đến vài trăm
Đơn giá: loop lần lượt qua hơn 800 mặt hàng (có thể là 1 hay 2, hay 3 mặt hàng, tối đa là 10 mặt hàng, khi đủ 5.000.000 là ngưng và xuất kết quả)
=SL1*ĐG1 + SL2*ĐG2 + (... + SL10*ĐG10) = 5.000.000

Nhất thời mình đang chưa tập trung và chưa nghĩ ra code, bạn nào vào giúp nhé.
Cảm ơn bác rất nhiều. Tiếp tục chờ cao nhân vào hỗ trợ
 
...
3) Dạng combination, gồm nhiều biến kết hợp:
....
Đây không phải là combination.
Bài toán này có tên chính thức là bài toán ba lô (knapsack problem). Không thuộc loại dễ. Thường thì người ta giải bằng giải thuật vét cạn - sức trâu (brute force), không khó nhưng rất dài.
 
Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước.

Chào các bác GPE, em cần nhờ các bác hỗ trợ giúp em ca này. Khi e nhập số Tổng tiền thì sẽ tự động nhảy mặt hàng và số lượng cho đúng với số tổng em vừa nhập. Ca này bác nào làm được báo giá để em hậu tạ luôn nhé.
Hình như sheet BBG bị khóa thì phải.
 
dạ không ràng buộc gì ạ
Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước.

Chào các bác GPE, em cần nhờ các bác hỗ trợ giúp em ca này. Khi e nhập số Tổng tiền thì sẽ tự động nhảy mặt hàng và số lượng cho đúng với số tổng em vừa nhập. Ca này bác nào làm được báo giá để em hậu tạ luôn nhé.
Như bạn nói: "Số lượng không ràng buộc gì" thì ca này dễ như ăn bánh vậy.

Hậu tạ thế nào bạn? để còn đầu tư thời gian
 
Vào menu Data, sẽ thấy biểu tượng solver. Ấn vào rồi chọn ok là sẽ thấy kết quả
dạ đã làm được, nhưng còn phần tự nhảy đổi sản phẩm khác nữa thì sao ạ. Đây là sản phẩm cố định rồi đó bác.
vd khi e nhập 23.402.000 sẽ tự động nhảy các sản phẩm khác nhau và số lượng khác nhau sao cho khớp với số em vừa nhập
Bài đã được tự động gộp:

Vào menu Data, sẽ thấy biểu tượng solver. Ấn vào rồi chọn ok là sẽ thấy kết quả
Bác thử nhập số tiền vào mục tổng tiền ở sheet BBG nha, e cần làm giống như vậy á
 
dạ đã làm được, nhưng còn phần tự nhảy đổi sản phẩm khác nữa thì sao ạ. Đây là sản phẩm cố định rồi đó bác.
vd khi e nhập 23.402.000 sẽ tự động nhảy các sản phẩm khác nhau và số lượng khác nhau sao cho khớp với số em vừa nhập
Bài đã được tự động gộp:


Bác thử nhập số tiền vào mục tổng tiền ở sheet BBG nha, e cần làm giống như vậy á
Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước.

Chào các bác GPE, em cần nhờ các bác hỗ trợ giúp em ca này. Khi e nhập số Tổng tiền thì sẽ tự động nhảy mặt hàng và số lượng cho đúng với số tổng em vừa nhập. Ca này bác nào làm được báo giá để em hậu tạ luôn nhé.
- Tổng tiền là đúng nhé bạn.
- Số lượng như bài trên nói: Không ràng buộc gì nên chấp nhận được nhé bạn.
- Tên mặt hàng: Trong bài 1 không yêu cầu thay đổi nhé bạn. Không có chữ "đổi" nào cả

Vậy phải hậu tạ đi chứ bạn!!!
---

Cái sheet BBG mở protectsheet nhé bạn, quên pass thì không làm được nhé bạn.
 
- Tổng tiền là đúng nhé bạn.
- Số lượng như bài trên nói: Không ràng buộc gì nên chấp nhận được nhé bạn.
- Tên mặt hàng: Trong bài 1 không yêu cầu thay đổi nhé bạn. Không có chữ "đổi" nào cả

Vậy phải hậu tạ đi chứ bạn!!!
---

Cái sheet BBG mở protectsheet nhé bạn, quên pass thì không làm được nhé bạn.
bác ơi, e có nói rõ khi nhập tổng tiền thì tự động nhảy mặt hàng và số lượng sao cho đúng với số tổng em vừa nhập. Ở đây bác đang cố định sản phẩm và thay đổi số lượng.
Bài đã được tự động gộp:

- Tổng tiền là đúng nhé bạn.
- Số lượng như bài trên nói: Không ràng buộc gì nên chấp nhận được nhé bạn.
- Tên mặt hàng: Trong bài 1 không yêu cầu thay đổi nhé bạn. Không có chữ "đổi" nào cả

Vậy phải hậu tạ đi chứ bạn!!!
---

Cái sheet BBG mở protectsheet nhé bạn, quên pass thì không làm được nhé bạn
bác ơi, e có nói rõ khi nhập tổng tiền thì tự động nhảy mặt hàng và số lượng sao cho đúng với số tổng em vừa nhập. Ở đây bác đang cố định sản phẩm và thay đổi số lượng.
sheet BBG khóa nhưng vẫn nhập được vào ô tổng tiền đó bác
 
bác ơi, e có nói rõ khi nhập tổng tiền thì tự động nhảy mặt hàng và số lượng sao cho đúng với số tổng em vừa nhập. Ở đây bác đang cố định sản phẩm và thay đổi số lượng.
Vậy các mặt hàng từ 1 đến 10 là không hợp lệ?
 
Vậy các mặt hàng từ 1 đến 10 là không hợp lệ?
vấn đề ở đây không phải là hợp lệ hay không. vấn đề là khi e nhập 1 số bất kì thì phải tự động nhảy ra 10 sản phẩm và số lượng cho đúng với số em vừa nhập. Bác có thể tham khảo ở sheet BBG. Khi nhập tổng tiền sẽ tự động nhảy sản phẩm và số lượng trong sheet dữ liệu. Và tất cả số trong hóa đơn đều phải hợp lý (vd trong sheet BBG chưa hợp lý ở đây là số lượng đang bị lẻ). Em nói rõ luôn là sẽ hậu tạ ở đây cho bác nào hỗ trợ e hoàn thành được file theo yêu cầu cuả em chứ k phải em đưa đề bài cho các bác giải rồi bắt bẻ câu chữ.
 
vấn đề ở đây không phải là hợp lệ hay không. vấn đề là khi e nhập 1 số bất kì thì phải tự động nhảy ra 10 sản phẩm và số lượng cho đúng với số em vừa nhập. Bác có thể tham khảo ở sheet BBG. Khi nhập tổng tiền sẽ tự động nhảy sản phẩm và số lượng trong sheet dữ liệu. Và tất cả số trong hóa đơn đều phải hợp lý (vd trong sheet BBG chưa hợp lý ở đây là số lượng đang bị lẻ). Em nói rõ luôn là sẽ hậu tạ ở đây cho bác nào hỗ trợ e hoàn thành được file theo yêu cầu cuả em chứ k phải em đưa đề bài cho các bác giải rồi bắt bẻ câu chữ.
Chẳng ai mất công bắt bẻ câu chữ cho mệt.
Đầu bài thế nào thì giải như vậy. Ra kết quả là đạt. Không ra kết quả là không đạt
Chọn từ tối đa 10 mặt hàng và số lượng sao cho tổng số thành tiền bằng 1 số cho trước.

Chào các bác GPE, em cần nhờ các bác hỗ trợ giúp em ca này. Khi e nhập số Tổng tiền thì sẽ tự động nhảy mặt hàng và số lượng cho đúng với số tổng em vừa nhập. Ca này bác nào làm được báo giá để em hậu tạ luôn nhé.

File trên là đạt yêu cầu bài 1 rồi bạn!

---
Chỗ như dưới là ràng buộc mới à bạn?
vd trong sheet BBG chưa hợp lý ở đây là số lượng đang bị lẻ)
 
Chẳng ai mất công bắt bẻ câu chữ cho mệt.
Đầu bài thế nào thì giải như vậy. Ra kết quả là đạt. Không ra kết quả là không đạt


File trên là đạt yêu cầu bài 1 rồi bạn!

---
Chỗ như dưới là ràng buộc mới à bạn?
Bác là cố tình không hiểu hay như nào đấy???
E đã nói rõ yêu cầu rồi mà cứ vin vào cái title nhỉ :)))
 
Theo ý tớ thì tùy tâm thôi.

Dù sao cũng là 1 cách giải. Chứ số lẻ như BBG thì dễ hơn nhiều. Mua chai, lọ, túi mà số lượng toàn lẻ x.xxx thì ép siêu thị quá đáng.
 
Lần chỉnh sửa cuối:
Bác là cố tình không hiểu hay như nào đấy???
E đã nói rõ yêu cầu rồi mà cứ vin vào cái title nhỉ :)))
Nhập số vào F1 sheet3 rồi chạy solver.
Đây là file chỉ dùng để test mô hình nên kết quả có thể có sai lệch nhỏ.

Nếu dùng hoàn toàn VBA thì sẽ phải viết lại
 

File đính kèm

Á đù, đã hoàn thành giao kèo. Chúc mừng đôi bên hạnh phúc và vui vẻ.

Nếu khống chế thêm SL nữa thì sẽ đẹp hơn.

1698375942551.png

Bo nút khống chế khối lượng là ...tr nữa nhé. --=0 --=0 --=0
 
Sử dụng Solver thì phải biết 2 chuyện:
1. Cần phải đặt giới hạn, chạy thử đủ n lượt mà khong ra thì cho phép nó "chịu thua".
2. Đôi khi cần phải đoán sơ qua giải đáp gần đúng, để cho nó bắt đầu từ đấy.
 
Công nhận bài này khó.
Dùng Solver trong VBA thì ra kết quả, nhưng xử lý quá lâu.
Mình đang loay hoay dùng thuật toán backtracking (dạng đệ quy), (dùng sub chính gọi hàm function đệ quy...) mà vẫn bị vướng về tốc độ xủ lý...
 
Bài này sử dụng solver hợp lý có lẽ thời gian ra kết quả chỉ tính bằng giây. Có cái là thấy chủ thớt đưa file lên mà vẫn để protectsheet có vẻ là thiếu tôn trọng nên mới làm như vậy chứ không phải vì 1 triệu vnđ.
 
Chà, cái vụ này mình cũng hóng, giống như kiểu chọn số Vietlot sao cho trúng giải Jackpot :D
 
Bài này về mặt solver thì giải quyết đáp ứng của bài 1.

Tuy nhiên, nếu đi sâu đi sát nữa thì ý bài 1 là chọn con số tổng, rồi mới mò vật liệu, số lượng, đơn giá để đạt được yêu cầu đó. Tình huống này sẽ phải cực kỳ ít nghiệm (bác bebo đang theo hướng này thì phải). Và yêu cầu là đáp án phải lệch 0đ (hóa đơn đòi hỏi cao gê).

Solver bài này cũng may là nhiều tổ hợp nghiệm thỏa mãn, chứ không phải tìm mã hàng n lần rồi mới solver.

Tuy nhiên, tác giả không nên viện vào ý này mà trốn tránh giải thưởng. Nếu trao thì trao, không thì cứ im lặng thôi.

Về khóa sheet như Cháo Quẩy thì không nên trách tác giả, vì nó chả có ý nghĩa gì khi mà chai, lọ, túi mà mua lẻ tè le, khả năng protect là tác giả không có password thật đâu.

_)(#; _)(#; _)(#;
 
Giống cái mốc xì. Hai cái là một trời một vực. Về học lại Toán ứng dụng đi.
Ố ồ, sao lại sân si thế nhỉ, chỉ là cách nhìn nhận để có thể có thêm phương pháp và quan điểm nhằm giải quyết. Mình mù tịt toán ứng dụng, bạn có mở lớp không để mình tham khảo nào?
 
...

Về khóa sheet như Cháo Quẩy thì không nên trách tác giả, vì nó chả có ý nghĩa gì khi mà chai, lọ, túi mà mua lẻ tè le, khả năng protect là tác giả không có password thật đâu.

_)(#; _)(#; _)(#;
Việc protectsheet tùy quan điểm từng người thôi bạn. Xét về dữ liệu đầu vào có lẽ là không có vấn đề gì. Nhưng đánh giá về thái độ trao đổi thông tin thì có lẽ là có đấy bạn
 
Trên máy tôi code do tôi viết chạy hết <2s (nhưng tiền thì chỉ gần đúng (thường là thừa từ khoảng <20k, và cho rất nhiều phương án.
 

File đính kèm

  • Screenshot (116).png
    Screenshot (116).png
    166.4 KB · Đọc: 11
  • Screenshot (117).png
    Screenshot (117).png
    155 KB · Đọc: 11
Việc protectsheet tùy quan điểm từng người thôi bạn. Xét về dữ liệu đầu vào có lẽ là không có vấn đề gì. Nhưng đánh giá về thái độ trao đổi thông tin thì có lẽ là có đấy bạn
Khi nào có tin vui báo anh em chúc mừng nhé.

Trên máy tôi code do tôi viết chạy hết <2s (nhưng tiền thì chỉ gần đúng (thường là thừa từ khoảng <20k, và cho rất nhiều phương án.
Bác để số lẻ đến "đồng" thế kia thì sao về 0 được? Nhưng suất có hạn và đang bị treo.
_)(#;_)(#;_)(#;
 
Bác để số lẻ đến "đồng" thế kia thì sao về 0 được? Nhưng suất có hạn và đang bị treo.
_)(#;_)(#;_)(#;
Tôi biết mình không có cửa để mà ganh đua, với lại tôi cũng không ham hố sổ số hay vietlot gì.
Cũng là làm bài cho vui thôi. Coi đó là 1 bài tập để mình vượt qua. Nhưng so với yêu cầu của đề thì trượt rồi.
 
Tôi biết mình không có cửa để mà ganh đua, với lại tôi cũng không ham hố sổ số hay vietlot gì.
Cũng là làm bài cho vui thôi. Coi đó là 1 bài tập để mình vượt qua. Nhưng so với yêu cầu của đề thì trượt rồi.
Sao trượt nhỉ, nếu bác bỏ 2 số đuôi thành 00 thì chắc phải ra kết quả chứ? Đảm bảo lệch 0đ luôn.
1698419039305.png
 
Sao trượt nhỉ, nếu bác bỏ 2 số đuôi thành 00 thì chắc phải ra kết quả chứ? Đảm bảo lệch 0đ luôn.
View attachment 296140
Bỏ số đuôi cũng không chẵn được (ví dụ 3000000, 5000000). Tất nhiên là cũng có phương án vừa vặn, nhưng qua nhiều lần thử thì số vừa vặn ấy ít lắm, chủ yếu là vẫn còn dư (dao dộng hàng trăm đến <20000đ). Cho khoe tý là Tôi viết cả 1 code lấy chẵn bằng số tiền cho trước luôn nhưng nó liệt kê lúc thì dưới 10 mặt hàng lúc thì trên 10 mặt hàng.
 
Nhìn số lượng bị khống chế kiểu này thì nó giả trân quá.
Tôi nhớ có vụ làm phương án kinh doanh để... mục đích abc gì đó nhưng số lượng ngẫu nhiên + mặt hàng ngẫu nhiên, tổng doanh thu trong khoảng abc nào đó nhưng không phải ra kết quả đều 500 đơn vị như vậy.
 
Bỏ số đuôi cũng không chẵn được (ví dụ 3000000, 5000000). Tất nhiên là cũng có phương án vừa vặn, nhưng qua nhiều lần thử thì số vừa vặn ấy ít lắm, chủ yếu là vẫn còn dư (dao dộng hàng trăm đến <20000đ). Cho khoe tý là Tôi viết cả 1 code lấy chẵn bằng số tiền cho trước luôn nhưng nó liệt kê lúc thì dưới 10 mặt hàng lúc thì trên 10 mặt hàng.
Em thấy thay vật liệu nó có đáp án liên tục. Chắc bác chỉnh tí là được.
Hehe, nếu không khống chế thì mua 1 vật liệu 8000 cái, còn 9 cái kia mua 1,2,3 cái thì nó ảo ma canada luôn bác.
Nếu muốn thì tăng số 500 lên chắc sẽ thật hơn.

PS: tiếc là tác giả không quay lại đón nhận phương án khác. --=0

--=0--=0
 
Em thấy thay vật liệu nó có đáp án liên tục. Chắc bác chỉnh tí là được.

Hehe, nếu không khống chế thì mua 1 vật liệu 8000 cái, còn 9 cái kia mua 1,2,3 cái thì nó ảo ma canada luôn bác.
Nếu muốn thì tăng số 500 lên chắc sẽ thật hơn.

PS: tiếc là tác giả không quay lại đón nhận phương án khác. --=0

--=0--=0
Về số lượng: có tăng 500+ thì cũng không "thật" được đâu
 

Bài viết mới nhất

Back
Top Bottom